Skip to main content

Free Audio Spectrum Analyzer

Visualize audio frequencies in real time as bars, waveforms, or circular spectra. Works with audio files or live microphone input — runs in your browser.

Works offline once loaded

Drop a file here, or click to browse

MP3, WAV, OGG, M4A, FLAC, AAC, OPUS · processed on your device

or press Ctrl+V to paste from your clipboard

Browse files

Your files never leave your device. All processing happens locally in your browser.

—
Dominant frequency
—
Nearest note
—
Peak level
—
RMS level
Settings
Frequency scale

Sample rate: 44.1 kHz · Resolution: 5.4 Hz/bin · FFT 8192

All analysis runs in your browser using the Web Audio API — your audio is never uploaded.

Optimize for your platform

Common uses

  • Analyze Podcast AudioCheck podcast recordings for room noise, plosives, and sibilance using the spectrum.

How It Works

The Audio Spectrum Analyzer runs entirely in your browser using the Web Audio API's AnalyserNode, which computes a real-time FFT (Fast Fourier Transform) on audio data from a file or microphone. Every frame is drawn with hand-written Canvas 2D code — no visualization library is involved, and no audio leaves your device.

  1. 1
    Audio is decoded and routed
    When you load a file, the Web Audio API decodes it into an AudioBuffer and routes it through a MediaElementAudioSourceNode into an AnalyserNode. For microphone input, getUserMedia() captures the stream and feeds it through a MediaStreamAudioSourceNode instead — with echo cancellation, noise suppression, and auto-gain all disabled so you see the raw signal.
  2. 2
    AnalyserNode runs the FFT each frame
    On every animation frame (via requestAnimationFrame), the code calls getFloatFrequencyData() to read the current FFT magnitude spectrum in dBFS, and getFloatTimeDomainData() for the raw waveform samples. The FFT size is configurable from 2048 to 16384 bins, giving frequency resolution as fine as about 2.7 Hz/bin at 44.1 kHz.
  3. 3
    Canvas 2D renders the chosen view
    The Analyzer view maps FFT bins onto a log-frequency (20 Hz–20 kHz) X axis and a dBFS Y axis, draws the spectrum as a filled line, and overlays a decaying peak-hold trace. Dominant frequency is pinpointed using parabolic interpolation around the peak bin, then converted to the nearest equal-tempered musical note (A4=440 Hz) with cent deviation shown in the readout. The Spectrogram view scrolls the canvas one pixel left each frame and paints a new column using an inferno-style color ramp. The Artistic view uses byte-resolution frequency or time-domain data for bar, waveform, or circular decorative modes.
  4. 4
    Export via Canvas and MediaRecorder
    Saving a PNG calls canvas.toBlob() to encode the current frame. Recording a video uses canvas.captureStream(30) combined with an audio tap from a MediaStreamAudioDestinationNode, piped into a MediaRecorder producing WebM or MP4. WAV export hand-encodes a 16-bit PCM RIFF file from the AudioBuffer using a DataView — no external encoder.

Your audio file is decoded in the browser by the Web Audio API and never uploaded — the file bytes stay on your device throughout analysis and export.

Guide

Worked example

A 3-minute vocal take at 44.1 kHz, opened with the "Singing pitch" setup, uses an FFT size of 16384, which gives about 2.7 Hz per bin. The "Analyzer" view shows the loudest frequency, the nearest note and how many cents it is off. A held note near 440 Hz reads as A4, so you can see whether it sits sharp or flat. With FFT 2048 the same note would be measured in steps of about 21.5 Hz, which is too coarse for tuning.

Which settings to use, and the limits

  • Start from a Quick setup. "Singing pitch" uses fine detail and a note readout. "Mix check" uses a smooth spectrum with peak hold to judge tone balance. "Find the hum" draws a spectrogram where a mains hum shows as a steady horizontal line. "Lossless check" shows whether a low-bitrate MP3 cuts off sharply around 16 kHz.
  • Trade time detail for frequency detail with FFT size. FFT size can be 2048, 4096, 8192 or 16384. Larger sizes separate close frequencies, such as neighbouring notes, but react more slowly to quick changes. Smaller sizes follow fast sounds such as drums.
  • Use the spectrogram for the whole track. The spectrogram view renders the whole file without playing it. Hover for time, pitch and level, or tap to jump to that point. "Quietest shown" and "Loudest shown" set the colour range.
  • Pick the right export. "Save PNG" saves the plot at 2x size. "Record video" captures the live animation in real time. "Create MP4" renders it frame by frame as H.264 and AAC, up to 3 minutes on a phone and 10 minutes on a computer, in landscape, square or portrait sizes. Keep the tab open while it renders.
  • For the microphone, expect raw sound. Echo cancellation, noise suppression and automatic gain are switched off so the display shows what the microphone really hears. Use headphones if you play a backing track.

Common problems and how to fix them

The microphone does not start.
If access was refused, the browser will not ask again until you allow the microphone in the site settings. If no microphone is found, check that one is connected and enabled. If another app or tab is using it, close that and try again.
It says playback failed.
Browsers sometimes block sound until you tap. If a "Tap to play" prompt appears, tap it. Otherwise the file may be damaged, so try an MP3, WAV, M4A, OGG or FLAC copy.
Saving the audio as WAV fails.
Saving needs the whole file decoded in memory, and some files the player can play cannot be decoded. Re-export the file as MP3 or WAV, or choose a shorter clip with the start and end boxes.
Video recording or MP4 export does not work in my browser.
Recording needs MediaRecorder support and MP4 export needs H.264 and AAC encoding. A current Chrome, Edge or Safari works. Until then you can still save a PNG.

How it compares

The Analyzer view plots level against frequency at one moment and is the one to use for tuning and tone balance. The Spectrogram plots frequency against time for the whole file and is the one to use for spotting hum, noise or a bitrate cutoff that lasts longer than a moment.

Related Tools

Frequently Asked Questions