📊

Audio Spectrum Analyzer

Real-time FFT spectrum from your microphone with log / linear frequency axis, configurable FFT size, peak hold, A and C weighting, top-5 peak detection, and one-click PNG screenshot export. 100% browser-based — no audio leaves your device.

100% browser-based — your microphone audio never leaves your device. No recording, no upload.
⏸ FROZEN
Peak frequency
Peak magnitude
RMS level
Dynamic range
FFT bin width
Sample rate

Top 5 spectral peaks

# Frequency Magnitude Musical note
Start listening to detect peaks.

Controls

Tip: lower the smoothing to see fast transients; raise it for more stable peak readings. Use A-weighting for loudness-relevant displays, C-weighting for low-frequency analysis, Z for raw measurement.

About FFT Spectrum Analysis & Weighting

A real-time spectrum analyzer shows you how acoustic energy is distributed across frequency. Where a waveform shows you what your microphone hears as a function of time, a spectrum shows you what it hears as a function of frequency — useful for identifying tonal noise (mains hum, fan harmonics), checking instrument tuning, calibrating speakers, measuring background noise, or simply seeing your voice on screen.

How the FFT works (briefly)

The Fast Fourier Transform (FFT) decomposes a block of N time-domain samples into N/2 frequency-domain bins, each representing the energy in a narrow band of width sample_rate / N. Larger N → finer frequency resolution (e.g., 8192-bin FFT at 48 kHz → ~5.86 Hz per bin) but slower time response. Smaller N → coarser frequency resolution but quicker reaction. This calculator's default 8192 strikes a balance suitable for most music and speech work.

Logarithmic vs linear frequency axis

Human pitch perception is roughly logarithmic — each doubling of frequency is heard as one octave. A linear-axis spectrum crams the entire bass and mid range into the leftmost few percent of the screen while the unused 10–20 kHz region eats up most of the width. A logarithmic axis gives equal pixel-width to each octave, which is almost always what musicians, engineers, and acousticians want. Use linear only when you specifically need to see fine spacing of high-frequency tones (e.g., looking at sidebands around a 5 kHz carrier).

A-weighting and C-weighting

The human ear is not equally sensitive at all frequencies — at low and high extremes you need much more sound pressure to hear the same loudness. Standards bodies defined frequency-weighting filters that approximate this perception:

  • A-weighting heavily attenuates frequencies below ~500 Hz and above ~10 kHz, roughly matching the human ear's response at conversational levels (~40 phon). dB(A) is the standard for occupational noise exposure (OSHA, EU noise directive), environmental noise monitoring, and most "loudness" measurements.
  • C-weighting is nearly flat from 30 Hz to 8 kHz, only rolling off at the extremes. Used for high-level noise (impulse, peak), low-frequency analysis, and any case where the bass needs to be preserved.
  • Z-weighting (sometimes called "flat" or "linear") applies no filter — the raw FFT magnitude. Use this for technical work where you want unmodified physical levels.

Peak hold

Peak hold draws the highest value each frequency bin has reached recently, with a configurable decay. It makes brief transients visible (a quick handclap, a single drum hit) that would otherwise vanish before you could read them. "Infinite" hold never decays — useful for capturing the maximum extent of a piece. Slow decay is the standard "professional" PA-system peak indicator.

Frequently Asked Questions

What FFT size should I use?
For typical music or speech monitoring, 8192 is the sweet spot — about 5.86 Hz resolution at 48 kHz, updating at ~6 frames per second of fresh data. Use 16384 or 32768 for precise low-frequency work (instrument tuning, room modes below 100 Hz where you need sub-1 Hz resolution). Use 1024 or 2048 for fast time response — drum detection, percussion analysis, anything where transients matter more than frequency precision. Remember: doubling FFT size halves the bin width but also halves the time resolution.
Why does my display look much lower in dB than I expect?
The displayed dB values are dBFS — decibels relative to full scale of the audio API (digital 0 dBFS = 1.0 sample value). They are NOT absolute SPL (sound pressure level). 0 dBFS would only show if you saturated the microphone preamp. Typical conversational speech with a normal mic gain settles around −30 to −20 dBFS. To get true SPL you'd need a calibrated reference microphone and a known acoustic source — this is browser-side software, so it can't be calibrated for absolute level.
What does A-weighting actually do mathematically?
A-weighting applies a frequency-dependent gain to each bin matching the inverse of the human-ear sensitivity curve at ~40 phon (quiet listening). The transfer function is a 4-pole biquad approximation: R_A(f) = 12194² · f⁴ / ((f² + 20.6²)·√((f² + 107.7²)(f² + 737.9²))·(f² + 12194²)), with a +2.0 dB normalization at 1 kHz. Roughly, it cuts ~26 dB at 50 Hz and ~10 dB at 10 kHz. C-weighting is similar but uses only the two outer poles, giving a flat response in the middle and only attenuating the extreme low/high.
Why is the spectrum noisy when nothing is playing?
You're seeing the noise floor of your microphone, preamp, and ADC — typically −60 to −90 dBFS depending on hardware. Cheaper microphones and laptop mics floor around −60 dBFS (lots of visible hash). Studio condensers with cleaner preamps can floor below −90 dBFS (a flat green line). Raising the "Min dB" floor in the controls cuts the displayed noise visually but doesn't change the underlying signal. To genuinely reduce mic noise, use a better mic, get closer to the source, or post-process with noise reduction.
Can I use this for room acoustics measurement?
For a quick look at frequency response, yes — play a known test signal (pink noise from any tone generator, sweep, or music) and watch how the room shapes it. For real acoustic measurement you'd want a calibrated reference microphone, a known excitation source, and an impulse-response measurement (sweep or MLS). This tool shows the magnitude spectrum; it does not deconvolve room response from source response. For dedicated room-mode and RT60 work see the calculators in the Acoustic Physics category.
Does the screenshot export include the cursor readout and stats?
The PNG export captures the spectrum canvas only — the frequency axis, dB axis, grid, current spectrum, and peak-hold trace (if enabled). The cursor readout, top-peaks table, and stat cards are HTML and are not included. If you need them in the screenshot, take a regular screen capture (Win+Shift+S on Windows, Cmd+Shift+4 on Mac). The canvas-only PNG is meant for embedding in reports and documentation.
Can multiple browser tabs use the microphone at the same time?
On most operating systems, multiple browser tabs can each open their own microphone stream simultaneously (each gets its own copy of the same audio device). On some platforms (older iOS, certain Linux PulseAudio configurations) only one tab gets exclusive access. If a second tab can't start, close the first tab's mic stream or restart the browser. This analyzer always releases the microphone when you press Stop, navigate away, or close the tab (via the beforeunload event).