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).
Message Hidden
The carrier image now contains your message. Send it as you would any photograph.
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.
Message Recovered
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.