Image Steganography — Hide Text in a Picture

Hide a secret text message inside the pixels of an image with LSB steganography and extract it back later, as a lossless PNG. Free, no upload, in your browser.

Drop the cover image here or click to browse

The result always downloads as PNG. PNG is lossless, so the hidden bits are preserved exactly — never re-save it as JPEG or WebP, whose lossy compression rewrites the pixels and destroys the message.

🔒 Everything runs in your browser — your image and message are never uploaded.

Hide a secret message inside an image

Image Steganography tucks a text message into the least-significant bit (LSB) of an image’s red, green and blue channels. Each pixel’s colour shifts by at most one step out of 256 — invisible to the eye — yet across thousands of pixels there’s room for a whole note. Switch to Reveal, drop the carrier back in, and the hidden text is read straight back out. It’s a classic CTF and privacy trick: the picture looks completely ordinary, so nobody knows a message is there unless they go looking.

Private by design, and why PNG matters

Everything happens on a canvas inside your browser — the cover image and your secret text are never uploaded. The result always downloads as a lossless PNG, because that is the whole point: JPEG and WebP use lossy compression that rewrites the pixels and would wipe out the hidden bits. Keep and share the PNG as it is; re-saving it in a lossy format, or editing it, destroys the message. This is concealment, not encryption — anyone who suspects LSB steganography can extract the text, so encrypt sensitive content first if secrecy matters.

Frequently asked questions

How is the message hidden in the image?

Each character is turned into bits, and those bits are written into the least-significant bit of the red, green and blue value of successive fully opaque pixels — the transparency channel is left untouched, and a pixel that is even slightly see-through is skipped, because a browser canvas cannot hand those bits back unchanged. Changing only the last bit shifts each colour by at most 1 in 256, which the eye cannot see, but the exact pattern can be read back out later.

Why must I keep the result as a PNG?

PNG is lossless, so every pixel — and therefore every hidden bit — is preserved exactly. JPEG and WebP are lossy: they re-compress the image and rewrite pixel values, which erases the least-significant bits and destroys the hidden message. Never convert or re-save the carrier in a lossy format.

Is this the same as encryption?

No. Steganography hides the existence of a message; it does not scramble it. Anyone who suspects an image carries LSB-hidden data can extract it with a tool like this one. If the content is sensitive, encrypt it first and hide the ciphertext.

How long a message can I hide?

It depends on the image size: three bits fit per fully opaque pixel — one in each of the red, green and blue channels — minus a small header, so an opaque 1000×1000 image holds roughly 375,000 bytes of text. Transparent areas carry nothing, so a cut-out logo or an icon holds less, and the counter shows the real figure for the picture you dropped. A live byte counter shows how much you have used, and the tool refuses to embed a message that would not fit.