Image Steganography
Hide a secret text message inside an image using LSB steganography, then download the encoded PNG.
Drag & drop a cover image here, or click to browse
No uploads. Your files stay on your device.
Steganography hides a message; it does not encrypt it. Anyone who guesses the image carries data can read it with a decoder. Encrypt sensitive text first.
How it works
This tool hides text inside a picture with classic LSB (least significant bit) steganography. Your message is turned into UTF-8 bytes, prefixed with a 32-bit big-endian length, and those bits replace the lowest bit(s) of every red, green and blue value in the image — pixel by pixel, left to right, top to bottom. Changing the lowest bit shifts a colour by 1/255, which the eye cannot see, so the encoded picture looks identical to the original. Everything happens in your browser with the Canvas API: the image is never uploaded.
The result is always saved as PNG because PNG is lossless. Re-saving a stego image as JPEG, or letting a chat app or social network recompress it, destroys the hidden bits — send the PNG as a file attachment. Transparency is flattened onto white first, since fully opaque pixels are required for the bits to survive a round trip. Raising bits per channel multiplies the capacity but starts to show as faint banding in smooth gradients. After every change the tool decodes its own output again and reports whether the message reads back byte for byte.
Frequently asked questions
How do I hide a message inside an image?
Drop any photo on the tool, type your text in the secret message box, and the message is woven into the picture instantly. The tool shows how many bytes you have used out of the image's capacity, decodes its own output again to confirm the text reads back exactly, then 'Download PNG' saves the encoded image. Nothing is uploaded — the whole process runs in your browser with the Canvas API.
How does LSB steganography actually work?
Your message is converted to UTF-8 bytes and prefixed with a 32-bit length. Those bits then replace the least significant bit of every red, green and blue value in the image, pixel by pixel. Flipping the lowest bit moves a colour channel by 1 step out of 255, which is invisible to the eye, so the encoded picture looks identical to the original. Raising the setting to 2 or 3 bits per channel doubles or triples the capacity but can show as faint banding in smooth gradients.
Is the hidden message encrypted, and will it survive being sent?
No — steganography hides a message, it does not encrypt it. Anyone who suspects an image carries data can pull it out with a decoder, so encrypt sensitive text before hiding it. The output is always PNG because PNG is lossless: saving as JPEG, or letting a chat app or social network recompress the picture, rewrites the low bits and destroys the message. Send the PNG as a file attachment rather than as an inline photo.