Four passes through a freshly loaded file
A first look at a new file goes faster in a fixed order. Each pass uses one part of the page and answers one question about the audio.
- Pass 1Shape. Press Fit and read the whole file at once. Intros, choruses, drops, and long pauses show as changes in height. A podcast looks like even blocks with short breaks where one person stops and the next starts.
- Pass 2Readings. Compare Sample peak with RMS level. A crest factor under 8 dB means heavy limiting. A DC offset above 0.5% points to a hardware fault to fix before any other edit.
- Pass 3Clipped spots. Click the first row in the list. The view zooms to the spot with a margin on both sides. Keep pressing + until single samples show as dots. Flat runs of red dots along the top or bottom edge confirm digital clipping.
- Pass 4Silent gaps. Switch Scale to dB to see the noise floor between phrases, then set the gap threshold a few dB above the floor. The list now holds the pauses worth trimming, each one a click away.
Peak and RMS: the two shades in every column
Zoomed all the way out, one pixel column of a 3-minute song covers about 7,000 samples. The outer shape marks the highest and lowest of those samples. This is the sample peak. The lighter inner shape is RMS, the root-mean-square of the same samples, which tracks how loud the passage feels.
The distance between peak and RMS, in dB, is the crest factor. A small number means heavy compression or limiting. Rough ranges from real recordings:
| Material | Crest factor | What the waveform looks like |
|---|---|---|
| Steady sine tone | 3 dB | A solid block, both shades nearly touching |
| Loud pop or EDM master | 6 to 9 dB | A brick with flat edges near full scale |
| Podcast voice after compression | 10 to 14 dB | Even shapes per phrase, short gaps between |
| Raw speech, solo acoustic guitar | 14 to 20 dB | Tall thin spikes over a low body |
| Orchestral or film score | 18 dB and up | Long quiet stretches, rare tall peaks |
The RMS reading follows the plain math, so a full-scale sine reads -3.0 dBFS. Meters built on the AES17 convention add 3 dB and show the same sine at 0. A 3 dB disagreement with one of those meters comes from the convention, not a fault in either tool.
Linear or dB scale
Linear
The default in Audacity, Premiere Pro, and most editors. Loud passages fill the lane. Anything under about -30 dBFS shrinks to a hairline. Pick linear to judge clipping, overall loudness, and where a song builds.
dB
The lane spans 0 down to -60 dBFS, so quiet detail gets room. Room tone, breaths, reverb tails, and fade-outs become visible. Pick dB to check a noise floor or to place an edit inside true silence.
How the clipping finder decides
A single sample at full scale is a normalized peak, not damage. The finder flags a run of three or more samples in a row at or above -0.01 dBFS, the same start rule Audacity's Find Clipping uses by default. Runs less than 50 ms apart merge into one spot, so a clipped bass note lists once instead of once per wave cycle.
Lossy files add a twist. MP3 and AAC decoders rebuild the wave from frequency data, and the rebuilt peaks overshoot. A master limited to -0.1 dBFS often decodes with samples above 1.0. Those show in the Clipping reading as samples over 0 dBFS. If a master clips only after encoding, set the limiter ceiling to -1 dBTP before export.
Clipped audio stays clipped. The finder shows where to look. Repair needs a declipper such as iZotope RX or Audacity's Clip Fix effect, or a fresh export from the source session.
Tuning the silence finder for podcast edits
The finder measures RMS in 10 ms windows, keeps the louder channel, and lists every stretch where all windows stay under the threshold for at least the minimum length. Defaults are -50 dBFS and 0.5 seconds.
- Noisy home room. Fan and traffic noise often sits between -55 and -45 dBFS. If obvious pauses go unlisted, raise the threshold to -42.
- Treated booth. The floor sits near -65 dBFS. Drop the threshold to -58 to keep soft breaths out of the gap list.
- Dead air only. Set the minimum length to 1.5 seconds. You get the long pauses worth cutting and skip the natural gaps between sentences.
- Every pause. Set 0.25 seconds to map pacing across a whole interview.
Click a gap to zoom there and park the playhead at its start. The visualizer finds gaps but cuts nothing. Copy the times into your editor.
Exporting a picture or the peak data
PNG and SVG copy the current channel, scale, style, and color. Pick the whole file or only the zoomed view. SVG stays sharp at any size, which suits podcast cover art, video thumbnails, and print. Tick Transparent to drop the waveform onto a design without a background box.
Peaks JSON for web players
Decoding a whole MP3 in a visitor's browser to draw one waveform is slow on phones and burns data. Players skip the work when you hand them precomputed peaks. Export the JSON once, host the file next to the audio, and point the player at both.
// wavesurfer.js v7, "Normalized floats" export
const { duration, peaks } = await (await fetch('/media/episode-42-peaks.json')).json()WaveSurfer.create({ container: '#wave', url: '/media/episode-42.mp3', peaks, duration })Peaks.init({zoomview: { container: document.getElementById('zoomview') },overview: { container: document.getElementById('overview') },mediaElement: document.querySelector('audio'),dataUri: { json: '/media/episode-42-peaks.json' }}, (err, peaks) => { if (err) console.error(err) })The audiowaveform format matches the JSON written by the BBC's audiowaveform command-line tool: 8-bit min and max pairs, interleaved per channel. Points per second sets the detail. At 10 per second a mono, hour-long episode comes to about 250 KB of JSON, plenty for a full-width player. Zoomable editors want 100 or more.
What this visualizer will not tell you
- Long files on phonesThe browser decodes the whole file into 32-bit floats. One hour of 48 kHz stereo takes about 1.4 GB. Desktops cope with a few hours. Phones often stall past 30 minutes.
- The file's own sample rateBrowsers resample on decode to the audio device's rate, often 48,000 Hz. A 44.1 kHz file reads as 48,000 Hz here. The Media File Inspector reads the rate stored in the file.
- True peakThe readout reports sample peaks. The reconstructed wave between samples runs higher, so a file at -0.2 dBFS here reaches above 0 dBTP on some converters.
- Loudness in LUFSRMS here is unweighted and ungated. Streaming targets such as -14 LUFS need a K-weighted loudness meter.
- EditingNothing gets trimmed, normalized, or saved back to the file. Take the times and readings into your editor.
- Every format everywhereDecoding follows your browser. Safari has the weakest OGG Vorbis and Opus support. Files locked by DRM in streaming apps never decode.
