Audio Spectrogram Message Hider
Hide secret text messages inside WAV audio files as spectrogram frequency patterns. Each character is encoded as a unique frequency between 300-1060 Hz, appearing as visible horizontal bars when viewing the spectrogram. Includes live spectrogram visualization, WAV download, audio playback, and Goertzel-based decoding for extracting hidden messages from encoded audio files. All processing is local and private.
Hide secret messages inside audio files as spectrogram patterns. Encode text into specific audio frequencies that appear as visible horizontal bars when viewing the audio spectrogram. Decode spectrogram-encoded audio to extract hidden messages.
Frequency Character Mapping Table
| Char | Code | Freq (Hz) |
|---|---|---|
| ␣ | 32 | 300 |
| ! | 33 | 308 |
| " | 34 | 316 |
| # | 35 | 324 |
| $ | 36 | 332 |
| % | 37 | 340 |
| & | 38 | 348 |
| ' | 39 | 356 |
| ( | 40 | 364 |
| ) | 41 | 372 |
| * | 42 | 380 |
| + | 43 | 388 |
| , | 44 | 396 |
| - | 45 | 404 |
| . | 46 | 412 |
| / | 47 | 420 |
| 0 | 48 | 428 |
| 1 | 49 | 436 |
| 2 | 50 | 444 |
| 3 | 51 | 452 |
| 4 | 52 | 460 |
| 5 | 53 | 468 |
| 6 | 54 | 476 |
| 7 | 55 | 484 |
| 8 | 56 | 492 |
| 9 | 57 | 500 |
| : | 58 | 508 |
| ; | 59 | 516 |
| < | 60 | 524 |
| = | 61 | 532 |
| > | 62 | 540 |
| ? | 63 | 548 |
| @ | 64 | 556 |
| A | 65 | 564 |
| B | 66 | 572 |
| C | 67 | 580 |
| D | 68 | 588 |
| E | 69 | 596 |
| F | 70 | 604 |
| G | 71 | 612 |
| H | 72 | 620 |
| I | 73 | 628 |
| J | 74 | 636 |
| K | 75 | 644 |
| L | 76 | 652 |
| M | 77 | 660 |
| N | 78 | 668 |
| O | 79 | 676 |
| P | 80 | 684 |
| Q | 81 | 692 |
| R | 82 | 700 |
| S | 83 | 708 |
| T | 84 | 716 |
| U | 85 | 724 |
| V | 86 | 732 |
| W | 87 | 740 |
| X | 88 | 748 |
| Y | 89 | 756 |
| Z | 90 | 764 |
| [ | 91 | 772 |
| \ | 92 | 780 |
| ] | 93 | 788 |
| ^ | 94 | 796 |
| _ | 95 | 804 |
| ` | 96 | 812 |
| a | 97 | 820 |
| b | 98 | 828 |
| c | 99 | 836 |
| d | 100 | 844 |
| e | 101 | 852 |
| f | 102 | 860 |
| g | 103 | 868 |
| h | 104 | 876 |
| i | 105 | 884 |
| j | 106 | 892 |
| k | 107 | 900 |
| l | 108 | 908 |
| m | 109 | 916 |
| n | 110 | 924 |
| o | 111 | 932 |
| p | 112 | 940 |
| q | 113 | 948 |
| r | 114 | 956 |
| s | 115 | 964 |
| t | 116 | 972 |
| u | 117 | 980 |
| v | 118 | 988 |
| w | 119 | 996 |
| x | 120 | 1004 |
| y | 121 | 1012 |
| z | 122 | 1020 |
| { | 123 | 1028 |
| | | 124 | 1036 |
| } | 125 | 1044 |
| ~ | 126 | 1052 |
Features
Covert audio steganography using spectrogram encoding technology
Frequency-Based Encoding
Encodes each character of your message as a unique audio frequency between 300-1060 Hz. When the audio is viewed as a spectrogram, each character appears as a distinct horizontal bar at a specific frequency position. The encoding uses 8 Hz steps between characters for clear visual separation.
Live Spectrogram Visualization
Instantly generate a real-time spectrogram image showing how your message appears in the frequency domain. The spectrogram clearly displays start markers, character frequencies, and end markers as colorful horizontal bands against a dark background. Perfect for demonstrations and verification.
WAV Export & Bi-Directional Decoding
Export your encoded message as a standard WAV audio file playable in any media player. Upload previously encoded WAV files to decode the hidden message using Goertzel frequency detection with confidence scoring. Each decoded tone is displayed in a detailed results table.
100% Browser-Local Processing
All audio generation, spectrogram rendering, and frequency detection happens entirely in your browser using the Web Audio API and Canvas API. Your messages, audio files, and spectrograms never leave your device. No signup, no uploads, no server processing.
Use Cases
Practical applications for audio spectrogram steganography
Covert Communication
Hide secret messages inside seemingly innocent audio files. Encode sensitive information as spectrogram patterns that look like normal frequency content. Decode the message when needed using the Goertzel frequency analyzer. Messages are invisible during casual playback.
Audio Watermarking
Embed ownership identifiers or copyright information into audio files as spectrogram watermarks. Since the encoding uses specific frequencies within the audible range, the watermark persists even through format conversion and can be extracted from recordings.
Content Verification
Use spectrogram encoding to embed verification markers in published audio content. Verify authenticity by checking for the expected frequency patterns. Useful for detecting unauthorized distribution of proprietary audio content.
Educational Demonstrations
Teach the principles of audio steganography, frequency-domain analysis, and the Fourier transform in an engaging, visual way. Students can see the encoded message appear as horizontal bars in the spectrogram and understand how frequency-based encoding works.
Metadata Embedding
Embed small amounts of metadata (timestamps, coordinates, identifiers) directly into audio content as spectrogram patterns. Unlike traditional metadata tags, spectrogram-embedded data survives format changes and remains accessible even after audio processing.
Escape Room & Puzzle Design
Create audio-based puzzles for escape rooms, alternate reality games (ARGs), and treasure hunts. Players must view the spectrogram of an audio clue to reveal hidden text messages, adding an exciting technical dimension to puzzle design.
About Audio Spectrogram Steganography
Understanding how messages are hidden in audio frequency patterns
What is a Spectrogram?
A spectrogram is a visual representation of the spectrum of frequencies in an audio signal as they vary with time. The horizontal axis represents time, the vertical axis represents frequency, and the color or brightness represents amplitude (loudness) at each frequency. Spectrograms are commonly used in audio analysis, speech processing, music visualization, and surveillance to reveal patterns that are not audible to the human ear.
How Spectrogram Encoding Works
Each printable ASCII character is assigned a unique frequency between 300-1060 Hz with 8 Hz spacing. The message is encoded as a sequence of sine wave tones — each tone plays at the frequency corresponding to its character for approximately 0.4 seconds. A start marker (2000 Hz) and end marker (2500 Hz) frame the message. When viewed as a spectrogram, the message appears as a series of horizontal bars at different frequency levels, creating a readable pattern.
The Goertzel Algorithm for Decoding
Our decoder uses the Goertzel algorithm, a digital signal processing technique that efficiently detects specific frequencies in audio signals. Unlike the full Fast Fourier Transform (FFT) which computes all frequencies, Goertzel targets specific frequency bins, making it faster and more accurate for detecting the discrete frequency tones used in our encoding scheme. Each detected frequency is mapped back to its corresponding character.
Practical Considerations
Spectrogram-encoded messages are robust enough to survive MP3 compression at moderate bitrates, though higher compression may affect detection accuracy. The encoding uses frequencies in the audible range (300-2500 Hz), so the tones are audible during playback as short beeps. The message capacity depends on the audio duration — each character requires approximately 0.5 seconds (0.4s tone + 0.1s padding), so a 30-second audio clip can encode roughly 60 characters.
Related Obfuscator Tools
JavaScript Number Obfuscator
Obfuscate numeric literals in JavaScript code by converting them to math expressions, hex, octal, binary, and bitwise tricks.
JavaScript All-In-One Obfuscator
Combine multiple JS obfuscation techniques - variable renaming, string encoding, dead code, numbers, and control flow.
JavaScript Variable Name Deobfuscator
Analyze obfuscated JavaScript variable, function, and class names and suggest meaningful names based on usage context.
Java Control Flow Flattener
Flatten Java control flow into a switch-based dispatcher for obfuscation. Configurable depth with size analysis.
JavaScript Domain Lock Obfuscator
Add domain-locking to your JavaScript code with runtime hostname checks, encrypted allowed domain lists, and custom blocking.
CSS Variable Name Obfuscator
Rename CSS custom properties (--variable) and update all var() references across CSS, HTML, and JS. Shows full rename mapping.
Pixel Shuffle Image Obfuscator
Scramble and descramble images using seed-based pixel permutation. Fisher-Yates shuffle with Mulberry32 PRNG, lossless PNG output.
Image Noise Layer Obfuscator
Add controlled Gaussian, Uniform, or Salt & Pepper noise to obscure image details. Seed-based deterministic reversal, adjustable intensity.
Rust Integer/Literal Obfuscator
Obfuscate Rust numeric literals using hex, octal, binary, math expressions, bitwise tricks, and arithmetic combos. Supports i32, u64, f32, usize.
.NET String Encryptor/Obfuscator
Obfuscate C# string literals using hex escapes, Convert.FromBase64String, XOR encryption, char arrays, StringBuilder, and Unicode escapes.
.NET Integer/Number Obfuscator
Obfuscate .NET numeric literals using hex, binary, bitwise, arithmetic, Convert.ToInt32/64, type suffixes, and unchecked expressions. Supports int, long, float, decimal.
Swift String Obfuscator
Obfuscate Swift string literals using hex byte arrays, Data + Base64 encoding, XOR Data, Unicode scalars, and split concatenation. Copy generated code.
Bash Variable Name Obfuscator
Replace Bash variable names with short obfuscated names. Preserves builtins, special variables ($?, $@, $#), and environment variables (PATH, HOME). Complete mapping table.
Dart String Obfuscator
Obfuscate Dart string literals using hex escapes, String.fromCharCodes, Base64 decode, XOR encryption, split concatenation, and StringBuffer + writeCharCode calls.
Frequently Asked Questions
Common questions about audio spectrogram steganography and the encoding process
Audio spectrogram steganography is the practice of hiding messages inside audio files by encoding them as specific frequency patterns. When the audio is viewed as a spectrogram (a visual representation of frequencies over time), the hidden message appears as horizontal bars at different frequency positions. Unlike traditional audio steganography (LSB encoding), spectrogram messages are visible to anyone who looks at the spectrogram but are not obvious during regular audio playback.
Each printable ASCII character (codes 32-126) is mapped to a unique frequency between 300 Hz and 1060 Hz. The mapping is linear: the space character maps to 300 Hz, exclamation mark to 308 Hz, and so on up to tilde (~) at 1060 Hz. The 8 Hz spacing between characters ensures clear separation in the spectrogram, making each character's frequency visually distinct as a separate horizontal bar.
The decoder is designed to extract messages encoded with our specific frequency encoding scheme (300-1060 Hz range, 8 Hz spacing, with 2000 Hz start marker and 2500 Hz end marker). Random audio files will not contain these specific frequency patterns and will likely return no message or gibberish. The decoder provides a confidence score for each detected tone to help assess reliability.
Partially. Our WAV-based encoding uses frequencies in the audible range, and moderate MP3 compression (192 kbps and above) may preserve enough of the frequency content for successful decoding. However, heavy compression, downsampling, or aggressive noise reduction can distort the frequency patterns and reduce decoding accuracy. For best results, use WAV format for both encoding and decoding.
Each character requires approximately 0.5 seconds (0.4 seconds of tone + 0.1 seconds of padding). A message of 20 characters produces a 10-second audio file. There is no hard limit on message length, but very long messages produce correspondingly long audio files. Short messages (under 100 characters) work best for clear spectrogram readability.
The encoding uses frequencies in the 300-2500 Hz range, which is well within the human hearing range (20-20000 Hz). Each character is represented by a 0.4-second sine wave tone, so the audio will sound like a sequence of beeps or whistles at different pitches. This is expected behavior — the message is meant to be visible in the spectrogram, not inaudible.
The Goertzel algorithm is a digital signal processing technique that efficiently detects the presence of specific frequencies in an audio signal. Unlike the FFT (Fast Fourier Transform) which computes the entire frequency spectrum, Goertzel can target specific frequencies of interest, making it faster and more accurate for detecting the discrete character frequencies used in our encoding scheme.
While this tool can encode and decode messages in audio spectrograms, it is designed primarily for educational and demonstrational purposes. The encoding pattern is deterministic and easily recognizable once the method is known. For serious security applications, consider using established encryption tools combined with more sophisticated steganography techniques.
Yes, completely. All processing — audio generation, spectrogram rendering, and frequency detection — happens entirely in your browser using JavaScript, the Web Audio API, and Canvas API. Your messages, audio files, and generated spectrograms are never sent to any server. No account, signup, or internet connection is required beyond loading the page.