Audio Steganography Extractor
Extract hidden text or files from WAV or MP3 audio. Auto-detect tries ten common LSB, Echo, Phase and Spread Spectrum settings; AES-256 decryption; CTF flag highlighting. Processed in your browser.
Try the demo
Loads a 1-second, 8 kHz mono WAV with a short message already hidden in it (LSB), so you can try the decoder — created in your browser
Drop a WAV or MP3 file here or click to browse
PCM WAV (8/16/24/32-bit) · MP3 (auto-converted) · Max 500 MB
MP3 files are decoded to PCM locally via Web Audio API
Processed in Your Browser
Audio decoding and extraction run locally in your browser, and the audio is not uploaded. MP3 files are decoded to PCM locally via the Web Audio API. Usage analytics (cookieless page views, plus tool events only if you accept cookies) are separate: they record option choices and coarse file facts (type, size and duration ranges), never the audio, the extracted data or a password.
How to Find a Hidden Message in an Audio File (4 steps)
- Upload the WAV or MP3 file you suspect contains hidden data
- Pick a mode: Quick (one click) → Standard (choose bit depth) → Forensic (raw analysis)
- Enter a password if the payload was encrypted with the encoder
- Click Decode — the extracted message, file, or hex dump appears below
Audio Steganography Decoding — What This Tool Handles
| Method | Technique | When to Use | Best For |
|---|---|---|---|
| LSB (1–4 bit) | Reads the lowest 1–4 bits of each sample, left, right or both channels, LSB- or MSB-first | Auto-Detect tries 7 common presets; use Standard or Forensic mode for any other combination | CTF flags and short text hidden in a WAV |
| Phase Coding | Reads the sign of the real part of the first non-zero-frequency FFT bin (about 10.8 Hz at 44.1 kHz) in each 4096-sample block | Tried automatically. Needs no settings | Messages that went through MP3/AAC/Vorbis |
| Spread Spectrum | Correlates the audio with a seeded pseudo-random pattern; tries each spreading factor and accepts the one whose 8-byte header (stored factor, length, checksum) agrees | Auto-Detect uses seed 42 and its one Spread Spectrum attempt searches every spreading factor; a different seed must be entered in Forensic mode | Messages that went through MP3/AAC/Vorbis |
| Echo Hiding | Compares cepstral peaks at 50 and 100 samples in each 1024-sample block | Tried automatically. Weak on speech and music | Files made with this tool's Echo option |
| AES-256-GCM | Decrypts a payload encrypted by the encoder (PBKDF2-HMAC-SHA-256, 100,000 iterations) | Needed when the extracted data looks like random bytes | Encrypted messages |
| Reed-Solomon | Repairs up to 5, 10 or 15 corrupt bytes per block for RS-10, RS-20, RS-30 | Choose the same level the encoder used. Only for payloads hidden without a password (see step 4 below) | Files with scattered byte errors |
How Hidden Data Is Found in an Audio File
Audio steganography does not necessarily leave an obvious label. Some methods store framing information or a header (this tool's Spread Spectrum method writes an 8-byte one), while others rely on the extraction settings alone, so decoding means trying the supported methods and judging which result looks like real content. This extractor runs them, interprets each result (text, a recognised file type, encrypted-looking data, or noise) and ranks them so the most plausible answer comes first.
That judgement matters because every method will produce something. Reading the lowest bit of random audio gives random bytes. The tool therefore checks each candidate for a valid length, readable text, a recognised file signature or a CTF flag pattern before it calls it a find.
What Auto-Detect Tries — and What It Does Not
Auto-Detect makes ten logical attempts: seven LSB presets (1-bit both channels, 2-bit both, 1-bit left, 1-bit right, 3-bit both, 4-bit both, and 1-bit both channels MSB-first), then Echo Hiding, Phase Coding and one Spread Spectrum attempt with the default seed 42. That single attempt searches the spreading factors 256 to 8192 sample frames per bit itself (a factor is accepted only when the header's stored factor, length and checksum agree) and, if nothing matches at the original alignment, a shifted start. These internal factor checks are not counted as separate attempts.
It does not try every possible combination. A payload hidden with 2-bit LSB on the left channel only, or with Spread Spectrum under a custom seed, will not appear in the Auto-Detect list. Standard mode lets you choose the LSB bit depth and channel yourself; Forensic mode adds the LSB bit order and the Spread Spectrum seed.
Why MP3 Compression Usually Destroys LSB Data
You can upload an MP3: your browser decodes it to PCM and the tool analyses that. But lossy MP3 encoding generally destroys LSB payloads embedded in the original WAV, so recovery from the converted file is unlikely. Phase Coding and Spread Spectrum payloads made by this tool's encoder survived MP3 128–320 kbps in our tests (not Opus, which destroyed all four methods in our test), but recovery depends on the encoder, bitrate, carrier and decoding alignment, so they are worth trying on a converted file.
The tool attempts to decode the MP3 at its own sample rate, read from its first frame. If your browser cannot use that rate, the tool falls back to its default rate and warns you: the audio is then resampled, which changes the sample sequence, and block-based methods (Echo, Phase, Spread) are unlikely to extract. The fallback is not the only way resampling can happen: audio that was resampled before it reached this tool has the same effect, and resampling is not handled (see Limitations). Codec delay or padding is a separate problem: it shifts where a payload starts, which Phase Coding and Spread Spectrum can search for but LSB cannot. If you know the hidden data is in the MP3's own tags or frames, use the MP3 Steganography Extractor instead.
Reading the Result: Text, File, Encrypted or Noise
The interpreter looks at the extracted bytes in a fixed order. A recognised file signature (PDF, ZIP, PNG, JPEG, GIF, MP3 (only with an ID3 tag), WAV/RIFF, ELF, or the two-byte 'MZ' used by Windows executables) is reported as that file type with a download button. Bytes with entropy under 6 bits per byte that are mostly printable ASCII, or strictly valid UTF-8 that is almost all printable (accents, CJK, emoji), are reported as text. Data that matches the exact layout of this toolkit's AES-256-GCM payloads (a length field that agrees with the data size, then a salt and IV), or whose entropy is above 7.4 bits per byte, is reported as probably encrypted — the cue to enter a password. The layout check exists because short messages cannot reach 7.4 bits per byte even when they are encrypted. Very low entropy with few printable characters is reported as noise, which usually means there is no payload at that setting.
The text is also scanned for CTF flag formats: FLAG{}, HTB{}, picoCTF{}, CTF{}, CHTB{}, THM{}, VULNHUB{}, rootme{}, and a generic pattern of two to eight capital letters followed by braces. Be aware that the generic pattern can match ordinary words in braces, so check a hit before trusting it.
If You Get Garbage or Nothing
First, check the entropy reading. High entropy can indicate encrypted or compressed data, but it does not prove a payload is encrypted. If the extracted bytes match this toolkit's encrypted-payload layout, try the password used by the encoder. If you have the password and decryption still fails, the bytes were probably altered after embedding, or you decoded with the wrong algorithm or settings.
If the result is noise at every setting, the file may simply not contain a payload this tool made. Try the Steganography Detector to test for statistical signs of hidden data, the WAV Steganography Extractor for DeepSound and RIFF-chunk methods, and inspect the spectrogram for a visible image or text, which is a different technique from the ones here.
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 Audio Steganography Hider page.
Examples
Input: Any file, Auto-Detect — the ten attempts, as they are labelled in the results list
Result: LSB 1-bit · both · LSB→ · LSB 2-bit · both · LSB→ · LSB 1-bit · left · LSB→ · LSB 1-bit · right · LSB→ · LSB 3-bit · both · LSB→ · LSB 4-bit · both · LSB→ · LSB 1-bit · both · MSB→ · Echo Hiding · Phase Coding · Spread Spectrum (seed 42)
Meaning: Source: the labels are the exact strings the extractor produces. By design the Spread attempt only tries seed 42 and no attempt covers 2-bit LSB on the left channel alone, so both need manual settings (the wrong-seed case is pinned by a unit test).
Input: A 30-second stereo WAV from a CTF challenge, Auto-Detect
Result: Best match: LSB 1-bit · both · LSB→ — readable text containing FLAG{...}.
Meaning: The flag is on the first sample bits; the other nine attempts are listed below it with their entropy so you can see why this one was ranked first.
Input: The same file, but the best result is reported as probably encrypted
Result: Random-looking bytes whose first four bytes agree with the data length.
Meaning: The structure is right but the content is ciphertext. Enter the password the encoder used. If decryption fails, an amber note says your password did not decrypt it: the password may be wrong, the encrypted payload may be damaged, or the extracted data may not have been encrypted. Encrypted data that fails the check stays ciphertext and its plaintext cannot be recovered; with no password typed there is no note, only the prompt to enter one. The same note appears if you type a password for a payload that was never encrypted: the message is then shown as it was extracted.
Input: A WAV encoded with Spread Spectrum (Lossy-safe) and then converted to MP3 128 kbps
Result: Spread Spectrum (seed 42) finds the 8-byte header and reads the message.
Meaning: In our tests with the three test carriers (computer-synthesised speech, a music loop and an ambient track) this survived the conversion (see the matrix on the Hider page); the LSB attempts on the same file find no readable payload. This is an observed test result for the tested carriers and encoder; recovery is not guaranteed for every MP3 conversion.
Input: A WAV with a payload under a custom Spread Spectrum seed (for example 1234)
Result: Auto-Detect shows no Spread Spectrum result.
Meaning: Auto-Detect only tries seed 42. Choose Forensic mode, select Spread Spectrum and enter the seed.
Input: An MP3 whose hidden data was LSB in the original WAV
Result: Noise at every LSB setting.
Meaning: Lossy MP3 encoding usually changes the sample values that carry an LSB payload, making recovery unlikely. Noise at these settings does not prove the original file contained no hidden data.
Input: Extracted bytes starting with 50 4B 03 04
Result: Reported as a ZIP file with a download button named with a .zip extension.
Meaning: The payload was a file, not text. Download it and open it as a ZIP.
How the Extractor Works
1. Parse
The WAV header is read for sample format, channels and the start of the audio data. An MP3 is decoded to PCM by the browser first.
2. Extract
Each method reads its own place: low bits (LSB), the sign of the real part of the first non-zero-frequency FFT bin per block, about 10.8 Hz at 44.1 kHz (Phase), a cepstral peak per block (Echo), or a correlation with the seeded pattern (Spread).
3. Validate
LSB, Echo and Phase read a 4-byte length first and reject impossible lengths. Spread Spectrum checks a magic number, the spreading factor and an 8-bit checksum in its header.
4. Decrypt and repair
With a password the payload is decrypted (AES-256-GCM). If you selected an RS level, the password check comes first and Reed-Solomon repair second, so with a password damaged bytes fail the AES-GCM check before they can be repaired and repair helps only payloads hidden without a password. Without a password, Reed-Solomon can repair byte errors within the selected correction limit in each block, provided the payload can still be extracted and decoded. Beyond that limit, decoding usually fails, but an incorrect correction is possible and may not be detected downstream.
5. Interpret
Entropy, printable ratio, file signatures and CTF flag patterns decide whether the result is text, a file, encrypted data or noise, and a hint says what to try next.
What the results mean
| Result | What it means | What to do |
|---|---|---|
| Plain Text Extracted | Entropy under 6 bits per byte and either more than 85% printable ASCII, or strictly valid UTF-8 (accents, CJK, emoji) that is at least 90% printable. A long text using a very wide range of characters can exceed 6 bits per byte and be reported differently | Read it. If it looks truncated or odd, try another bit depth |
| Recognised File Signature | The first bytes match one of nine signatures (PDF, ZIP, PNG, JPEG, GIF, MP3 with an ID3 tag, RIFF/WAV, ELF, or the two-byte MZ of a Windows executable). Only the leading bytes are checked: the file is not validated | Use the download button; the extension is set from the signature. Open the file in a safe viewer to see whether it is valid, and treat an executable as untrusted |
| Encrypted Payload Detected | The bytes match this toolkit's encrypted-payload layout, or their entropy exceeds 7.4 bits per byte. High entropy alone does not prove encryption | Try the encoder's password when the payload structure supports it. A wrong one fails authentication and is reported in an amber note |
| Binary Payload Extracted | Not text, no known signature, in-between entropy | Inspect the hex dump; it may be a custom or headerless format |
| No Recognizable Payload | Nothing extracted, or low-entropy mostly non-printable bytes, at this setting | Try another setting or a different tool |
| CTF Flag Detected | The text matches a CTF flag pattern | Verify it; generic patterns can match ordinary words in braces |
| Amber note about your password | A password was entered, but decryption (AES-256-GCM) did not succeed: it is the wrong password, the data was damaged, or the payload was not encrypted at all | Check the password. If the result below the note already reads as text, the payload was not encrypted and you can ignore the password |
| Spread Spectrum not listed in Auto-Detect Attempts | No valid header for seed 42 | The payload may use another seed or another method |
Limitations
- Auto-Detect makes ten attempts (seven LSB presets, Echo, Phase, Spread with seed 42). Payloads made with other LSB settings or another Spread Spectrum seed must be decoded manually.
- LSB payloads are generally destroyed when audio is re-encoded with a lossy codec such as MP3, AAC or Vorbis; without the original WAV, recovery from the converted file is unlikely, and this extractor cannot guarantee it.
- Echo Hiding detection is weak on speech and music. A result from the Echo attempt on a file this tool did not make is most likely noise.
- Survival figures for Phase Coding and Spread Spectrum come from our own tests with FFmpeg's MP3, AAC and Vorbis encoders, decoded with the codec's start delay removed. If a decoder leaves that padding in place, Phase Coding and Spread Spectrum are searched for a shifted start (up to about 8,000 samples); Echo Hiding is not. Resampling the audio (for example 44.1 to 48 kHz) changes the samples themselves and is not handled. Opus (the voice-message codec) was tested with Apple's encoder only: no method survived it, so a voice message sent through an app that re-encodes to Opus is unlikely to carry anything this tool can read.
- A payload made by other software (DeepSound, steghide, MP3Stego, a custom script) will usually not be found unless it happens to use plain LSB. Try the WAV Steganography Extractor or the MP3 Steganography Extractor.
- Only integer PCM WAV is supported. Floating-point WAV is rejected; re-export as 16-bit PCM. Maximum file size is 500 MB on desktop and 50 MB on mobile.
- Not tested: libopus and any real messaging app or streaming service, audio that was edited after hiding (trimming, fades, volume changes, noise reduction), resampling, payloads made by other steganography programs, and how long key derivation takes on phones.
- A found payload is not proof that someone hid it. Random audio contains random bits, and the interpreter's text and flag checks are heuristics.
Privacy
Your audio is decoded 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 are separate (cookieless page views, plus tool events only if you accept cookies) and record which options you choose (such as the mode), coarse facts about the file such as its type and size and duration ranges, and how long processing took — never the audio, the extracted data, a filename or a password. Your display mode preference is kept in this browser's localStorage.
Which Tool Next?
- Audio Steganography Hider — Create a file to test the extractor with
- Steganography Detector — Statistical check for hidden data
- WAV Steganography Extractor — DeepSound, RIFF chunks and spectrograms
- MP3 Steganography Extractor — Data hidden in an MP3's tags or frames
Frequently Asked Questions
How do I solve an audio steganography CTF challenge with this tool?
Upload the WAV and click Decode in Auto-Detect. It tries the seven most common LSB settings, Echo Hiding, Phase Coding and Spread Spectrum with seed 42, and highlights flags such as FLAG{}, picoCTF{} or HTB{}. If every attempt looks like noise, try Standard mode (other LSB bit depths and channels), then Forensic mode (bit order, Spread Spectrum seed). A challenge made with another tool (DeepSound, a spectrogram picture, a RIFF chunk) needs the WAV Steganography Extractor instead, and a hidden image or text drawn in the spectrogram needs a spectrogram viewer such as Audacity.
How do I find a hidden message in an audio file?
Upload your WAV or MP3 and click Decode. In Auto-Detect the tool runs ten attempts (listed under "What Auto-Detect Tries — and What It Does Not" above), interprets each result, and shows the most plausible one first with the others ranked below it. Any text, recognised file type or CTF flag is highlighted.
How do I find hidden messages in audio files online for free?
Use this tool. It runs in your browser at no cost, with no account and no server-side upload. Supported input is PCM WAV and MP3, up to 500 MB on desktop and 50 MB on mobile.
What audio formats does the decoder support?
Integer PCM WAV at 8, 16, 24 or 32 bits, and MP3. An MP3 is decoded to PCM by your browser before analysis. Floating-point WAV is not supported.
Is my audio file uploaded to a server?
No. Decoding runs in your browser in a Web Worker. The audio, the extracted data and any password are not sent to StegoToolkit. Usage analytics are separate and never include them (see Privacy below).
The output looks like garbage. What do I do?
Look at the interpretation. If it says the data is probably encrypted (it matches the toolkit's AES layout, or entropy is above 7.4 bits per byte), enter the password used by the encoder. If entropy is low and nothing is readable, try another LSB bit depth or channel in Standard mode (or the bit order in Forensic mode), or conclude there is no payload at that setting.
Can I extract files, not just text?
Yes. Extracted bytes are checked against signatures for PDF, ZIP, PNG, JPEG, GIF, MP3 (only with an ID3 tag), WAV/RIFF, ELF and Windows executables, and you get a download button with the matching extension. If the encoder stored the original filename, it is restored.
What is Auto-Detect mode?
It runs ten extraction attempts: LSB 1-bit both channels, 2-bit both, 1-bit left, 1-bit right, 3-bit both, 4-bit both, 1-bit both MSB-first, then Echo Hiding, Phase Coding and Spread Spectrum with seed 42. It does not try every LSB combination or any other seed.
Will it find a hidden CTF flag automatically?
It scans every result for FLAG{}, HTB{}, picoCTF{}, CTF{}, CHTB{}, THM{}, VULNHUB{}, rootme{} and a generic pattern of two to eight capital letters followed by braces. The generic pattern can match ordinary words, so verify a hit.
Which algorithms does the decoder support?
LSB (1–4 bit, left, right or both channels, either bit order), Echo Hiding, Phase Coding and Spread Spectrum, with optional AES-256-GCM decryption and Reed-Solomon repair (repair applies only to payloads hidden without a password). It reads files made by this tool's Hider and plain LSB payloads from other sources; it does not read DeepSound, steghide or MP3Stego payloads.
Will it work on an MP3?
Only partly. The MP3 is decoded to PCM first, which destroys LSB data. Phase Coding and Spread Spectrum payloads made by this tool can survive a conversion to MP3 in our tests (see the Hider page for the tested conditions), so those are worth trying. Data hidden in an MP3's own tags or frames needs the MP3 Steganography Extractor.
Related Tools
Audio Steganography Hider
Hide text or files in WAV audio (an MP3 is converted to WAV first) with AES-256 encryption, Reed-Solomon error correction, a capacity meter and an SNR quality report. 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.
MP3 Steganography Embedder
Hide secret text in MP3 files using ID3v2 tag, frame padding, or part2_3_length parity (MP3Stego-style). AES-256. No upload. 100% client-side.
MP3 Steganography Extractor
Extract hidden messages from MP3 files. Auto-detects ID3v2, frame padding, and parity methods (MP3Stego-style). CTF flag detection. No upload.