
blind-watermark
Python library that hides a watermark inside an image and reads it back without the original image.
- Stars
- 14.8k
- Forks
- 1.4k
- Licence
- MIT
- Language
- Python
- Last update
- 8 months ago
- Type
- Library
What it is
blind_watermark is a Python library that embeds a text or bit-array watermark into an image using a DWT-DCT-SVD method, with a password used for the embedding. The watermark is meant to be invisible in the picture. Extraction does not require the original image, which is what the name 'blind' refers to. It also ships a command-line tool.
- Embed a text message such as an author tag into a photo from the command line using the blind_watermark command
- Embed a short bit array into an image from a Python script and extract it later
- Check whether a watermark survives rotation, cropping, resizing, or noise in your own test images
Great for
- Python developers who want to add a hidden ownership or tracing mark to images
- Creators who want to test whether a mark survives common edits like cropping or resizing
- Developers exploring classic frequency-domain watermarking methods
Not ideal for
- Anyone needing a guaranteed tamper-proof or legally strong proof of ownership, since the README only shows robustness against listed attacks and does not make security claims
- Users who need a point-and-click app, since the README documents only command-line and Python usage
- Projects needing a watermark for video or audio, since the README covers images only
How to get it
- 1
Install with a package manager
You'll need: Python 3 (README badge indicates python>=3.5)
Install from PyPI
pip install blind-watermark - 2
Run it
- Install the package with pip install blind-watermark.
- Run the bash embed command from the README on a sample image, passing a password and a text watermark.
- Run the bash extract command with the same password and the --wm_shape value to read the text back.
- 3
Get the most out of it
- Use the password_img and password_wm options so the embedding is not trivially reversible by others
- Use the processes option on WaterMark to control how many processes are used
- Read the documentation site linked in the README for the full API
- Test extraction after applying your expected edits (crop, resize, rotate) to see how robust your watermark is
Downloads
Strengths
- Extraction does not need the original image, as the README states
- Includes both a Python API and a bash command
- MIT license and an active project with a large user base
Trade-offs
- The README shows robustness examples but gives no formal security guarantees, so treat it as a demo-grade mark rather than proof
- Extraction requires knowing the watermark shape (wm_shape) and matching passwords
- Documentation in the README is partly in Chinese and links to a separate docs site
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| blind_watermark (this) | 14.8k | Library | intermediate | 8 months ago | Python developers who want to add a hidden ownership or tracing mark to images |
| thumbor | 10.5k | App | intermediate | 4 days ago | Web teams that need many image sizes generated on demand |
| supervision | 51.5k | Library | intermediate | 4 days ago | Python developers building apps on top of object detection or segmentation models |
| watermarks-remover | 25.9k | AI model / agent | intermediate | 5 days ago | Developers who use AI coding agents and want written files scrubbed of provenance metadata |
| rembg | 25.3k | App | intermediate | 4 days ago | Developers who want to add background removal to a Python program |
| filepond | 16.4k | Library | intermediate | 9 days ago | Web developers who need a polished upload widget in a site or app |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.