Blind Watermark Tool
Embed invisible text or an image inside any photo. The pixels look untouched — a second pass with the same passwords lifts the message back out. Everything runs in your browser; nothing is uploaded.
What do the two passwords actually do?
Neither password encrypts the image itself — the file still opens normally. They control two independent shuffles inside the hiding algorithm. To recover the message a reader needs both, exactly.
- 1. Split into 4×4 blocksThe photo is divided into 4×4 pixel blocks. Every block becomes a candidate hiding spot.
- 2. DCT → shuffle by image passwordEach block is transformed to frequency space, then permuted with a seed derived from the image password.
- 3. Shuffle bits by watermark passwordYour message bits are shuffled with a second seed before being written into the singular values.
- 4. Inverse transforms rebuild the photoThe image looks identical. Reading back requires re-doing both shuffles in reverse — with the same two passwords.
Wrong password → noise. Change either number by 1 and the extractor lands in the wrong cells or reads the bits in the wrong order — you get pure noise, never a partial message.
Robustness boundaries
Blind watermarks are useful for quiet ownership marks and internal review trails, but they are not magic DRM. Test the exact transformations your image will face before relying on it.
PNG round trips, mild brightness changes, and controlled resize tests.
JPEG export, noise, platform recompression, screenshots, and heavy filters.
Large crop, rotation, severe downscaling, or edits that remove the marked region.
Use the extraction attack simulator below to rehearse resize, crop, rotation, brightness, and noise before shipping an image.
How it works
- 1. Pick a photo
Any PNG or JPG works. Larger images can hide longer messages.
- 2. Type the secret
Text, a URL, or a small logo image. Set two number passwords.
- 3. Save the result
Download the watermarked PNG. It looks identical to the original.
- 4. Extract later
Come back, drop the photo in, enter the same passwords — the text pops out.
Why use it
- Prove ownership of photos leaked or reposted without credit.
- Trace which internal share of a leak leaked (per-recipient passwords).
- Hide short strings — order IDs, timestamps, contract numbers — inside product renders.
- Runs entirely in the browser. Nothing is uploaded, no accounts.
FAQ
What is a blind watermark?
Information hidden inside an image that a person cannot see but a program can recover — without needing the original.
Does it survive editing?
Yes. The DWT-DCT-SVD algorithm tolerates cropping, resizing, rotation, brightness, and mild noise.
Is my image uploaded?
No. Everything happens in your browser via WebAssembly.
How much text can I hide?
It depends on the image size. A 1024×1024 photo fits ~16,000 bits (~2,000 characters).
Why two passwords?
One decides where in the picture the message hides; the other scrambles the message itself. Both must be right.
Compatible with the Python blind-watermark library?
Yes. Same algorithm and parameters — images embedded in one can be extracted by the other.