Image Steganography: Hide a Message in a Picture
Military-grade AES-256 Encryption + LSB Image Steganography.
Hide encrypted secrets inside pixels. 100% Client-Side Processing. Zero Server. Zero Leaks.
Carrier Image
Step 1Drag & Drop Image
or click to browse
PNG · JPG · WEBP · BMP
Capacity Analyzer
LiveSecret Message
Step 2AES-256 Encryption
Step 3Encode & Export
Step 4Stegano Image
Step 1Upload Stegano Image
Drop the encoded PNG here
PNG recommended for lossless decode
Decryption Password
Step 2Revealed Message
DecryptedUsage Guide
Upload Carrier Image
Drag & drop any PNG, JPG, WEBP, or BMP image. Larger images = more storage capacity for your secret. Check the live Capacity Analyzer to see exactly how many characters your image can hold.
Write Your Secret
Type any secret text — messages, passwords, API keys, coordinates, notes. The live character counter updates as you type. The tool handles Unicode, special characters, and multi-line text.
Set AES-256 Password
Choose a strong password. Your message is AES-256-CBC encrypted FIRST, then the ciphertext is embedded into pixels. Even if someone extracts the data, they cannot read it without your password.
Download Stegano PNG
Hit "Encode & Lock". The tool injects encrypted data into the Least Significant Bits of each pixel's R, G, B channels, then exports a lossless PNG. Share it like any normal image — nobody will suspect a thing.
Decode Anytime
Switch to the Decode tab. Upload the stegano PNG, enter the same password, and hit "Decode & Reveal" to instantly extract and decrypt your hidden message. All client-side. No internet needed.
Security Knowledge Base
What is LSB Steganography?
LSB (Least Significant Bit) steganography works by replacing the least important bit of each color channel value in an image's pixels. Since changing 1 bit out of 8 shifts a color value by only 1 (e.g., 200 → 201), the visual difference is completely imperceptible to the human eye. We use the R, G, and B channels of each pixel, hiding 3 bits per pixel with zero visible change.
AES-256 Dual-Layer Protection
Before any pixel manipulation occurs, your message is encrypted using AES-256-CBC via the industry-standard CryptoJS library. This means the data hidden in pixels is already ciphertext — completely unreadable without the password. Even if an attacker extracts all pixel data using the same tool, they still cannot recover your message without the correct key.
Why PNG? The Lossless Requirement
JPEG compression is lossy — it discards "unimportant" data during compression, which is exactly where steganographic data lives (LSBs). This destroys hidden messages. PNG uses lossless compression (DEFLATE), preserving every single bit perfectly. This is why Stegano Vault always exports as .png even if you upload a .jpg.
Client-Side: Your Data Never Leaves
Every single operation — image reading, encryption, pixel manipulation, and file export — happens entirely within your browser using the HTML5 Canvas API and CryptoJS. No data is transmitted to any server. No logs are kept. The tool works offline after the page loads. You can even air-gap the entire tool on a USB drive.
Capacity Formula Explained
The maximum number of characters you can encode depends directly on the image's pixel count. Formula: maxChars = Math.floor((width × height × 3) / 8) - 32. The 3 factor accounts for R, G, B channels (3 bits/pixel). The 8 divides bits into bytes. The 32-byte overhead accommodates the AES delimiter and length header we prepend to the data stream.
Steganalysis Resistance
Since we only modify the LSBs and the hidden data is encrypted (and thus appears as random noise), statistical analysis of the image's color histogram will show minimal anomalies. This makes detection by basic steganalysis tools significantly harder compared to hiding plaintext, which would create detectable patterns in the LSB plane.
Initializing secure discussion portal...