How to audio spectrum analyzer — free of upload, watermark & sign-up friction
- Step 1Open the analyzer and confirm your plan — The spectrum analyzer is a Pro-plan tool. If you are on the free tier the Run action is blocked with an upgrade prompt — nothing uploads and no partial image is produced. For free, no-upload analysis on the same engine, the sibling waveform-generator and bpm-finder are free.
- Step 2Drop in any audio file the browser can decode — MP3, WAV, FLAC, M4A/AAC, OGG, Opus, AIFF and WebM all work — decoding goes through the Web Audio
decodeAudioDatapath. Stereo files are down-mixed to mono before the FFT, so the spectrogram shows a single combined channel. - Step 3Choose an FFT size for your material — Pick from 512, 1024, 2048 (default), 4096, 8192. Larger sizes give finer frequency resolution but blur fast transients; smaller sizes sharpen transients but smear pitch. The chosen value is rounded up to the nearest power of two internally, so the five presets pass through unchanged.
- Step 4Set the output image size — Width accepts 320–3840 (step 80, default 1280); height accepts 120–2160 (step 40, default 480). Width compresses the whole file across the X axis (time), height stretches the 20 Hz→Nyquist log-frequency axis on Y. Wider = more time detail; taller = easier to read pitch.
- Step 5Pick PNG or JPG — PNG is lossless and ignores the quality slider — best for archival or zooming in. JPG exposes a 0–1 quality slider (default 0.9) and produces a much smaller file for sharing. There is no SVG or PDF export for the spectrogram.
- Step 6Run and download — Click Run; the spectrogram renders to a
<canvas>and is offered as a download namedyourfile-spectrum.png(or.jpg). The metrics panel reports input bytes, output bytes, render time, and whether the GPU path ran. Nothing is saved server-side except an anonymous "one file processed" counter for signed-in dashboard stats.
What you can actually change (verified controls)
The complete option set for the spectrum analyzer, read from the tool client and processor. Anything not in this table is fixed — do not expect controls that are not here.
| Control | Range / values | Default | Effect |
|---|---|---|---|
| FFT size | 512 / 1024 / 2048 / 4096 / 8192 (dropdown) | 2048 | Frequency-vs-time resolution trade-off; rounded up to nearest power of two internally |
| Width (px) | 320–3840, step 80 | 1280 | X axis = time, compressed to fit; more width = finer time detail |
| Height (px) | 120–2160, step 40 | 480 | Y axis = log frequency 20 Hz→Nyquist; more height = easier-to-read pitch |
| Image format | PNG (lossless) or JPG | PNG | PNG ignores quality; JPG honours it |
| JPG quality | 0–1 slider (JPG only) | 0.9 | Lower = smaller file, more compression artefacts; clamped to [0,1] |
Fixed engine behaviour (not user-adjustable)
These are baked into the FFT pipeline. They are listed so you can interpret the image correctly — none of them is a UI option.
| Property | Value | Why it matters |
|---|---|---|
| Window function | Hann (hardcoded) | No rectangular/Blackman choice; Hann is a good general-purpose default for spectral leakage |
| Frame overlap | 75% (hop = FFT size ÷ 4) | Smooth time axis without an exposed overlap control |
| Frequency axis | Logarithmic, 20 Hz → sample-rate ÷ 2 | Bass detail is expanded; top of image is the highest frequency |
| Dynamic range | 80 dB, normalised to the file's global peak | Yellow = loudest bin in this file; deep purple = 80 dB below it |
| Channels | Down-mixed to mono before FFT | One combined spectrogram, not separate L/R panes |
| Output type | Image only (PNG/JPG) | No CSV/JSON frequency table is produced despite older marketing copy |
Cookbook
Concrete, reproducible recipes for getting a clean, shareable spectrogram out of the free-of-upload analyzer. Each shows the settings and what the resulting image looks like.
Quick balanced overview of a 3-minute track
The default settings are tuned for exactly this: a single readable image of a whole song with no fiddling. 1280×480 is wide enough to see structure and tall enough to read the bass-to-air spread.
File: song.mp3 (3:12, 44.1 kHz stereo)
Settings: FFT 2048 · 1280 × 480 · PNG
Result: song-spectrum.png, ~120–180 KB
X = 0:00 → 3:12 (compressed)
Y = 20 Hz (bottom) → 22,050 Hz (top, log)
Yellow streaks = loudest content; purple = quiet/noise floorSmaller JPG to attach to a support ticket
PNG is lossless but can be a few hundred KB at large sizes. Switch to JPG with quality ~0.8 when you just need to show someone a problem frequency in an email or forum thread.
Settings: FFT 2048 · 1280 × 480 · JPG · quality 0.8
Result: song-spectrum.jpg, typically 40–70 KB
Note: PNG ignores the quality slider entirely — only JPG
responds to it. Quality is clamped to [0,1].High-resolution archival render
For a deliverable you may zoom into later, push width and height up. The render stays full quality with no watermark or downscale on the Pro plan.
Settings: FFT 4096 · 3840 × 1080 · PNG
Result: ultra-wide, print-friendly spectrogram
Trade-off: larger FFT (4096) sharpens harmonic lines but
slightly blurs fast drum transients vs 2048.Confirming the file never leaves the tab
Because the entire pipeline is in-browser, you can verify privacy yourself. This is the whole point of the 'free of upload' framing.
1. Open browser DevTools → Network tab 2. Drop the audio file and click Run 3. Observe: no XHR/fetch carrying the audio bytes 4. The only network call is the anonymous 'file processed' counter (signed-in users) — no audio content is transmitted.
Pairing with the free siblings when you don't have Pro
If you are on the free tier, the spectrum analyzer won't run — but two related visual tools on the same in-browser engine are free.
Free, no-upload alternatives: Amplitude over time → /audio-tools/waveform-generator Tempo (BPM) detection → /audio-tools/bpm-finder Both run the same Web-Audio engine, no upload, no Pro plan required.
Edge cases and what actually happens
Free-tier user clicks Run
Pro requiredThe analyzer is registered at minTier: "pro". On the free tier the run is blocked before any work happens — no upload, no partial render. The UI shows an upgrade overlay. This is intentional: "free" in this page's title means free of upload, watermark and tracking, not free of a subscription. The sibling waveform-generator and bpm-finder are genuinely free.
Clip shorter than the FFT window
By designIf the file has fewer samples than the FFT size (e.g. a 20 ms blip at FFT 8192), the engine clamps to a single analysis frame. You still get an image, but it is one smeared column stretched across the width. Drop the FFT size to 512 or 1024 for very short clips to get more than one frame.
Completely silent file
ExpectedThe image is normalised to the file's global peak magnitude. A truly silent file has a tiny global max, so the whole spectrogram renders near the bottom of the 80 dB range — mostly deep purple. That is correct behaviour, not a bug: there is no signal to show.
Browser can't decode the codec
Decode errorDecoding relies on the browser's decodeAudioData. Common formats (MP3, WAV, FLAC, M4A, OGG, Opus) decode everywhere; exotic or DRM-protected files may fail with a decode error. Re-export to WAV or MP3 first using a sibling converter such as m4a-to-mp3.
Very large image dimensions
CappedWidth is capped at 3840 and height at 2160 by the input controls. Beyond those, browsers also impose their own maximum canvas dimensions; extreme sizes on low-memory devices can fail the canvas allocation. Stay within the slider ranges and you are safe.
File over the tier size or duration limit
Limit reachedPro allows 200 MB and 120 minutes per file. A longer or larger file is blocked before processing. Pro-media and Developer raise this to 100 GB with unlimited duration. Trim first with audio-trimmer if you only need a section analysed.
Expecting a numeric frequency table
Image onlyOlder copy mentioned 'copy frequency data as JSON'. The shipped tool produces an image (PNG/JPG) only — there is no per-bin numeric export. If you need numbers, read peaks visually off the log-frequency axis, or use the BPM JSON report from bpm-finder for tempo data.
Stereo content looks merged
By designChannels are down-mixed to mono before the FFT, so a hard-panned element shows in the same spectrogram as everything else. There is no separate left/right spectrogram. This keeps the image readable; for stereo field work use a DAW analyzer.
GPU unavailable or fails
SupportedIf WebGPU is missing or the GPU FFT path fails its sanity check (size outside [2, 8192], etc.), the engine silently falls back to the identical CPU FFT. The image is the same; only the speed and the 'GPU accelerated' metric flag differ.
Re-running with the same settings
DeterministicSame file, same FFT size, same width/height and format always yields the same spectrogram. There is no random colour jitter or timestamp baked in, so two renders are byte-comparable — useful for documenting that an edit changed the spectrum.
Frequently asked questions
Is the spectrum analyzer really free?
It is free of upload, free of watermarks, free of tracking, and free of any per-image export charge — but the tool itself is gated at the Pro plan (minTier: "pro"). On the free tier the Run button is blocked with an upgrade prompt and nothing is processed. If you want genuinely no-subscription, no-upload visual tools on the same browser engine, the waveform-generator and bpm-finder are free.
Does my audio get uploaded anywhere?
No. The FFT, dB normalisation and image rendering all run in your browser tab via the in-page renderSpectrogram engine. You can confirm it yourself in DevTools → Network: no request carries the audio bytes. The only server call is an anonymous 'one file processed' counter for signed-in dashboard stats, which contains no audio content.
Is there a watermark on the image?
No. The downloaded PNG or JPG is pure spectrogram pixels — no logo, no banner, no overlay. It is ready to paste into a bug report, attach to a client email, or print.
What FFT size should I leave it on?
2048 is the default and the right answer for most music and speech. Go to 4096 or 8192 when you need to separate close harmonics (detailed tonal analysis), and drop to 512 or 1024 for percussive or transient-heavy material where time precision matters more than pitch precision.
PNG or JPG — which should I pick?
PNG for archival or anything you might zoom into; it is lossless and ignores the quality slider. JPG for sharing, where a 40–70 KB file beats a few-hundred-KB PNG; set the quality slider (default 0.9) lower if you need it even smaller.
Can I export the raw frequency numbers as CSV or JSON?
No. The spectrum analyzer outputs an image only. There is no per-bin numeric table export despite older marketing copy mentioning one. For a machine-readable result from this family, the bpm-finder returns a JSON report (tempo, confidence, candidates).
What formats can I drop in?
Anything your browser can decode via Web Audio: MP3, WAV, FLAC, M4A/AAC, OGG, Opus, AIFF and WebM are all handled. If a file refuses to decode (exotic or DRM-protected codec), convert it to WAV or MP3 first with a sibling converter like m4a-to-mp3.
Why is the bottom of the image stretched out?
The frequency axis is logarithmic, so the low end (bass) gets more vertical space and the high end is compressed near the top. This matches how we hear pitch and makes bass problems easier to read than a linear axis would.
What do the colours mean?
It is a viridis colour map over an 80 dB dynamic range, normalised to the loudest bin in your file. Bright yellow is the loudest content; teal and blue are progressively quieter; deep purple is the noise floor 80 dB down. Colour is relative to this file, not an absolute dB scale.
How big a file can I analyse?
On Pro, up to 200 MB and 120 minutes per file. Pro-media and Developer raise that to 100 GB with unlimited duration. If you only need part of a long recording, trim it first with audio-trimmer.
Does it show left and right channels separately?
No. Stereo files are down-mixed to mono before the FFT, so you get a single combined spectrogram. This keeps the image clean and readable; for stereo-field analysis use a DAW plugin.
Is the GPU required?
No. WebGPU is used to speed up the FFT when available, but if it is missing or fails its checks the tool falls back to a CPU FFT that produces an identical image. You will not see a quality difference — only a speed difference and a flag in the metrics panel.
Can I automate spectrogram generation?
Yes, on paid tiers. The audio tools can run through the local @jadapps/runner so a script can feed files and collect images on your own machine — still with no upload of audio to JAD's servers. Pair the runner once, then drive the spectrum-analyzer tool from your pipeline.
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.