AUD · Audio tools

Spectrogram

SpectrogramHz / time

Shareable link

Settings are written to the URL as you change them. Nothing differs from the defaults yet.

A spectrogram answers a question a level meter cannot: not how loud, but what, and when. Every column is one short Fourier transform of the signal, stacked left to right, so a sustained note becomes a horizontal line and a snare hit becomes a vertical one.

Reading the plot

Bright means loud. The default palette runs from the page background through the category tint to white, so the loudest content is the whitest.

A voice shows a stack of evenly spaced horizontal lines, the harmonics of the fundamental, moving together as the pitch changes. A cymbal is a broad wash across the top. Mains hum is a straight line at 50 or 60 Hz that never moves, with weaker lines at each multiple.

FFT size is a trade, not a quality setting

The transform cannot resolve time and frequency at once. A 512-point window at 48 kHz covers about 10 ms, so it places an event precisely and lumps every pitch into 94 Hz-wide bins. An 8192-point window covers 170 ms and resolves 6 Hz, which separates two close notes but smears the moment they start.

Pick by the question. Finding the exact frequency of a resonance wants a large window. Finding the sample where a click happened wants a small one.

Log vs linear frequency

The linear axis gives every hertz the same width, so the top octave takes half the picture and everything musical is crushed into the bottom strip. It is the right choice when you care about the top of the band, such as spotting an encoder’s low-pass.

The log axis gives every octave the same width, which is how pitch is heard. Use it for music, speech, and anything where the bass matters.

The floor

Everything below the floor is drawn as background. Raising it toward -30 dB strips away room tone and leaves only the strong content; dropping it toward -110 dB reveals the noise floor, the dither, and whatever else is hiding down there.

The floor is a display control, not a measurement. Moving it redraws the same data rather than reading the file again.

Long files

Columns are pooled as they arrive. When the column budget fills, neighbouring columns are merged and the pooling doubles, so a 45-minute file uses the same memory as a 45-second one and simply reads coarser in time. The column width is printed under the plot.

Pooling keeps the loudest frame in each column rather than the average, so a single click in an hour of silence still shows up as a vertical line.

Frequently Asked Questions

Time runs left to right, frequency runs bottom to top, and brightness is level. It reads WAV, MP3, M4A, AAC, Ogg, Opus, FLAC, AIFF, and WebM audio.

The spectrum analyzer averages the whole file into one curve, so a tone that appears for two seconds is buried under everything around it. A spectrogram keeps the time axis, which is what shows you when something happened rather than only that it did.

512 separates events in time and blurs pitch. 8192 does the reverse. 2048 is the usual compromise for music. For finding a click or a dropout, go small; for reading the exact frequency of a whine, go large.

The whole file is pooled into a fixed number of columns, so memory stays flat whether the source is 30 seconds or 3 hours. Each column takes the loudest frame it covers, so a short transient survives the pooling instead of being averaged out.

1024 pixels tall and up to 4096 wide, scaled from the number of columns the analysis produced. It is drawn by the same code as the on-screen plot, at the settings currently selected.

Explore Our Tools

Browse all tools