Skip to content

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
Step-by-step guide: how to use blind-watermarkInstall, first run, examples, tips and FAQs

How to get it

  1. 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. 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. 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

ProjectStarsTypeLevelUpdatedBest for
blind_watermark (this)14.8kLibraryintermediate8 months agoPython developers who want to add a hidden ownership or tracing mark to images
thumbor10.5kAppintermediate4 days agoWeb teams that need many image sizes generated on demand
supervision51.5kLibraryintermediate4 days agoPython developers building apps on top of object detection or segmentation models
watermarks-remover25.9kAI model / agentintermediate5 days agoDevelopers who use AI coding agents and want written files scrubbed of provenance metadata
rembg25.3kAppintermediate4 days agoDevelopers who want to add background removal to a Python program
filepond16.4kLibraryintermediate9 days agoWeb 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.