Image Steganography Extractor
Extract hidden messages from steganographic image files. Auto-detect mode, bit plane analysis.
Try the demo instantly
Loads a 200×200 gradient PNG — no upload needed
Drop image file or click to browse
PNG, BMP, WebP, JPEG — max 50 MB (10 MB on mobile). TIFF opens only in browsers that can decode it (Safari)
Processed in your browser
Your image is decoded in your browser, in a Web Worker, and is not sent to a StegoToolkit server. Basic usage analytics record coarse facts such as file type and size range, never the image or your payload. Output is always a lossless PNG.
How to Extract Hidden Data from an Image (5 steps)
- Upload the image that may contain hidden data (PNG, BMP, WebP or JPEG; TIFF only in Safari).
- Quick and Standard modes try the common LSB settings and open the best result; Forensic mode lets you choose the algorithm, bit depth, channels and seed.
- If the data was encrypted, add the password (the field is under "Password-protected?").
- Click Extract — the tool shows the recovered text or file and what it looks like.
- Download the file or copy the text. Forensic mode also shows strings, hex and bit planes.
Image Steganography Methods — Detection Guide
| Method | Speed | Capacity | Use Case |
|---|---|---|---|
| Basic LSB (1-bit) | ⚡ Fast | Pixels × 3 ÷ 8 bytes (about 180 KB for 800 × 600) | Lossless transfer of PNG/BMP files; the simplest method for CTF-style extraction |
| Adaptive LSB | ⚡ Fast | At least the Basic LSB figure; more when the image has strong edges (2 bits there) | Default. Same lossless-transfer limits as Basic LSB |
| Custom LSB (1–8 bit) | ⚡ Fast | Pixels × 3 × bit depth ÷ 8 bytes (about 720 KB at 4 bits, 800 × 600) | Large payloads, or reading a CTF image that used a known bit depth |
| DCT Domain | 🐢 Slower | Width ÷ 8 × height ÷ 8 × 2 bits (about 1.8 KB for 800 × 600) | Experimental. Recovered only after JPEG quality 100 in our tests |
| Spread Spectrum | ⚡ Fast | At most about 1.2 KB, whatever the image size | Short messages that must survive JPEG conversion (recovered down to quality 60 in our tests); adds visible noise |
What This Extractor Can and Cannot Read
It reads data written by the Image Steganography Hider and by other tools that use plain LSB embedding with a 4-byte big-endian length in front of the payload: Basic LSB, Custom LSB (1–8 bits), Adaptive LSB, DCT and Spread Spectrum. A different layout will not be read even if it is also LSB-based; for those try the LSB Extractor or a general tool such as zsteg or StegSolve. Data hidden by file-structure tricks (extra bytes after the image, metadata chunks) is not in the pixels, so this tool will not see it: use the PNG Steganography Extractor or the Steganography Analyzer.
Opening a JPEG works, but if the hidden data was written into a PNG and the PNG was later converted to JPEG, the LSB data is normally gone. In our tests LSB data was lost at every JPEG quality we tried; DCT was recovered only at quality 100 and Spread Spectrum down to quality 60 (see the test table on the Hider page).
What Auto-Detect Tries, and What Counts as Success
Quick and Standard modes run eight attempts: LSB 1-bit on R+G+B, LSB 2-bit on R+G+B, LSB 3-bit on R+G+B, Adaptive LSB, LSB 1-bit on red only, on green only and on blue only, and DCT. It does not try 4 to 8 bits, Spread Spectrum, a seed (random pixel order), the alpha channel or least-significant-bit-first ordering. Anything hidden with those settings needs Forensic mode and the matching settings; the Extractor cannot discover them from the file because the format has no signature.
Each attempt reads a 4-byte length and then that many bytes, and the bytes are classified. A known file signature (PNG, ZIP, PDF and so on) is "likely file". More than 7.2 bits of entropy per byte, or the exact layout of an encrypted payload (a length that matches the data), is "likely encrypted". More than 70% printable characters in the first 100 bytes is "likely plaintext". Everything else is "likely noise". These are guesses from the bytes, not proof: ordinary random-looking image noise can be read as a length and produce a plausible-looking candidate, so check that the text actually makes sense.
Quick and Standard open the result for you when exactly one readable answer exists. Several attempts often read the same message (Adaptive LSB and LSB 2-bit often agree), and the tool compares a fingerprint of the full payload to see that they are one answer, not a tie. If different attempts read different text, nothing is opened and you choose from the list. Forensic mode always starts on the full list.
Passwords and Encrypted Payloads
If a password was set when hiding, the recovered bytes are AES-256-GCM ciphertext and look random. When Auto-Detect finds only data of that shape, the result says "Hidden Data Found That Looks Encrypted" with a field to enter the password and try again. That wording is deliberately hedged: the tool infers encryption from the length field and entropy; only a password that passes the authentication tag proves it. A wrong password and damaged data both just fail.
The password is turned into a key with PBKDF2-HMAC-SHA-256 (100,000 iterations) and the salt stored in the payload, and the AES-256-GCM authentication tag then checks it. A wrong password and a damaged payload both simply report failure, so the tool cannot tell you which it was, and there is no way to recover a forgotten password. The full description, including what this scheme does not protect, is on the Image Steganography Hider page.
Settings You Must Know for Forensic Mode
Bit depth is how many low bits per channel were overwritten (1 to 8). Channels select red, green, blue, alpha or all of R+G+B. Bit order only matters for depths above 1 bit: the default reads the highest of the overwritten bit positions first, which is what this site's Hider writes; the other option is for images made by a tool that packs the bits the other way. The seed (0 to 999,999,999) must match the Hider's seed exactly; without it a randomised file reads as noise. Spread Spectrum is not part of Auto-Detect: choose it directly and enter the same seed (the Hider's default is 42 when no seed was set).
Strings (printable runs of at least four characters), a hex view and 24 bit-plane images (each bit of R, G and B) are shown in Forensic mode, and CTF-style flags such as flag{...} are highlighted. The bit planes are a classic manual check: LSB data tends to look like noise in the lowest planes. The tool computes the 24 planes only when you open that tab.
Examples
Input: A PNG from the Hider: Adaptive LSB, a 40-character text message, no password; Quick mode
Result: The message appears under Result with no further clicks. If more than one attempt reads it, the payload fingerprints match, so it still opens automatically.
Meaning: Several attempts agreeing is one answer, not a tie.
Input: A PNG hidden with Custom LSB 6-bit
Result: Quick mode finds nothing. Forensic mode with algorithm Custom LSB, bit depth 6 and channels All recovers it.
Meaning: Auto-Detect tries 1, 2 and 3 bits only; the rest is a manual step.
Input: A PNG hidden with a password, read in Quick mode with no password
Result: "Hidden Data Found That Looks Encrypted" with a password field. Entering the right password opens the message; a wrong one reports a failure.
Meaning: The data was found; it just needs the key.
Input: An ordinary photograph that contains nothing
Result: "No Hidden Message Found", with a link to the Steganography Analyzer and the noise rows collapsed.
Meaning: Eight common settings produced nothing readable. It does not prove nothing is hidden; other layouts and settings exist.
How the Extractor Works
1. Decode the image
The browser decodes your image to raw pixels in a Web Worker.
2. Read bits
For each attempt it reads the low bits of the chosen channels in file order (or in the seeded order), then a 4-byte length, then that many bytes.
3. Classify
Each candidate is labelled likely file, encrypted, plaintext or noise from its magic bytes, entropy and printable ratio.
4. Open the best answer
If exactly one readable answer exists (several attempts agreeing count once), Quick and Standard open it; otherwise you pick.
5. Decrypt and interpret
With a password the AES-256-GCM tag is checked; the result is then shown as text, a file with its detected type, or hex.
What the results mean
| Result | What it means | What to do |
|---|---|---|
| Readable text | The bytes decode to mostly printable characters | Check it makes sense; random noise can occasionally look printable |
| File detected | The bytes start with a known file signature | Download it; the detected type is shown |
| Hidden Data Found That Looks Encrypted | A valid length was found and the bytes look random or match the encrypted layout | Enter the password; if none was set the data may just be compressed |
| No Hidden Message Found | None of the eight attempts produced a readable result | Try Forensic mode (other bit depths, channels, seed), or the Steganography Analyzer |
| Decryption failed | A password was given and the AES-GCM authentication tag did not match | Re-enter the password; a damaged payload gives the same failure |
Limitations
- Auto-Detect covers eight common settings only. 4–8 bit depths, Spread Spectrum, any seed, the alpha channel and least-significant-bit-first order need Forensic mode with matching settings.
- Classification is a guess from the bytes. A candidate can look readable by coincidence, and a short encrypted message can look like noise; the tool uses the encrypted layout (a length that matches the data) to catch the common case.
- A JPEG-converted copy of an LSB image has lost the data. DCT survives only at JPEG quality 100 in our tests; Spread Spectrum was recovered for short messages on the carriers we tried.
- The Extractor reads the pixels. Data stored after the image or in metadata is out of scope here.
- TIFF opens only in browsers that can decode it (Safari in our check).
- Bit planes and strings help you look; they do not extract a payload that uses a layout this tool does not know.
Privacy
Your image is decoded and read in your browser, in a Web Worker, and is not sent to a StegoToolkit server. The tool stores only your display-mode preference (localStorage) and a dismissed-tip flag (sessionStorage); the image, the extracted data and any password exist only in page and worker memory while you use the tool, and starting over or closing the tab discards them. Page views are counted by Vercel Analytics, which is cookieless. Tool events (the options you choose such as the algorithm and bit depth; the file's type and a size range; and how long processing took) are sent to Google Analytics only if the site has it configured and you accepted analytics cookies. The tool does not pass the image, the extracted data, a password, the seed number or the filename to analytics, and a filter drops fields with names such as password, payload, data or filename before anything is sent. If you accept cookies, the site may also load advertising and other analytics scripts that are outside this tool's code. As on any website, the host keeps ordinary request logs for loading the page (IP address, URL, browser); because the file is never uploaded, the image and extracted data are not part of any request.
Which Tool Next?
- Image Steganography Hider — Hide a message so this Extractor can read it
- LSB Extractor — LSB extraction with explicit channel and bit-order control
- PNG Steganography Extractor — Read data stored in PNG chunks or after the image
- Steganography Analyzer — Statistical tests, bit planes and file checks for any image
- Steganography Detector — Estimate whether an image shows signs of hidden data
Frequently Asked Questions
I don't know which algorithm was used — what should I do?
Use Quick or Standard mode. It runs eight attempts (LSB 1, 2 and 3 bits on R+G+B, Adaptive LSB, LSB 1-bit on red, green and blue alone, and DCT) and opens the one readable answer, or shows the list if several different answers exist. It does not try 4–8 bits, Spread Spectrum, a seed, the alpha channel or least-significant-bit-first order; for those use Forensic mode.
The output looks like garbage — is there hidden data?
Look at the entropy. Above about 7.2 bits per byte the bytes look random, which is what a password-protected payload looks like (or compressed data); try entering a password. Low entropy with printable characters suggests plaintext. Noise with a plausible length can also be a coincidence. This is a guess from the bytes, not proof.
What is bit plane visualization?
Each colour value has 8 bits. Showing one bit of one channel for every pixel as a black-and-white image makes patterns visible; LSB steganography tends to look like noise in the lowest planes. The tool builds all 24 planes only when you open that tab.
Can I extract data from a JPEG image?
You can open a JPEG, but if the data was hidden with LSB in a PNG and the file was later converted to JPEG, it is normally gone: LSB data was lost at every JPEG quality we tried. DCT was recovered only at quality 100 and Spread Spectrum down to quality 60 in our tests. Reed-Solomon repairs a few scattered changed bytes, not a JPEG conversion.
What are the R/G/B channel options for?
Some tools hide data in a single channel. Auto-Detect already tries red alone, green alone and blue alone at 1 bit; for another bit depth on one channel, or for the alpha channel, use Forensic mode.
What does the String Extractor show?
Printable runs of at least four characters from the raw bytes, even when decoding does not fully succeed. CTF-style flags such as flag{...} or picoCTF{...} are highlighted.
Is my image uploaded?
No. It is decoded and read in your browser. The tool stores only your display-mode preference and a dismissed-tip flag; it does not pass the image, the extracted data, a password, the seed or the filename to analytics.
Related Tools
Image Steganography Hider
Hide secret messages or files inside PNG, BMP, WebP or JPEG images; the result is saved as PNG. Optional AES-256 encryption, processed in your browser.
Steganography Detector
Statistical steganalysis with three published tests — chi-square, RS analysis and Sample Pairs — fused into one score and checked against the real StegExpose on a small test set. Payload size estimate. Method fingerprint. WAV audio support. Processed in your browser, not uploaded.
Text-in-Image Hider
Hide secret text inside an image with Sequential, Seeded Scatter or Adaptive Edge LSB. Shows PSNR and SSIM after encoding, optional AES-256 password, and always saves a PNG.
Text-in-Image Extractor
Extract hidden text from images. Auto-Detect tries 11 common LSB settings; manual mode, bit plane viewer, chi-square pre-scan, CTF flag detection and an optional AES-256 password.