PDF Steganography Extractor
Extract text or files hidden by the PDF Steganography Hider's five methods. Tries each method in turn and shows a PDF Anomaly Score. Processed in your browser, not uploaded.
Try the demo instantly
Loads a PDF with a hidden message already embedded
Drop PDF here or click to browse
Accepted: PDF · Maximum file size: 200 MB on desktop, 50 MB on mobile
Processed in your browser
Your PDF is read and analysed in this browser tab; the original is not modified or sent to our servers. Usage statistics may record which options you used (such as the algorithm) and coarse file facts such as size range, never the PDF or the payload.
How the Extractor Works (4 steps)
- Upload the PDF file that may contain a hidden payload
- Select the detection method (or use Auto to scan all methods)
- Enter a password if the payload was encrypted during encoding
- Click Decode — the hidden message or file will be extracted below
5 PDF Extraction Methods
| Method | What it reads | What it does | Best For |
|---|---|---|---|
| Metadata Fields | The Keywords value begins with STEGO_META_V1:, then Base64 pieces joined by || | Reads the Info dictionary's Keywords field | Payloads from this tool's Metadata method |
| Invisible Text | Catalog entry StegoITData (Base64) | Reads one Catalog key | Payloads from this tool's Invisible Text method |
| Whitespace Manipulation | Page 1 Resources entry StegoWSData (Base64) | Reads one Resources key | Payloads from this tool's Whitespace method |
| Object Stream | Stream referenced by Catalog key StegoObjStream | Follows one reference, checks the marker | Payloads from this tool's Object Stream method |
| Font Encoding | StegoFontData key in a font dictionary or page Resources | Walks every page's fonts | Payloads from this tool's Font Encoding method |
What This Extractor Can and Cannot Find
This extractor reads payloads written by the PDF Steganography Hider on this site. Each of its five methods looks in one exact place for one exact key name — the Keywords field with the STEGO_META_V1: marker, the Catalog entries StegoITData and StegoObjStream, the page Resources entry StegoWSData, and the StegoFontData key. If a PDF holds hidden data placed anywhere else, or under a different name, this tool will report that nothing was found.
That is a real limit for people searching for hidden data in an unknown PDF, for example in a CTF challenge. For those files, start with tools that show everything: the Polyglot File Analyzer for appended or embedded formats, the Strings Analyzer for readable text, the Hex Viewer for the raw bytes, and the PDF Metadata Steganography Extractor, which reads six different metadata and structure methods.
Before You Use It
The Extractor only reads the file; it never changes it, and the PDF is not sent to a server. An extracted file comes from whoever made the PDF, so treat it like any download: do not open an unknown file just because it came out of a PDF. A password-protected PDF is refused. If the payload was encrypted and you do not have the passphrase, the data stays unreadable and nothing here can recover it.
How Auto Detect Works
Auto Detect tries the five methods in this order: Metadata, Invisible Text, Whitespace, Object Stream, Font Encoding. For each one it loads the PDF, reads the one location that method uses, and reports whether a payload was there. The scan stops early at the first clear text or file payload; otherwise every method is tried, each result is listed, and the best one (text, then file, then binary, then encrypted) is shown. The scan does not guarantee that every payload in a PDF is extracted. You can also pick a single method if you know how the file was made.
Each method either finds its marker and key or finds nothing. There is no guessing from the page content, so a found marker identifies a candidate payload at the expected location; successful decoding or authenticated decryption is stronger confirmation. These are three different outcomes: a marker found, a payload recovered, and (for an encrypted payload) authentication succeeded. A failed scan tells you only that this tool's fixed locations are empty.
The PDF Anomaly Score
Alongside the extraction, the tool inspects the PDF's structure and shows a score from 0 to 100. It is the sum of four parts, each worth up to 25: metadata, invisible text, object stream and font encoding. A part scores when the tool finds its own marker — the STEGO_META_V1 / STEGO_WS_V1 Keywords prefix, the StegoWSData, StegoITData, StegoObjStream or StegoFontData keys — or, for metadata only, a Keywords field that is unusually long (over 200 characters) or that looks like a long Base64 string. The label is Low up to 20, Medium above 20, and High above 50. The score has four parts for five methods because Whitespace Manipulation's fingerprints are counted inside the metadata part. This Hider's Whitespace Manipulation writes the page 1 Resources key StegoWSData, which scores 18 there, and no Keywords prefix; the 25-point rule for a Keywords value starting STEGO_WS_V1: applies only to a file that has that prefix. Font Encoding scores 25 when the PDF has an embedded font (the key sits in the font dictionary) and 20 when it has none (the key falls back to the page Resources).
So the score tells you how many of this tool's own fingerprints are present. It is not a general steganalysis measure: a PDF carrying data by some other technique scores 0, and a high score on a file you did not make with this tool suggests matching key names or metadata patterns are present.
Passwords, Redundancy and What the Result Means
If the payload was encrypted, the extracted bytes are AES-256-GCM ciphertext until you supply the password; a wrong password fails authentication and the raw bytes are shown instead of text, with a note that a wrong passphrase and damaged data cannot be told apart. A password typed for a payload that was never encrypted is simply not used. A green note appears only when AES-GCM authentication succeeded. The interpreter then classifies what it has: a known file signature (PDF, ZIP, PNG, JPEG, GIF, MP3 and others) is offered as a download, mostly-printable low-entropy bytes are shown as text, and data that matches this toolkit's encrypted layout or has very high entropy is flagged as probably encrypted.
If the Hider's RS option was used, the wrapper is detected by its header and removed first. In theory the Extractor can repair up to 5, 10 or 15 changed bytes per 223-byte block (RS-10, RS-20, RS-30), provided it can locate the block and the errors stay within that limit, and it reports blocks it cannot repair.
About the Password
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 PDF Steganography Hider page.
Where the Extractor Looks, Exactly
Each method reads one fixed place. Nothing is guessed from the page text or the content streams.
| Method | Reads | Accepts | Ignores |
|---|---|---|---|
| Metadata | Info dictionary Keywords | A Keywords value that begins with STEGO_META_V1: (this Hider's output; any space-separated word starting with it is accepted), then Base64 pieces joined by || | XMP streams, other Info fields |
| Invisible Text | Catalog key StegoITData | A PDF string of Base64 | The off-page text on page 1 (it is a copy) |
| Whitespace Manipulation | Page 1 Resources key StegoWSData | A PDF string of Base64 | The Tw lines (they are decoration) |
| Object Stream | The stream behind Catalog key StegoObjStream | Stream text starting STEGO_OBJ_V1: | Streams without the marker |
| Font Encoding | Each page's Resources, then each font dictionary, key StegoFontData | A string starting STEGO_FONT_V1: | Font programs and glyphs |
PDF Anomaly Score, Part by Part
The score is the sum of four parts of up to 25 each; Low is 0 to 20, Medium 21 to 50, High over 50. It counts this tool's own fingerprints (and one Keywords heuristic), not steganography in general.
| Part | Scores when | One payload of that method scores |
|---|---|---|
| Metadata (max 25) | Keywords starts STEGO_META_V1: (25), or STEGO_WS_V1: (25, a prefix this Hider never writes); Keywords over 200 characters (15); a Base64-looking Keywords of 40+ characters (12); Subject STEGO_V1 adds 10; page 1 Resources key StegoWSData (at least 18) | Metadata Embedding 25; Whitespace Manipulation 18 (it writes StegoWSData and no Keywords prefix) |
| Invisible text (max 25) | Catalog key StegoITData | 25 |
| Object stream (max 25) | Catalog key StegoObjStream | 25 |
| Font encoding (max 25) | Key StegoFontData in a page's Resources (20) or in a font dictionary (25) | 25 with an embedded font; 20 without one (the key falls back to page Resources) |
Examples
Input: A PDF made by the Hider's Metadata method, Auto Detect
Result: Metadata Fields: payload found. The Keywords field started with STEGO_META_V1:. The anomaly score's metadata part is 25.
Meaning: The marker and Base64 were exactly where the Hider puts them. Read the text, or download the file if it is one.
Input: A PDF from the Object Stream method, with a password, entered correctly
Result: Object Stream: payload found, decrypted, shown as text or offered as a file.
Meaning: The StegoObjStream reference was followed, the marker stripped, then AES-256-GCM decrypted.
Input: The same PDF, wrong password
Result: The raw bytes are shown, classified as probably encrypted; no text appears.
Meaning: Authentication failed. The payload is present but unreadable without the right password.
Input: A CTF PDF with a flag hidden in a content stream or after %%EOF
Result: All five methods report nothing found; the score is 0 when no fingerprint or Keywords heuristic matches (an unrelated long or Base64-looking Keywords value can still add points).
Meaning: The payload is not under this tool's key names. Try the Polyglot Analyzer, Strings Analyzer or Hex Viewer.
Input: A PDF edited and re-saved by a tool that rebuilds the file
Result: Nothing found, even though the original stego PDF held a payload.
Meaning: Rebuilding a PDF from its rendered pages generally drops custom structural entries. Other optimisers were not tested.
Input: An ordinary PDF with a very long, Base64-looking Keywords field
Result: No method finds a payload, but the anomaly score shows a metadata warning.
Meaning: The heuristic flags the field as unusual; it does not prove a payload exists or that it was made by this tool.
How the Extractor Works, Step by Step
1. Load and inspect
The PDF is parsed in the browser with pdf-lib and a structural pass collects the metadata fields and looks for this tool's marker keys to compute the anomaly score.
2. Read one location per method
Each method reads a single fixed place: the Keywords field, a Catalog key, a Resources key, a referenced stream, or font dictionaries. Nothing is guessed from page text.
3. Decode
A found payload is Base64-decoded (or read as raw stream bytes after the marker) and, if it carries the redundancy header, unwrapped.
4. Decrypt
With a password the payload is decrypted with AES-256-GCM. A wrong password keeps the raw bytes and says so.
5. Interpret
The original filename is restored if one was stored, and the bytes are classified as text, a file, probably-encrypted data or binary, with CTF flag patterns highlighted.
What the results mean
| Result | What it means | What to do |
|---|---|---|
| Payload found | A method found its marker and key | Read it, or download it if it is a file |
| No payload detected | None of the five fixed locations held data | The PDF may use another technique — try the Polyglot Analyzer, Strings Analyzer or Hex Viewer |
| Probably encrypted | The bytes match this toolkit's encrypted layout or have very high entropy | Enter the password used when hiding |
| Anomaly score: Low (0–20) | Few or none of this tool's fingerprints. A Whitespace Manipulation payload alone scores 18, and a Font Encoding payload in a PDF with no embedded font scores 20; both are Low | Do not read Low as proof that nothing is there: run Auto Detect; it says nothing about other techniques |
| Anomaly score: Medium (21–50) | Some fingerprints, or an unusual Keywords field. One Metadata, Invisible Text, Object Stream or Font Encoding (with an embedded font) payload alone scores 25 | Run Auto Detect and read the listed anomalies |
| Anomaly score: High (over 50) | At least three of the four parts scored, because each part is capped at 25: several of this tool's fingerprints matched | A strong sign of a payload written by this tool, but not proof: anyone can add the same key names |
| Hidden data found, but it could not be decrypted with that passphrase | A passphrase was given and the data has the encrypted layout, but AES-GCM authentication failed. A wrong passphrase and damaged data cannot be told apart | Check the passphrase; the bytes shown are still encrypted |
| AES-GCM authenticated decryption succeeded (green note) | AES-GCM authenticated decryption succeeded with this passphrase | Read or download the result |
| Reed-Solomon repaired N changed bytes | The Hider's RS option was used and some stored bytes had changed | Check the result; the repair is limited to 5, 10 or 15 bytes per block in theory |
| Reed-Solomon found damage it could not repair | More bytes changed than the parity can fix | Treat the bytes as possibly wrong |
| Flag detected | The text matches a CTF flag pattern | Verify it — generic patterns can match ordinary words in braces |
Limitations
- Only payloads written by this site's PDF Steganography Hider are found. Each method reads one fixed key name; data hidden anywhere else, or by another tool, is invisible to it.
- The anomaly score counts this tool's own fingerprints plus one heuristic for long or Base64-like Keywords. It is not a general PDF steganalysis score, and a PDF using another technique scores 0.
- Rebuilding a PDF from its rendered pages (print to PDF, flattening) generally drops custom structural entries, so the payload is usually gone afterwards. Other optimisers were not tested.
- Password-protected PDFs are not supported. Remove the protection first.
- The upload box accepts PDFs up to 200 MB (50 MB on a phone) and refuses anything larger without reading it. Measured in Chromium on a laptop with a 190 MB PDF that is one large binary stream: about 1 s to read it and extract a short message, with the page staying responsive (longest frame gap 33 ms). A PDF made of very many small objects takes longer.
- The Hider's RS option is Reed-Solomon parity: the extractor repairs a few changed bytes per block, not removed pages or objects.
- For hidden data in unknown PDFs, use the Polyglot File Analyzer, the Strings Analyzer or the Hex Viewer; for more PDF metadata methods use the PDF Metadata Steganography Extractor.
Privacy
Your PDF is analysed in your browser, in a Web Worker, and is not sent to a StegoToolkit upload server. The extracted payload and any password stay on your device. Usage analytics (page views and tool events) record which options you choose (such as the method), coarse facts about the file such as its type and size range, and how long processing took — never the PDF, the extracted data, a filename or a password. Your display mode preference is kept in this browser's localStorage.
Which Tool Next?
- PDF Steganography Hider — Create a PDF to test the extractor with
- PDF Metadata Steganography Extractor — Six metadata and structure methods, with a CTF mode
- Polyglot File Analyzer — Find other formats appended to or embedded in a PDF
- Strings Analyzer — Read every printable string in the file
- Hex Viewer — Inspect the raw bytes when this tool finds nothing
Frequently Asked Questions
Will decoding modify my PDF?
No. Decoding only reads the file. The original is never changed, and the extracted payload is returned to your browser.
Is my PDF uploaded to a server?
No. Extraction happens in your browser, in a Web Worker. The PDF does not leave your device.
Which method should I try first?
Auto Detect. It tries Metadata, Invisible Text, Whitespace, Object Stream and Font Encoding in that order, stops early at the first clear text or file, and otherwise tries all five. Pick a single method only if you know how the PDF was made.
Why is the output garbled?
The payload was most likely encrypted. Enter the same password used when hiding. A wrong password fails authentication and shows the still-encrypted bytes with a note; a wrong password and damaged data cannot be told apart.
Can I extract files, not just text?
Yes. If the payload is a file, it is recognised by its signature and offered as a download, with its original filename restored if one was stored.
What is the PDF Anomaly Score?
A 0–100 score made of four parts of up to 25 each (metadata, invisible text, object stream, font encoding). A part scores when this tool's own marker keys are found, and the metadata part also scores for a Keywords field that is unusually long or looks like Base64. Above 50 means several of this tool's fingerprints are present. It does not measure other steganography techniques.
Why does it say nothing was found in my CTF PDF?
This extractor reads only the exact locations the PDF Steganography Hider writes. If a CTF PDF hides data with a technique this extractor does not support (for example in a content stream, after the end of the file or in an embedded file), this tool will not find it. Try the Polyglot File Analyzer, Strings Analyzer or Hex Viewer.
What does the Reed-Solomon option do?
If the Hider used its RS option, the payload carries a Reed-Solomon wrapper that the extractor detects and removes, which can in theory repair up to 5, 10 or 15 changed bytes per block (if the block can be located and the errors stay within that limit) and says how many it repaired, or that some damage could not be repaired. It does not recover content from deleted pages or an entry another program removed.
Related Tools
PDF Steganography Hider
Hide text or a file in a PDF with five methods (metadata, invisible text, whitespace, object stream, font entry). AES-256-GCM encryption with a password (optional). Processed in your browser, not uploaded.
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.