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.

Image password → picks where in the photo the bits are hidden.
Watermark password → decides the order the bits are written in.
  1. 1. Split into 4×4 blocksThe photo is divided into 4×4 pixel blocks. Every block becomes a candidate hiding spot.
  2. 2. DCT → shuffle by image passwordEach block is transformed to frequency space, then permuted with a seed derived from the image password.
  3. 3. Shuffle bits by watermark passwordYour message bits are shuffled with a second seed before being written into the singular values.
  4. 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.

StrongBest case

PNG round trips, mild brightness changes, and controlled resize tests.

VariableNeeds testing

JPEG export, noise, platform recompression, screenshots, and heavy filters.

RiskyFragile

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. 1. Pick a photo

    Any PNG or JPG works. Larger images can hide longer messages.

  2. 2. Type the secret

    Text, a URL, or a small logo image. Set two number passwords.

  3. 3. Save the result

    Download the watermarked PNG. It looks identical to the original.

  4. 4. Extract later

    Come back, drop the photo in, enter the same passwords — the text pops out.

Why use it

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.