🌊

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.

100% browser-based — your microphone audio and dropped files never leave your device.
⏸ FROZEN
Peak amplitude
RMS level
Crest factor
Zero crossings
Est. frequency
Window duration

Mic display controls

Signal info

ModeLive 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.

Frequently Asked Questions

Why is my waveform clipping at the edges of the screen?
Your signal is louder than the current amplitude zoom can display. The screen shows ±1.0 by default (full digital scale). Reduce the amplitude-zoom slider to 0.5× to display ±2.0 (you'll see the clipping isn't truncation, just over-range). Reduce the input gain (lower the OS mic level) to get the actual signal back within ±1.0. Real digital clipping at exactly ±1.0 looks like flat-top truncation — that's a hardware clipping problem you can only fix at the source.
Why is the trigger not catching anything?
Trigger fires when a sample crosses your set level in the chosen direction. If the level is set higher than your peak amplitude, nothing ever triggers and the display falls back to the previous frame. If you set rising-edge and the signal only goes downward through that level (e.g., DC-offset-shifted signal), nothing triggers. Two fixes: (a) move the trigger level closer to 0 or to where you can see your signal actually crosses, (b) switch trigger mode to Auto to free-run. The trigger level slider also shows as a horizontal line on the canvas while triggering modes are active.
How does the zero-crossing frequency estimate work?
It counts how many times consecutive samples differ in sign (signal went from − to + or + to −) over the visible window, divides by 2 (each full cycle has two zero crossings), and divides by the window duration to get frequency in Hz. For a pure 1 kHz sine in a 100 ms window you'd see 200 zero crossings → 100 cycles → 1000 Hz. For complex or noisy signals it counts every spurious crossing too, so a 1 kHz tone with high-frequency noise might read 2 or 3 kHz. Use the Frequency Detector or Pitch Detector tools (autocorrelation / YIN) for real pitch tracking.
What's a "typical" crest factor for music?
Sine wave: 1.41 (= √2). Classical orchestral music (uncompressed): 4–6. Modern rock / pop after mastering compression: 1.5–2.5. Drums and percussion alone: 6–12. Speech: 3–5. White noise: ~3 (≈ √(2π)/2 for Gaussian). A crest factor near 1.0 (e.g. 1.05) means the signal is almost a square wave — heavily compressed or clipped. Mastering "loudness wars" of the 2000s pushed pop music crest factors near 1.0; recent streaming-platform normalization standards have restored some dynamics.
Why does my dropped file play differently than its waveform looks?
If the file is stereo and you have "Channel 1" selected, you're seeing only the left channel while you're hearing both. Switch to "Mix (L+R)/2" for a single combined waveform that matches what you hear in mono. For multichannel files (5.1, 7.1), only channels 1 and 2 are inspectable in this tool — for full-multichannel analysis you'd need a dedicated DAW or surround analyzer.
Can I see two waveforms at once (e.g., L and R stereo)?
Not in this tool — only one channel at a time. Switch the Channel selector to compare L vs R sequentially, or use the dedicated Stereo Channel Tester in the Microphone & Diagnostics category (when built). For phase-comparison between two channels, the Audio Phase Alignment / Phase Frequency Analyzer tools in this category are the right fit.
What audio file formats are supported?
Whatever your browser's Web Audio API can decode: WAV (16/24/32-bit PCM and IEEE float), MP3, OGG Vorbis, OGG Opus, AAC (in M4A or ADTS containers), FLAC. Browser support varies: Chrome and Firefox handle nearly everything; Safari has historically lagged on Ogg formats; older browsers may reject 32-bit float WAV. If decoding fails the file is rejected with an alert message; try converting to 16-bit WAV with a tool like Audacity or ffmpeg.