Steganography Studio

Hide a message inside the pixels of an image · the carrier looks ordinary · the secret rides quietly along

Hide a Message

Choose a carrier image and write the secret. The output will look almost identical to the original — the difference lives in the lowest bit of each colour channel, invisible to the eye.

📷

Drop a carrier image, or

PNG, JPEG, or WebP. The output will always be PNG (lossless).

Reveal a Message

Drop in an image suspected of carrying a message. If one is hidden in the lowest bits, it will surface here.

🔍

Drop the suspect image, or

PNG works best. JPEGs may have lost the hidden bits to compression.

The Method

Least-significant-bit encoding

Each pixel of an image stores three colour values — red, green, blue — each a number from 0 to 255. The lowest bit of each value contributes almost nothing to the visible colour: a red of 173 looks identical to a red of 172. We use those lowest bits to store our message. One pixel offers three bits; a hundred pixels offer enough room for about a dozen characters.

Why an image at all

Encryption announces itself. A wall of base-64 noise tells anyone watching that something is being hidden. A photograph of a cat does not. This is the principle of covert versus overt communication: the encrypted file says "I am a secret"; the steganographic image says "I am a cat." The eavesdropper would need to know to look.

The passphrase layer

If you set a passphrase, the message is first encrypted with AES-256-GCM (key derived from the passphrase via PBKDF2). Even if a clever observer notices that the lowest bits look unusually random and extracts them, what they get is ciphertext, not plaintext.

Limitations

Always save the carrier as PNG — JPEG re-compression destroys the hidden bits. Don't crop, resize, or filter the image after encoding. Statistical analysis of the lowest-bit plane can detect the presence of a message even if the contents remain encrypted; this is a hobby tool, not a counter-intelligence platform.