Waveform Visualizer
Real-time microphone waveform display with adjustable time scale, trigger level (rising / falling / auto), peak / RMS / crest-factor stats, and a separate file-upload mode for offline waveform inspection. PNG screenshot export.
Mic display controls
File display controls
Drop an audio file above. The full waveform is decoded and displayed in your browser; nothing is uploaded. Click anywhere on the waveform to seek playback to that position.
Signal info
| Mode | Live mic |
| Sample rate | — |
| Buffer samples | — |
| Channels | — |
| Duration | — |
About Waveforms, Triggering & Crest Factor
A waveform display is the simplest, most direct view of an audio signal: time on the horizontal axis, instantaneous sample amplitude on the vertical axis. It's the same view you'd see on an analog oscilloscope's screen, plus a few audio-specific niceties (peak/RMS/crest stats, zero-crossing frequency estimate, file upload mode). Where a spectrum analyzer answers "what frequencies are present?", the waveform answers "what is the signal doing right now, sample-by-sample?"
Time window — the trade-off
A short window (10 ms, 20 ms) lets you see individual cycles of mid-range tones; a long window (200 ms, 500 ms) shows envelope shape, attack/decay, beats between close frequencies. There is no "best" — pick what matches what you're investigating. The window length here maps to the underlying FFT buffer size (powers of two between 512 and 32 768 samples), so the actual duration depends on your audio device's sample rate.
Triggering — why your waveform doesn't drift
Without a trigger, the start of each displayed frame falls at an arbitrary point in the input signal — so a steady tone appears to "scroll" sideways at random. A trigger locks the display to a specific event: in rising-edge mode the display always starts when the signal crosses your set level going upward; in falling-edge mode the opposite. Set the level near 0 for clean zero-crossing sync of a symmetric tone; set it higher to lock on transient peaks. Auto mode does no triggering — useful for noise or non-repetitive signals where there is nothing meaningful to sync to.
Peak, RMS, and crest factor
Three numbers summarise an audio signal's level very differently:
- Peak amplitude — the single largest absolute sample value in the window. Tells you about clipping headroom.
- RMS (root mean square) — sqrt(mean of squared samples). Corresponds to "average loudness" and is a better proxy than peak for how loud the signal sounds.
- Crest factor — peak / RMS, dimensionless. 1.0 = square wave (peak = RMS). 1.41 (=√2) = pure sine wave. 3–6 = typical speech. 10+ = drums and other transient-rich material. High crest factor means lots of dynamic range; low means heavily compressed or pure tones.
Zero-crossing frequency estimate
Counting the number of times the signal crosses zero in a known time window gives a rough frequency estimate: f ≈ (zero-crossings / 2) / window_duration. This is accurate only for clean, near-sinusoidal signals — noise, harmonics, and DC offset all confuse it. For trustworthy pitch tracking use the dedicated Pitch Detector or Frequency Detector tools (autocorrelation / YIN algorithms).
File mode
Drop an audio file to decode and view its entire waveform in one shot. The file is decoded locally via the Web Audio API's decodeAudioData; nothing is uploaded. Long files are decimated to fit the canvas width — each pixel column shows the min/max sample value over the range it represents (so peaks aren't lost to subsampling). Click on the displayed waveform to seek playback to that position.