StegoToolkit

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)

  1. Upload the image that may contain hidden data (PNG, BMP, WebP or JPEG; TIFF only in Safari).
  2. 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.
  3. If the data was encrypted, add the password (the field is under "Password-protected?").
  4. Click Extract — the tool shows the recovered text or file and what it looks like.
  5. Download the file or copy the text. Forensic mode also shows strings, hex and bit planes.

Image Steganography Methods — Detection Guide

MethodSpeedCapacityUse Case
Basic LSB (1-bit)⚡ FastPixels × 3 ÷ 8 bytes (about 180 KB for 800 × 600)Lossless transfer of PNG/BMP files; the simplest method for CTF-style extraction
Adaptive LSB⚡ FastAt 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)⚡ FastPixels × 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🐢 SlowerWidth ÷ 8 × height ÷ 8 × 2 bits (about 1.8 KB for 800 × 600)Experimental. Recovered only after JPEG quality 100 in our tests
Spread Spectrum⚡ FastAt most about 1.2 KB, whatever the image sizeShort 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

ResultWhat it meansWhat to do
Readable textThe bytes decode to mostly printable charactersCheck it makes sense; random noise can occasionally look printable
File detectedThe bytes start with a known file signatureDownload it; the detected type is shown
Hidden Data Found That Looks EncryptedA valid length was found and the bytes look random or match the encrypted layoutEnter the password; if none was set the data may just be compressed
No Hidden Message FoundNone of the eight attempts produced a readable resultTry Forensic mode (other bit depths, channels, seed), or the Steganography Analyzer
Decryption failedA password was given and the AES-GCM authentication tag did not matchRe-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?

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