UTILS.
100% in-browser
🕵️

Image Steganography Tool

Hide secret text inside an image using LSB steganography, or reveal a hidden message. Runs 100% in your browser, nothing is uploaded.

Drop or choose an image to hide text in

About this tool

This tool hides a secret text message inside an ordinary image and later pulls it back out, using least-significant-bit (LSB) steganography. Everything happens locally in your browser on an HTML canvas: the picture and your message never leave your device and nothing is uploaded to any server.

LSB steganography works by overwriting the least-significant bit of each color channel. The image is drawn to a canvas and its raw pixels are read; the message is converted to UTF-8 bytes and, bit by bit, those bits replace the lowest bit of the red, green and blue channels of successive pixels (the alpha/transparency channel is skipped to avoid visual artifacts). Changing only the lowest bit shifts each channel by at most 1 of 255, so the result looks identical to the eye. A 32-bit big-endian length header is written first so the decoder knows exactly how many message bytes follow. Each pixel carries 3 bits, so an image holds about floor(width x height x 3 / 8) bytes, minus the 4 header bytes.

To hide a message, pick "Hide message", choose an image, type your text and click Encode & Download to save a PNG. To recover it, switch to "Reveal message" and open a stego PNG; the hidden text is decoded automatically. The output must be PNG because it is lossless — a JPEG re-compresses the pixels and would wipe out the fragile least-significant bits, destroying the message.

Frequently asked questions

Is this secure or encrypted?
No. LSB steganography is obscurity, not encryption — it hides that a message exists but does not protect the contents. Anyone who suspects a stego image and uses the same method can read it. For real confidentiality, encrypt your text first (for example with an AES tool) and then hide the ciphertext.
Why does it export PNG and not JPEG?
The message lives in the least-significant bits of the pixels, which are lossless-only. PNG preserves every bit exactly. JPEG is lossy and re-compresses the image, changing those low bits and destroying the hidden data, so this tool always saves PNG.
How much text can I hide in one image?
Roughly floor(width x height x 3 / 8) bytes, minus 4 bytes reserved for the length header. A 1000 x 1000 image holds about 375,000 bytes. The tool shows the exact capacity when you load an image and warns you if your message is too large.
Does it work with emoji and other languages?
Yes. The message is encoded as UTF-8, so emoji, accents and non-Latin scripts round-trip exactly. Note that multi-byte characters use more of the image's capacity than plain ASCII.

More tools