StegoToolkit

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.

WAV + MP3 input
Auto-detect (10 attempts)
CTF flag detect
Runs 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)

  1. Upload the WAV or MP3 file you suspect contains hidden data
  2. Pick a mode: Quick (one click) → Standard (choose bit depth) → Forensic (raw analysis)
  3. Enter a password if the payload was encrypted with the encoder
  4. Click Decode — the extracted message, file, or hex dump appears below

Audio Steganography Decoding — What This Tool Handles

MethodTechniqueWhen to UseBest For
LSB (1–4 bit)Reads the lowest 1–4 bits of each sample, left, right or both channels, LSB- or MSB-firstAuto-Detect tries 7 common presets; use Standard or Forensic mode for any other combinationCTF flags and short text hidden in a WAV
Phase CodingReads 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 blockTried automatically. Needs no settingsMessages that went through MP3/AAC/Vorbis
Spread SpectrumCorrelates the audio with a seeded pseudo-random pattern; tries each spreading factor and accepts the one whose 8-byte header (stored factor, length, checksum) agreesAuto-Detect uses seed 42 and its one Spread Spectrum attempt searches every spreading factor; a different seed must be entered in Forensic modeMessages that went through MP3/AAC/Vorbis
Echo HidingCompares cepstral peaks at 50 and 100 samples in each 1024-sample blockTried automatically. Weak on speech and musicFiles made with this tool's Echo option
AES-256-GCMDecrypts a payload encrypted by the encoder (PBKDF2-HMAC-SHA-256, 100,000 iterations)Needed when the extracted data looks like random bytesEncrypted messages
Reed-SolomonRepairs up to 5, 10 or 15 corrupt bytes per block for RS-10, RS-20, RS-30Choose 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

ResultWhat it meansWhat to do
Plain Text ExtractedEntropy 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 differentlyRead it. If it looks truncated or odd, try another bit depth
Recognised File SignatureThe 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 validatedUse 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 DetectedThe bytes match this toolkit's encrypted-payload layout, or their entropy exceeds 7.4 bits per byte. High entropy alone does not prove encryptionTry the encoder's password when the payload structure supports it. A wrong one fails authentication and is reported in an amber note
Binary Payload ExtractedNot text, no known signature, in-between entropyInspect the hex dump; it may be a custom or headerless format
No Recognizable PayloadNothing extracted, or low-entropy mostly non-printable bytes, at this settingTry another setting or a different tool
CTF Flag DetectedThe text matches a CTF flag patternVerify it; generic patterns can match ordinary words in braces
Amber note about your passwordA 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 allCheck 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 AttemptsNo valid header for seed 42The 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?

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