You've hidden a message inside a PNG image. The image looks identical to the original — same picture, same colors, completely indistinguishable to the human eye. You text it to your friend via WhatsApp. They open the image, run the decoder, and get... nothing. The hidden message is gone. What happened?
Every major social media platform and messaging app does something to your images before delivering them. That processing destroys LSB steganography every single time. Understanding why tells you a lot about how these platforms work and how to actually share steganographic images when you need to.
When you upload an image to Instagram, send a photo on WhatsApp, or post on Facebook, the platform doesn't store and deliver the exact file you sent. Instead, it runs your image through a processing pipeline that typically does one or more of the following:
LSB steganography hides data in the least significant bit of each pixel's color values. If a pixel's red channel is stored as the 8-bit value 10110100, the hidden data lives in that final 0. The entire steganographic message depends on those last bits being preserved exactly.
JPEG compression does not preserve those bits. When JPEG encodes an image, it divides the image into 8×8 blocks, converts the color values to a different representation, discards high-frequency detail that human vision supposedly won't notice (which includes tiny single-pixel variations), and then reconstructs the pixel values from the compressed data. The pixel that was 10110100 might come back as 10110101 or 10110011 — the low-order bits are essentially randomized by the process. The hidden data is replaced with noise.
If you need the hidden message to survive delivery, you have a few reliable options:
PNG is the right format for LSB steganography because it's lossless — every pixel value is stored and retrieved exactly as-is. Using a JPEG as the carrier image is a bad idea regardless of platform, because JPEG may have already modified pixel values when it was first compressed. Hiding data in a JPEG that then gets JPEG-compressed again causes double damage.
If you're using a steganography tool that asks you to choose an output format, always choose PNG. The file will be larger than a JPEG, but the hidden data will be intact.
No — the compression happens to every image, not just ones with hidden data. Platforms compress images to reduce storage costs and bandwidth, not to defeat steganography. The destruction of hidden messages is a side effect, not an intentional countermeasure. That said, the effect is the same either way: a message hidden in an image that passes through Instagram's servers will not reach the other end.
Some researchers have proposed steganographic methods that are robust against JPEG compression — hiding data in the DCT coefficients that JPEG uses internally, rather than in final pixel values. These approaches are more complex and have lower capacity, but they can survive JPEG re-encoding. For casual use, the simpler answer is just to share the file directly rather than through a platform that processes images.
Create your steganographic PNG in your browser — nothing is uploaded anywhere. Save the file and share it via email or file link to keep the hidden message intact.
Open Steganography Tool