Hide secret messages inside PNG images using XOR encryption. Plus: image metadata viewer, hex analyser, and pixel inspector — all 100% client-side, zero uploads.
The image looks identical to the original. Only someone with the correct key can extract the hidden message.
Download Stego ImageLeave blank if no key was used during encoding.
Tries each key until message found. Max 50 keys.
Header bytes highlighted in purple identify the file format signature (magic bytes).
LSB of R: -- • LSB of G: -- • LSB of B: --
LSB (Least Significant Bit) steganography hides data by replacing the last bit of each pixel’s colour channel with bits from your message. The change per pixel is just ±1 in colour value — completely invisible to the human eye but recoverable by the same algorithm.
PNG is lossless — every pixel is preserved exactly as written. JPEG uses lossy compression that alters exact pixel values when saving, which would permanently destroy the embedded LSB bits and corrupt the hidden message. Always use PNG for steganography.
Without a key, basic LSB data can be extracted by steganalysis tools. Adding XOR encryption scrambles your message bytes with a derived key stream before injection — even if someone detects hidden data, the extracted bytes are unreadable high-entropy noise without the exact passphrase.
Capacity = (width × height × 3) / 8 bytes minus 8 sentinel bytes. A 1920×1080 PNG holds roughly 777 KB of hidden text. A 500×500 PNG holds about 93 KB. The capacity bar shows usage in real-time as you type.
Yes, completely offline. All operations use the browser’s Canvas API and run in JavaScript only. Your image, passphrase, and message data never leave your device. Open the browser’s Network tab and you will see zero requests during encode/decode.
The hidden data cannot be recovered without the correct key. XOR is a deterministic two-way cipher — without the exact passphrase, extracted bits resolve as random noise. Use the Brute-Force Key Tester tab to try a list of candidate passphrases if you have alternatives.