How to spectrogram viewer that never uploads your audio
- Step 1Confirm you're on Pro before handling sensitive files — The spectrogram viewer requires the Pro tier. Verify your plan first so you don't load a confidential file only to hit an upgrade gate. The gate blocks before any processing, so a free-tier attempt never even reads the file — but it's cleaner to confirm up front.
- Step 2Optionally go offline first — Because the analysis is fully client-side, you can load the page, then disconnect from the network, then drop your file. The spectrogram still renders. This is the strongest demonstration that the audio isn't being sent anywhere.
- Step 3Drop the confidential file in — MP3, WAV, FLAC, M4A, OGG, Opus, AIFF, WebM — anything the browser decodes. The file is read into memory in-page; it is not written to a server or to disk by the tool.
- Step 4Verify in DevTools (recommended for compliance) — Open DevTools → Network, then click Run. Confirm there is no upload of the audio. The only call you may see is the anonymous processed-file counter for signed-in users — inspect it and you'll find it carries no audio content.
- Step 5Choose FFT size and image dimensions — FFT 512–8192 (2048 default); width 320–3840, height 120–2160. For forensic detail use a larger FFT and a tall image so subtle bands are legible. The choices don't change the privacy model — everything still runs locally.
- Step 6Export and store under your own controls — Download the PNG (lossless, best for exhibits) or JPG. The file lands in your own download folder, under your retention and access policies — JAD keeps no copy of the audio or the image.
Where each step runs (the privacy model)
Every processing stage is client-side. This is the table to show a compliance reviewer.
| Stage | Where it runs | Leaves your device? |
|---|---|---|
| File read / decode | Browser (Web Audio decodeAudioData) | No |
| FFT (Cooley-Tukey) | Browser CPU, or your GPU via WebGPU | No |
| dB normalisation + colour mapping | Browser | No |
| Image render to canvas | Browser | No |
| Download of PNG/JPG | Your local download folder | No |
| Processed-file counter | JAD server (anonymous, signed-in only) | Counter only — no audio content |
Settings tuned for forensic / detailed inspection
Privacy doesn't change with settings — these are just the values that surface subtle detail in sensitive recordings.
| Goal | Suggested settings | Why |
|---|---|---|
| Spot a faint background tone | FFT 8192 · 1280 × 1080 · PNG | High frequency resolution + tall image reveals thin steady lines |
| Locate an edit/splice in time | FFT 512 · 1920 × 480 · PNG | Sharp time resolution shows discontinuities at the join |
| General confidential overview | FFT 2048 · 1280 × 480 · PNG | Balanced default; lossless for an exhibit |
| Compact image for a written report | FFT 2048 · 1280 × 480 · JPG 0.85 | Smaller file when fidelity for re-zoom isn't needed |
Cookbook
Workflows for analysing sensitive audio without it ever leaving your machine, plus how to demonstrate that to others.
Prove nothing is uploaded (the offline test)
The most convincing privacy demonstration: pull the network plug and watch it still work.
1. Load the spectrogram viewer page (let it cache) 2. Disconnect from the internet 3. Drop the confidential audio file 4. Click Run → the spectrogram renders fully offline 5. Reconnect only to download/share the image if needed
Network-tab evidence for a compliance log
When you must document that no upload occurred, capture the Network tab.
DevTools → Network → clear → click Run
Expected entries:
• (no request containing the audio bytes)
• optional: anonymous 'processed' counter
(signed-in users) — inspect payload: no audio
Save a HAR export as your evidence-of-no-upload record.Spotting an edit point in a recording
A splice often leaves a vertical discontinuity in the spectrogram. Use sharp time resolution.
Settings: FFT 512 · 1920 × 480 · PNG
Look for: an abrupt vertical break where the spectral
texture changes — a possible cut or paste.
Note: this is a visual lead, not proof; corroborate
with waveform inspection in /audio-tools/waveform-generator.Surfacing a faint covert tone
A low-level steady tone can hide under speech. Maximise frequency resolution and image height.
Settings: FFT 8192 · 1280 × 1080 · PNG
Look for: a thin, perfectly horizontal line that persists
across the whole recording regardless of speech.
Reading: estimate its frequency off the log axis; a steady
line independent of content is often an artefact
or interference, not natural audio.Producing a clean exhibit image
For a report or legal exhibit you want a watermark-free, reproducible PNG.
Settings: FFT 2048 · 1280 × 480 · PNG
Deliverable: yourfile-spectrum.png — no logo, no watermark.
Reproducibility: record FFT size + width + height in your
notes; the same inputs regenerate the same
image byte-for-byte.Edge cases and what actually happens
Free tier can't open the viewer
Pro requiredThe viewer is Pro-gated (minTier: "pro"). On free, the run is blocked before the file is processed — which, conveniently, means a free-tier attempt never reads or transmits the confidential audio either. Upgrade to Pro to actually generate the spectrogram.
Worried the counter leaks content
By designThe only server call is an anonymous 'one file processed' counter for signed-in users, used for dashboard stats. It contains no audio, no filename content, and you can inspect it in DevTools. Sign out, or opt out in account settings, and even that call disappears.
Need a guaranteed-offline run
SupportedLoad the page, disconnect from the network, then drop your file — the spectrogram still renders. The analysis has no live server dependency, so an air-gapped workflow is possible once the page is cached.
Codec won't decode in the browser
Decode errorDecoding relies on the browser's Web Audio decoder. A proprietary or DRM-protected file may fail. Convert it locally first — the sibling converters like wav-to-mp3 also run with no upload, so the chain stays private end to end.
Recording exceeds tier size/duration
Limit reachedPro allows 200 MB / 120 minutes; Pro-media and Developer allow 100 GB with unlimited duration. A long interview beyond your tier is blocked locally before processing. Trim only the relevant span with audio-trimmer (also no upload).
Edit point not visible at default FFT
By designSplices show best with sharp time resolution. If FFT 2048 hides a suspected cut, drop to 512 and widen the image. The spectrogram is a visual lead — corroborate any forensic conclusion with waveform and metadata analysis.
Silent passages render dark
ExpectedThe image is normalised to the file's loudest bin, so quiet sections sit near the bottom of the 80 dB range and appear deep purple. That faithfully represents low signal; it is not redaction or loss of data.
Stereo evidence summed to mono
By designThe viewer down-mixes to mono before the FFT. For analysis that must preserve which channel a sound came from, note that this single combined image cannot show it; pair with channel-level inspection elsewhere.
Very short exhibit clip
By designA clip shorter than the FFT window yields a single stretched analysis frame. Lower the FFT size (512/1024) to obtain multiple frames from a brief exhibit and a more interpretable image.
Reproducibility for an exhibit
DeterministicGiven the same file and the same FFT size, width, height and format, the viewer always renders an identical image. Record those parameters alongside the exhibit so the spectrogram can be regenerated and verified by another party.
Frequently asked questions
Is my audio really not uploaded?
Correct — the decode, FFT and image render all run in your browser. You can verify it: open DevTools → Network and click Run, and you'll see no request carrying the audio. For the strongest proof, disconnect from the network first; the spectrogram still renders.
What's the one server call I sometimes see?
For signed-in users there is an anonymous 'one file processed' counter for dashboard statistics. It carries no audio, no file content — just an increment. You can inspect it in DevTools, or opt out in account settings, or simply use it signed out.
Can I run this air-gapped?
Effectively yes for the analysis. Load the page while online so it caches, then disconnect and drop your file — the spectrogram renders with no live server dependency. You'd only reconnect to download or share the resulting image if you choose to.
Is the image watermarked or traceable?
No watermark, no embedded identifier from JAD. The PNG/JPG is plain spectrogram pixels. And because rendering is deterministic, the same inputs reproduce the same image, which is exactly what you want for an exhibit or audit trail.
Does this require the Pro plan?
Yes — the spectrogram viewer is gated at minTier: "pro". On the free tier the run is blocked before any file is read. That gate has a privacy upside: a free-tier attempt never processes the confidential audio at all.
Will the GPU path send my audio somewhere?
No. WebGPU runs compute shaders on your own graphics hardware, locally. It is a speed optimisation only and produces an image identical to the CPU path. Nothing about it transmits data off your machine.
Can I use this for forensic edit detection?
It's a useful visual lead — splices can show as discontinuities, and covert tones as steady horizontal lines. Use sharp time resolution (FFT 512) for cuts and high frequency resolution (FFT 8192) for tones. Treat findings as leads to corroborate with waveform and metadata analysis, not as standalone proof.
What formats can I analyse?
Any the browser decodes: MP3, WAV, FLAC, M4A/AAC, OGG, Opus, AIFF, WebM. If a confidential file uses an unusual or DRM-locked codec and won't decode, convert it locally first with a no-upload sibling like m4a-to-mp3 so the whole workflow stays on your device.
How large a recording can I load?
Pro handles 200 MB and 120 minutes per file; Pro-media and Developer go to 100 GB with unlimited duration. For a long interview, trim the relevant section with audio-trimmer (also no upload) before analysing.
Does it store anything on my disk?
Only what you explicitly download (the PNG/JPG), into your own download folder under your own controls. The tool doesn't write the audio or any temp copy to a server; in-browser processing keeps the source in memory only.
Why is part of my recording just dark purple?
That's a quiet passage. The image is normalised to the loudest bin, so low-level sections fall to the bottom of the 80 dB range and render purple. It's an accurate depiction of low signal, not missing or redacted data.
Can two parties reproduce the same spectrogram?
Yes. Share the source file plus the exact FFT size, width, height and format. Because rendering is deterministic, anyone re-running with those parameters gets a byte-identical image — ideal for independent verification of an exhibit.
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.