Whitespace Steganography Extractor
Extract hidden data from trailing whitespace, inter-word spacing, line endings, or indentation. WSST header auto-detect, SNOW-style raw mode, labelled headerless guess.
Enter Stego Text to Decode
Paste the text that may contain hidden whitespace steganography, or upload the original .txt file
Load demo stego text
Pre-encoded sample — extracts automatically
How to Decode Whitespace Steganography (5 steps)
- Paste the suspicious text or upload the original .txt file (uploading keeps trailing whitespace that pasting may lose).
- Click Continue to Decode, then Extract Hidden Data. In Auto-detect (the default) a WSST header written by this site's Hider is found and decoded with no settings.
- For a headerless puzzle file, pick one method (or the SNOW-style raw format) instead of Auto-detect in Standard or Forensic mode.
- Enter the password if the payload was encrypted.
- Copy the hidden message or download the extracted file.
Whitespace Steganography Decoding — What This Tool Handles
| Method | Technique | When to Use | Notes |
|---|---|---|---|
| WSST header (auto) | Tries each of the 4 methods for a 9-byte "WSST" header with a valid CRC-8 | Files made by this site's Hider | No settings needed |
| SNOW-style raw | Tab-marked trailing whitespace with a 32-bit length, no header | Puzzles made with this site's SNOW-style mode | Not the real SNOW program's format |
| Headerless guess | Reads Trailing Space/Tab, Inter-Word, Line Ending and Tab Indentation bits and scores them by how readable the first bytes are | Files whose method you do not know | A guess: it needs 10 or more readable characters, a flag shape or a file signature, and only the first 512 bytes are examined |
| AES-256-GCM | Decrypts when the header's encrypted flag is set | Encrypted payloads | A wrong password fails with a clear message |
What This Extractor Reads
It reads files made by the Whitespace Steganography Hider. Auto-detect tries each of the four methods for a "WSST" header (magic bytes, method, flags, a 16-bit length of at most 65,535 bytes and a CRC-8). A header with a valid CRC-8 is accepted, and the Extractor then reads the number of bytes it states. A CRC-8 is a checksum against accidental changes: it does not authenticate the header and does not cover the message, so if the whitespace was altered after the header, the bytes can come back wrong even though the header passed. Only an AES-encrypted message is checked end to end, by AES-GCM itself.
If no header is found, Auto-detect tries the SNOW-style raw format, then reads Trailing Space/Tab (space = 0, tab = 1), Inter-Word, Line Ending and Tab Indentation bits without a header. It looks only at the first 512 bytes and keeps the longest candidate whose readability score is above 0.5 and that passes one of three checks: a PDF, ZIP, PNG or JPEG signature, a flag shape such as CTF{...}, or at least 10 readable characters at the start. That last step is a heuristic, labelled a guess in the result, not proof that anything is hidden: the longest candidate is not necessarily the right one, and ordinary whitespace patterns can occasionally pass. In our test (300 synthetic texts of 80 lines with random single or double spaces, trailing spaces or tabs and stray carriage returns, each read five ways: Auto-detect and the four methods one by one) nothing was reported as hidden data in 1,500 readings. That describes that test set, not real-world texts, and is not a guarantee. A hidden file's name is restored only when the Hider stored it (files, not typed text, in the WSST format, flag bit 5).
Real SNOW Files and Other Tools
This extractor was not built to read files made by the real SNOW program, which has its own bit packing and cipher; none was tested here. If your puzzle came from the real snow program, use that program (snow -C file) on a desktop. For other puzzles built on spaces, tabs or line endings, Manual mode with each method in turn sometimes finds readable text.
When Nothing Is Found
Work down this list. (1) Is it the original file? Copy-paste through a browser, editor or chat app often trims trailing whitespace or collapses spaces; upload the .txt file instead. (2) Was the file truncated? A header that promises more bytes than the text holds is reported as truncated rather than as a result. (3) Is it encrypted? Enter the password. (4) Try Manual mode with each method. (5) The text may simply have ordinary trailing spaces — compare with 'Show whitespace' before concluding anything is hidden.
Examples
Input: A .txt file made by the Hider with Trailing Space/Tab, message 'Hi', no password.
Result: Auto-detect finds the WSST header, reads 2 bytes and shows 'Hi' as text.
Meaning: Header found: the method and length came from the file itself.
Input: The same file cut off after 12 lines (the 72-bit header fits in 11 lines of 50 characters, the 2-byte message needs 13).
Result: A message saying the header was found but the text holds less data than it promises.
Meaning: Truncated files are reported, not returned as a short message.
Input: An encrypted file and a wrong password.
Result: An error that the password was wrong or the extracted bytes are damaged; no bytes are shown.
Meaning: AES-GCM authentication failed.
Input: Plain prose with no hidden data.
Result: A message that no header, SNOW-style marker or readable bytes were found.
Meaning: No header, no SNOW-style marker and no readable bytes in any method.
How the Whitespace Extractor Works
1. Look for the header
The first 72 bits of each method are read and tested against the WSST layout and CRC-8.
2. Read the payload
The number of bytes stated in the header is read with the same method; fewer bits than promised means the text was cut or changed.
3. Decrypt and decompress
If the header says so, AES-256-GCM is decrypted with your password and the result is inflated.
4. Interpret
The bytes are labelled text, a known file type or binary, and flags such as flag{…} are highlighted. Everything runs in your browser tab.
What the results mean
| Result | What it means | What to do |
|---|---|---|
| Header found | A WSST header with a valid CRC-8 was found and the bytes it states were read. This does not prove the message is intact: CRC-8 covers the header only (an encrypted payload is checked by AES-GCM). | Check the text makes sense; compare with the original file if you have it. |
| Guess without a header | No header, but one method gave readable bytes. This is a guess. | Check the text makes sense; try Manual mode to confirm. |
| Password needed or wrong | The header says the payload is encrypted. | Enter the password; a wrong password and damaged data look the same. |
| Text shorter than the header says | The text is truncated or its whitespace was changed. | Use the original file. |
| Nothing found | Nothing matched any check. | Upload the original file, try Manual mode, or conclude there is nothing. |
Limitations
- Only this site's formats are read; files from the real SNOW program were not tested and are not expected to open.
- The headerless guess examines the first 512 bytes and needs at least 10 readable characters from the start, a flag shape or a known file signature; shorter hidden messages need Manual mode.
- The CRC-8 protects the header only; an unencrypted message altered afterwards may come back wrong without a warning.
- Whitespace lost in transit cannot be recovered; the tool can only report that the data is missing.
- Reed-Solomon error correction is not used in this format.
Privacy
Your pasted text, file and password are processed in this browser tab and are never sent to a server. Usage statistics may record which options were used, never your text.
Which Tool Next?
- Whitespace Steganography Hider — Make a file this extractor reads.
- Invisible Text Extractor — Zero-width characters instead of spaces and tabs.
- Text Steganography Extractor — Homoglyph and Unicode-space methods.
- Strings Analyzer — Find readable strings in a file of unknown type.
Frequently Asked Questions
Can this decode files from the real SNOW program?
No. It reads headerless, tab-marked trailing whitespace in this site's own layout (space = 0, tab = 1 after the marker, a 32-bit length), not SNOW's bit packing, and it has no ICE decryption. No file from the real program was tested here; use the real snow program for files made by it.
The text looks normal but extraction finds nothing — why?
The usual cause is that whitespace was lost: copy-paste through a browser, an editor with trim-on-save, a chat app or an email client can remove trailing spaces and tabs or collapse double spaces. Upload the original .txt file. Other causes are an encrypted file without the password, or no hidden data at all.
What does Show whitespace do?
It marks spaces with a dot, tabs with an arrow and line ends with a pilcrow, like cat -A. Consistent space and tab patterns at the end of many lines suggest trailing-whitespace hiding, but ordinary files can have them too.
How do I decode an inter-word spacing challenge?
Use Manual mode and pick Inter-Word Spacing. The decoder reads each gap of one or two spaces between words: one space is 0 and two spaces are 1. Auto-detect also tries it, as part of the headerless guess.
Is my text sent to a server?
No. Decoding and decryption run in your browser tab. Usage statistics may record which options you used, never your text or password.
Related Tools
Whitespace Steganography Hider
Hide text in trailing spaces/tabs, double-spacing, line endings, or indentation. SNOW-style output (not compatible with the real SNOW program). Optional AES-256-GCM.
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.