Image steganography
Hide or reveal a message in an image's least-significant bits. Always exports PNG.
Runs in this tab. The file stays here.
This runs in your browser. Nothing is uploaded.
About Image steganography
Hide or reveal a text message in an image's RGB least-significant bits. Always exports PNG so the payload is not destroyed by JPEG compression.
LSB steganography tweaks the lowest bit of each red, green, and blue channel. Changes are tiny and usually invisible. A 32-bit length header tells the decoder how many payload bytes to read.
Output is forced to PNG. JPEG (and most social recompression) will scramble those bits and destroy the message — the UI says so up front. Capacity is roughly width × height × 3 bits before the header.
Optional passphrase XOR is obfuscation, not encryption. Frame the tool for puzzles, authorship watermarks, or private notes between people who both have the tool — not as a way to evade moderation.
How to use Image steganography
- 1Drop a cover image and choose Hide or Reveal.
- 2For Hide, enter a message (and optional passphrase), then download the PNG.
- 3For Reveal, drop the PNG and read the recovered message.
What it won't do
- RGB LSBs only; alpha is left alone.
- Social recompression and format conversion destroy the payload.
Common questions
Why only PNG output?
Lossy formats rewrite pixel values and wipe LSB data. PNG keeps the bits intact.
Will Instagram or Twitter preserve the message?
Usually no. Those platforms recompress uploads. Share the PNG as a file download instead.
Is the passphrase encryption?
No — basic XOR of payload bytes before embedding.
Related tools
Why this one doesn't upload your file
There is no server to upload to. This page is a static file, and the work happens in your browser using the same graphics and WebAssembly code that renders every other site you visit. Your file is read from disk into memory, processed, and handed back as a download. Once the page has loaded you can disconnect from the network entirely and it keeps working. The longer explanation