How to analyze audio frequencies online — free of upload
- Step 1Load the problem recording — Drop in the file you're diagnosing — MP3, WAV, FLAC, M4A, OGG, Opus, AIFF or WebM. It decodes in-browser and is down-mixed to mono for the analysis.
- Step 2Match the FFT size to the symptom — Hunting a steady hum or hiss (frequency-domain problems)? Use a large FFT (4096–8192) for fine frequency detail. Hunting clicks, pops, or edit points (time-domain)? Use a small FFT (512–1024). General triage: 2048.
- Step 3Render the spectrogram — Run the tool. Read the image: 20 Hz at the bottom, Nyquist at the top, time left to right, yellow loud, purple quiet. Listen to the recording while you scan the image to connect what you hear to what you see.
- Step 4Identify the symptom's signature — Thin horizontal line = tonal hum/whine. Even faint haze everywhere = broadband hiss. Bright low-mid band = mud. Bright bursts at 5–10 kHz on speech = sibilance. Hard ceiling near 16 kHz = lossy source.
- Step 5Read the offending frequency where relevant — For a hum or tone, estimate its frequency off the log axis. A line near the bottom is likely mains hum (50/60 Hz) or a harmonic. That number is what you'll notch.
- Step 6Apply the matching repair sibling — Hiss → ai-noise-reducer. Sibilance → de-esser. Tonal/EQ shaping → voice-eq. Then re-analyse with identical settings to confirm the fix.
Symptom → spectrogram signature → fix
The core diagnostic table. Identify the signature in your image, then jump to the matching repair tool.
| You hear | Looks like in the spectrogram | Fix with |
|---|---|---|
| Steady low buzz / hum | Thin horizontal line low in the image (often 50/60 Hz + harmonics) | Notch EQ in voice-eq |
| Constant hiss | Even faint haze across all heights, brightest in quiet gaps | ai-noise-reducer (RNNoise) |
| Muddy / boomy | Wide bright band ~150–500 Hz | Narrow cut in voice-eq |
| Harsh / sharp 's' sounds | Bright bursts at 5–10 kHz aligned with speech | de-esser |
| Dull / no sparkle | Hard dark ceiling ~16 kHz | Likely lossy source — can't be restored; re-source if possible |
| Clicks / pops | Bright vertical streaks at isolated moments | Spot in time (use small FFT), edit out in a DAW |
FFT size for the diagnosis you're making
Frequency-domain problems want a large FFT; time-domain problems want a small one.
| Diagnosis type | FFT size | Reason |
|---|---|---|
| Hum / tone frequency | 8192 | Finest frequency resolution to pin the exact line |
| Hiss / noise floor | 4096 | Clean view of broadband energy in the gaps |
| Mud / tonal balance | 2048–4096 | Balanced view of sustained bands |
| Clicks / edit points | 512–1024 | Sharp time resolution to localise the event |
Cookbook
Symptom-driven recipes: from what you hear to the exact settings and the sibling tool that fixes it.
Find the exact frequency of a mains hum
A steady buzz under dialogue is almost always mains hum or a harmonic. Maximise frequency resolution to read its line precisely.
Settings: FFT 8192 · 1280 × 1080 · PNG
Look for: a thin, perfectly horizontal line near the
bottom that never moves with the speech.
Read: its height on the log axis (≈50/60 Hz, or a
harmonic at 100/120/150/180 Hz).
Fix: notch that frequency in /audio-tools/voice-eq.Confirm a recording has hiss (not just a dull room)
Hiss is broadband; a dull room is a high-frequency rolloff. The spectrogram tells them apart.
Settings: FFT 4096 · 1280 × 720 · PNG
Hiss: even faint haze across the FULL height,
most visible in silent gaps between phrases.
Dull room: energy simply fades toward the top, no haze.
If haze: run /audio-tools/ai-noise-reducer, then re-analyse.Diagnose harshness as sibilance
If 's' and 't' sounds stab at you, look for brightness bursts in the upper-mid/high range timed to those consonants.
Settings: FFT 2048 · 1280 × 720 · PNG
Look at: 5–10 kHz (upper portion), watching for bright
bursts that line up with sibilant consonants.
Fix: /audio-tools/de-esser, then re-analyse to verify
the bursts are tamed.Catch a lossy source masquerading as lossless
Before you spend time 'adding air', check the top of the spectrum for the lossy brick wall.
Settings: FFT 4096 · 1920 × 1080 · PNG
Look at: the very top of the image.
Verdict: hard dark cutoff ~16 kHz = transcoded from
MP3/AAC; the air is gone for good. A gradual
fade to the top = genuinely full-band source.Verify a fix worked (before/after)
Because rendering is deterministic, analysing before and after with identical settings proves the repair.
1. Analyse raw: FFT 4096 · 1280 × 720 · PNG
2. Apply the matching sibling (denoise / de-ess / EQ)
3. Analyse the result with the SAME settings
Reading: the offending line/haze/band should be visibly
reduced in the second image.Edge cases and what actually happens
Analyzer requires Pro
Pro requiredThe frequency analyzer is Pro-gated (minTier: "pro"). On free, the run is blocked with an upgrade prompt and nothing is processed. Note that several of the repair siblings it recommends — like ai-noise-reducer (with a free preview quota) and waveform-generator — are available without Pro.
Hiss and dull-source look similar at low FFT
By designAt FFT 512 a noise floor and a high-frequency rolloff can both look like 'less brightness at the top'. Use FFT 4096+ so broadband hiss reveals itself as an even haze across the whole height, distinct from a simple top-end rolloff.
Hum line is faint at default settings
By designA low-level hum can be lost at FFT 2048. Switch to FFT 8192 and increase image height so the thin steady line stands out from the content. The normalisation to the file's peak can also bury a quiet hum under louder material — analyse a quiet gap if you can isolate one.
Can't recover the offending frequency as a number
Estimate onlyThere's no cursor or numeric readout — you estimate the frequency by eye against the log axis. For mains hum that's usually enough (50/60 Hz family). For precise notch tuning, sweep a narrow EQ in your DAW around the estimated value and listen.
Lossy ceiling can't be 'fixed' by analysis
ExpectedThe hard ~16 kHz cutoff of a lossy source is a diagnosis, not a defect the analyzer can repair. No tool can restore frequencies the lossy encoder discarded. The correct action is to re-source a higher-quality original if one exists.
One-channel problem averaged out
By designDown-mixing to mono can dilute a problem present in only one channel (e.g. hum on the left only). If you suspect a channel-specific issue, split with channel-splitter and analyse each channel separately.
Click/pop too brief to localise
By designTransient clicks need sharp time resolution. At FFT 8192 they smear and vanish; at FFT 512 they pop out as bright vertical streaks. Lower the FFT size when hunting time-domain artefacts.
Decode fails on an odd codec
Decode errorAnalysis depends on the browser decoding the file. If an exotic or DRM-protected file won't decode, convert it first with a no-upload sibling like opus-to-mp3 or m4a-to-mp3, then analyse.
Recording exceeds tier limits
Limit reachedPro caps at 200 MB / 120 min per file; Pro-media and Developer reach 100 GB with unlimited duration. For a long recording, isolate the problem section with audio-trimmer before analysing.
Quiet file makes everything look like noise
ExpectedBecause the image is normalised to the file's loudest bin, a very quiet recording amplifies the relative appearance of its noise floor. That's accurate — a low-level recording genuinely has a worse signal-to-noise ratio. Normalise or gain-stage the file first if you want a fairer view.
Frequently asked questions
How do I find what frequency a hum is at?
Analyse at FFT 8192 with a tall image and look for a thin, perfectly horizontal line low in the spectrogram that doesn't move with the audio. Estimate its frequency off the log axis — mains hum sits around 50 or 60 Hz with harmonics above. Then notch that frequency in voice-eq.
How can I tell hiss from a dull recording?
Hiss is broadband: an even faint haze across the whole height of the spectrogram, most obvious in the silent gaps. A dull recording just fades toward the top with no added haze. Analyse at FFT 4096 to see the difference clearly. Hiss is a job for ai-noise-reducer; dullness is a source limitation.
What does mud look like on the spectrogram?
A wide, bright, sustained band in roughly 150–500 Hz (the lower portion of the image). If that region dominates the brightness, the recording will sound boxy or muddy. Cut it narrowly in voice-eq and re-analyse to confirm.
Can I diagnose sibilance here?
Yes — sibilance shows as bursts of brightness in the 5–10 kHz range timed to 's' and 't' consonants. Analyse at FFT 2048 and watch the upper portion of the image as the speech plays. The fix is the de-esser sibling.
How do I know if my file came from a lossy source?
Look at the very top of the spectrogram. A hard, dark, ruler-straight cutoff around 16–17 kHz means the audio was MP3/AAC at some point. Genuinely full-band audio fades gradually toward Nyquist. No tool can restore the discarded highs — re-source if you can.
Does it really not upload my audio?
Correct — decode, FFT and rendering run in your browser. You can confirm in DevTools → Network that no audio is sent. The only server call is an anonymous processed-file counter for signed-in users, with no audio content.
Is this FFmpeg's spectrum filter?
No. It's a hand-written radix-2 Cooley-Tukey FFT in JavaScript (with an optional WebGPU path), Hann window, 75% overlap and a viridis colour map — implemented in audio-analysis.ts. Some older copy mentioned FFmpeg showspectrum; that's not what this tool uses.
Why does turning up FFT size help find a hum?
Larger FFT sizes give finer frequency resolution, so a thin hum line is drawn more precisely and is easier to separate from nearby content. The cost is blurrier time detail — fine for a steady hum, bad for a transient click.
Can I get the exact dB level of a problem frequency?
No — the colour scale is relative (normalised to the file's loudest bin over 80 dB) and there's no numeric readout. The spectrogram tells you *where* a problem is; for absolute levels use the loudness/true-peak measurement tools, and for precise notch depth use your DAW's EQ by ear.
What if the problem is only in one channel?
The analyzer down-mixes to mono, which can dilute a one-sided problem. Split the file with channel-splitter and analyse each channel separately when you suspect a channel-specific hum or noise.
Which formats can I analyse?
Anything the browser decodes: MP3, WAV, FLAC, M4A/AAC, OGG, Opus, AIFF, WebM. If a file refuses to decode, convert it first with a no-upload sibling like opus-to-mp3 and then analyse.
After I fix the problem, how do I prove it's gone?
Re-analyse the repaired file with the exact same FFT size and image dimensions. Because rendering is deterministic, the two spectrograms are directly comparable — the hum line, hiss haze, or sibilance bursts should be visibly reduced in the second image.
Privacy first
Every JAD Audio tool runs entirely in your browser via FFmpeg (WebAssembly) and RNNoise. Your audio files never leave your device — verified by zero outbound network requests during processing.