Stego PNG
Hide a file inside a PNG image using least-significant-bit steganography. Add an optional passphrase for AES-GCM encryption on top. Drop the carrier PNG back in to recover the file. Everything runs in your browser.
- Name
- —
- Size
- —
- Type
- —
- Name
- —
- Size
- —
- Capacity
- —
Capacity will appear here once a secret file is selected.
Drop a secret file to begin.
The downloaded PNG looks like the cover image — the secret bytes live in the bottom bit of each red, green, and blue channel.
- Name
- —
- Size
- —
Drop a carrier PNG to begin.
- Name
- —
- Size
- —
- Type
- —
- Mode
- —
How it works
- The browser reads the cover image into a canvas, exposing every pixel as
(R, G, B, A). - The secret file (with a small JSON name/type/size header) is optionally gzipped, then optionally AES-GCM encrypted with a key derived from your passphrase via PBKDF2 (SHA-256, 250k iterations, 16-byte salt, 12-byte IV).
- A short framing header (
CWTS1\0+ flags + length + salt/IV if encrypted) is prepended. The whole bit stream is written into the bottom bit of each red/green/blue channel, in row-major pixel order. The alpha channel is never touched, so transparency stays clean. - Capacity is
floor(width × height × 3 / 8)bytes. The download is exported as a lossless PNG so the LSBs survive intact — recompressing through JPEG, social-media uploads, or "optimisers" will destroy them. - To reveal: drop the PNG back in, the tool scrapes the LSBs, finds the magic, verifies the length, decrypts/decompresses, and gives you the original file back.
- No upload, no signup, no analytics. Pixels never leave the device.