Skip to content

See what sound looks like

Every sound is a stack of pure tones. Play one of the samples, or whistle into your microphone, and watch this page pull the tones apart and paint them as they arrive.

↑ Pitch
quietloud
20 Hz
50 Hz
100 Hz
200 Hz
500 Hz
1 kHz
2 kHz
5 kHz
10 kHz
20 kHz
Time →
  1. The noteThe brightest line, at 196 Hz. That is the pitch you hear.

  2. Its overtonesEvenly spaced lines above it. They are why a guitar sounds like a guitar and not a flute.

  3. The fadeHigh overtones die first, which is why a note mellows as it rings.

One plucked guitar string. Time runs left to right, pitch bottom to top, and brighter means louder. Every pixel was computed by this page’s own transform.

The one idea worth taking away

You can have sharp timing or sharp pitch

One sound, analysed three ways: two steady notes close together, and a click every half second. The cyan bump above each picture is the window — how much sound goes into one column — drawn to the same time scale. A short window catches the clicks and blurs the notes into one band. A long one splits the notes and smears the clicks. It is the same mathematics as Heisenberg’s uncertainty principle, not a limitation of this page.

Sharp timing

512samples10.7ms window · 93.75Hz per bin

Each click is a thin vertical line. The two notes blur into one wide band.

20 Hz
50 Hz
200 Hz
500 Hz
2 kHz
5 kHz
20 kHz

Balanced

2048samples42.7ms window · 23.44Hz per bin

Clicks and notes are both readable, and neither is crisp.

20 Hz
50 Hz
200 Hz
500 Hz
2 kHz
5 kHz
20 kHz

Fine pitch

8192samples170.7ms window · 5.86Hz per bin

The two notes are two clean lines. Each click smears across its window.

20 Hz
50 Hz
200 Hz
500 Hz
2 kHz
5 kHz
20 kHz
Drag it yourself →

Three ways in

Look, build, then check

Two claims you can check

Private by construction, correct by test

0network requests after the page loads

4independent correctness checks on the transform

0audio or maths libraries. The FFT is written from scratch.

Your microphone never leaves this page

Once loaded, this page makes no network requests at all — no analytics, no error reporting, nothing. Sound is analysed inside this tab and thrown away. The sample sounds are generated by code rather than downloaded, and a test in the repository fails the build if a single network call is ever added.

Written by hand, on purpose

Browsers already ship a Fourier transform, and a spectrogram built on top of it takes ten lines and teaches nobody anything. The transform here is written from scratch — the same Cooley-Tukey algorithm from 1965 — and checked four independent ways: against the textbook definition, against a conservation law, by running it backwards, and against signals whose answers are known in advance.

Check the maths →