Steganography Tool - Hide Text in an Image, or Decode One
Encode a message into the least significant bits of a photo's pixels, or switch to Reveal to extract a message from an image someone sent you. Both directions run entirely in your browser, so the carrier image and the message stay on your device.
Standard LSB encoding. PNG or JPG in, PNG out.
How LSB steganography actually works
Every pixel in a photo stores three numbers from 0 to 255, one each for red, green and blue. Changing the last bit of one of those numbers shifts it by at most one step, say from 200 to 201. That difference is invisible to the eye and, on a photograph, sits well inside the noise the camera sensor already produced. Least Significant Bit encoding hides a message by writing its bits into those last positions, one bit per colour channel.
That gives you roughly one byte of message per three pixels. A 1920x1080 photo carries about 750KB of text, which is far more than most people need. Using a carrier much larger than your message is good practice anyway, since it leaves a smaller statistical footprint.
Two things make the difference between a message that survives and one that does not. Save the result as PNG, which the tool does automatically, because PNG is lossless and preserves those last bits exactly. And get the file to its recipient without an app re-compressing it along the way: send it as a file or document attachment rather than as a photo, and it arrives bit-for-bit intact.
Pair it with encryption
Steganography and encryption solve different halves of the same problem, and they work well together. Steganography conceals that a message exists at all; encryption protects what the message says. Encrypting your text first and hiding the resulting ciphertext gives you both properties at once, and costs nothing extra, just paste the encrypted text into the box instead of the plain text.
Used on its own, LSB encoding is a neat, fast way to tuck a note, a serial number, an attribution or a puzzle answer inside an ordinary-looking photo. It is also a genuinely good way to learn how image data is structured, which is why it turns up so often in CTF challenges and classrooms.
How to hide a message in an image
- Choose a carrier. A detailed photograph works far better than a flat graphic, logo or screenshot. Smooth areas of uniform colour make LSB changes stand out statistically; noise and texture hide them.
- Type the message. In Hide mode, enter your text. Keep it well under the carrier's capacity, about one byte per three pixels.
- Encode and download. The result is saved as PNG. Do not convert it to JPG afterwards, and do not let an app re-compress it.
- Verify before sending. Switch to Reveal, upload the file you just downloaded, and confirm the message comes back. This catches problems before the recipient does.
- Send it as a file. Attach the PNG as a document, not as a photo, so the transport does not re-encode it.
To read a message from an image someone sent you, switch to Reveal mode and upload it. For a longer walkthrough see how to hide secret messages in images. If your goal is stripping identifying data from a photo rather than adding to it, use the metadata viewer and remover.
Features
Standard LSB encoding
One bit per colour channel, so files encoded here can be read by other conventional LSB decoders, and vice versa.
Encode and decode
Hide mode writes a message in. Reveal mode pulls one out of an image you received. Both run locally.
Lossless PNG output
Output is always PNG so the hidden bits survive. JPG carriers are converted automatically on the way out.
Frequently asked questions
Is steganography the same as encryption?
They are complementary. Encryption makes a message unreadable; steganography makes it unnoticed. For both properties at once, encrypt your text first and hide the resulting ciphertext.
Why must the output be a PNG?
LSB data lives in the least significant bit of each colour channel. JPEG is lossy and discards exactly that detail when re-compressing, destroying the message. PNG is lossless so the bits survive.
Can I send a stego image over WhatsApp or Instagram?
Usually not. Most apps re-compress and resize uploaded photos, which wipes the hidden bits. Send the PNG as a file or document attachment instead of as a photo.
How much text can I hide?
About one byte per three pixels. A 1920x1080 photo holds roughly 750KB of text. Leaving plenty of headroom also makes the embedding harder to detect.
Can hidden messages be detected?
By dedicated steganalysis, yes, techniques like chi-square and RS analysis look for the statistical signature of LSB embedding. A large, detailed carrier and a short message leave the smallest footprint. Encrypting the text first keeps it protected either way.
Are my images uploaded?
No. Encoding and decoding both run on a canvas in your browser. Nothing about the carrier image or the message is transmitted, which you can confirm in your browser's Network tab.
🔎 Verify it yourself: nothing uploads
Don’t take our word for it. Open your browser’s DevTools (F12 → Network tab), then run this tool on any image. You’ll see no upload request at all — your file never leaves this tab. You can even turn off Wi‑Fi once the page has loaded and keep working. Every tool on this site works the same way — all processing happens on your device.