📊

Phase Frequency Analyzer

Live magnitude · phase · group delay from your microphone, computed via FFT. Toggle between wrapped (±180°) and unwrapped phase display, smooth across frames, and capture a snapshot to compare a before/after measurement — drop in an EQ or filter between captures and see exactly how it shifts the phase and group delay.

Status: Idle Sample rate: FFT: Snapshot: No snapshot captured
Magnitude (dB) — live (green) · snapshot (yellow dashed)
Phase — live (cyan) · snapshot (yellow dashed)
Group delay (ms) — live (magenta) · snapshot (yellow dashed)

Share or embed this tool

Free to use on your own website — WordPress, Wix, or any platform. Paste one line and it works instantly, resizing to fit.


Reading Phase & Group Delay

This phase frequency analyzer measures the time offset that every frequency in your signal sees as it passes through a system — a speaker, a filter, a room, or a digital signal processor. Phase response and group delay are the key outputs: group delay is the audible consequence of phase shift, telling you how long a wave-packet around each frequency is delayed in seconds (or milliseconds). Together, magnitude and phase fully characterise a linear time-invariant (LTI) system's transfer function. The tool plots all three derived quantities — magnitude (dB), phase (degrees), and group delay (ms) — from a live microphone signal analysed via the FFT, making it practical for real-world audio measurement without any additional software.

Wrapped vs unwrapped

FFT-derived phase is wrapped to ±180° (or ±π radians) because atan2 only produces values in that range. As you scan up the spectrum, the true phase often passes through ±180° boundaries and "wraps" to the other side — producing the saw-tooth look on the wrapped plot. The Unwrap phase toggle detects those jumps (phase discontinuities greater than 180°) and adds or subtracts 360° to subsequent points so the underlying continuous phase trajectory becomes visible. Unwrapped phase is what you need to compute group delay and to compare the phase distortion introduced by different filter topologies.

Group delay = −d(phase) / d(ω)

Group delay is the negative slope of the unwrapped phase curve plotted against angular frequency ω. A flat (constant) phase slope gives flat group delay — meaning all frequencies are delayed by the same amount, which preserves a transient's waveshape. A varying (frequency-dependent) group delay smears transients differently across the spectrum: the high-frequency attack of a snare drum and its low-frequency body arrive at the listener at different times, reducing punch and clarity. Crossover networks and loudspeaker systems are common sources of group delay that audio engineers measure and compensate. You can verify a period–frequency relationship used in this context with the period to frequency converter.

The before/after workflow

Start the mic with a clean broadband signal — pink noise played through your monitors, a logarithmic sine sweep, or a known test track. Click Capture snapshot (A). The current magnitude, phase, and group delay are stored as a yellow dashed overlay on all three plots. Now insert an EQ, crossover, digital filter, or room correction plugin in your signal chain and watch how the live curves move relative to the snapshot. The filter phase response is immediately visible in the phase plot: a minimum-phase EQ will shift phase smoothly without introducing extra delay; a linear-phase EQ will produce constant group delay but possibly with pre-ringing and latency; an analogue-modelled EQ will show its characteristic all-pass phase behaviour around each boosted or cut band.

Why is the phase plot so noisy?

Phase is only well-defined where there's energy. At frequencies with very low magnitude, the bin's complex value is essentially zero plus noise, and its angle (the phase estimate) is random. The Smoothing control applies exponential averaging to the complex spectrum across frames (complex-domain averaging avoids the wraparound artefacts you'd get from averaging phase angles directly). 75 % smoothing is a good default for steady-state signals; for transient material or fast-changing filters, drop it to 30 % so you don't blur rapid phase changes. The FFT window function also matters: a Hann window gives a good balance between spectral leakage suppression and frequency resolution, while a Blackman window further reduces leakage at the cost of slightly wider main lobes.

Why isn't my phase changing when I move my hand?

Phase only changes meaningfully when the spectrum's energy moves between frequency bins, or when something in the signal chain is delaying or spectrally shifting the signal. A steady-state tone has a constant phase per bin. Voice and music have rapidly-varying, mostly noise-like instantaneous phase — phase analysis is most useful with controlled excitation signals (calibrated pink noise, swept sine tones, or impulse responses captured in a system like the FFT frequency analyzer) rather than arbitrary program material.

Frequently Asked Questions

My group-delay plot bounces around wildly. Is that broken?
Group delay = −dφ/dω, so any noise in the phase estimate gets amplified by the derivative. At frequencies with little energy, phase is essentially random and the derivative is enormous. Raise the smoothing to 80–90 %, and remember that meaningful group delay requires an excitation signal with energy at the frequencies you care about (pink noise is ideal). For a music signal, group-delay numbers are only stable when energy is briefly concentrated in a bin.
Why does my microphone need echo cancellation off?
Browser-supplied echo cancellation, noise suppression and AGC all process the signal in ways that introduce frequency-dependent phase shift and time-varying gain. For phase analysis you want the rawest possible microphone signal — the tool asks for echoCancellation: false, noiseSuppression: false, autoGainControl: false in its getUserMedia constraints to disable them.
What FFT size should I pick?
Bigger FFT = finer frequency resolution (Δf = sampleRate / fftSize) but longer time window and slower update rate. 4096 is a good general default at 48 kHz: Δf ≈ 11.7 Hz, time window ≈ 85 ms. Use 8192–16384 for low-frequency precision (e.g., measuring a sub crossover); use 1024–2048 for fast-changing material where you want quick updates.
What's the difference between minimum-phase and linear-phase EQ?
A minimum-phase EQ (most analogue and standard digital EQs) introduces phase shift that's tied to its magnitude curve — boost a peak and you get characteristic phase distortion around it. Linear-phase EQ uses an FIR filter to give constant group delay (all frequencies delayed equally), at the cost of pre-ringing and large latency. The Capture-A snapshot is the easiest way to see the difference — load each EQ type in turn and compare its phase response.
Is my microphone audio uploaded?
No. The tool uses the browser's Web Audio API to read your mic locally; the signal goes straight from the microphone into the AnalyserNode for FFT, never to any server. The browser will ask once for permission to use the microphone — you can revoke that any time from the site permissions menu.
Can I export the snapshot data?
Not in this tool — for that you'd want a measurement app like Room EQ Wizard (REW) or ARTA, which write CSV / WAV files. This tool's strength is rapid visual A/B comparison: you can see whether a filter change is doing what you expect within a few seconds, without saving anything.
Why is the unwrapped phase off-scale on a flat-magnitude region?
Unwrapping a noisy phase trajectory can accumulate spurious 360° jumps in regions where there's no signal. The auto-scaling tries to fit the unwrapped values but they can run to ±10 000° in degenerate cases. If that happens, switch to wrapped view, raise smoothing, and play a signal with broadband energy — the unwrapping will then track a meaningful trajectory.
How do I measure a speaker's phase response with this tool?
Place a calibrated or reference microphone at the listening position, play pink noise or a slow sine sweep through the speaker at a comfortable level, and start the analyzer. The magnitude plot shows the frequency response and the phase plot shows the speaker's phase shift vs frequency. Capture a snapshot before making any EQ or crossover adjustment, then compare live vs snapshot to see the effect. Note that room reflections will colour both curves heavily — for accurate speaker measurements, use a short measurement window or a gating technique in dedicated software like REW.
What causes a large group delay spike at a specific frequency?
A sharp peak in group delay at a single frequency is a hallmark of a narrow resonance — a filter ringing at its pole frequency, a room mode, a ported enclosure tuning frequency, or a notch filter's phase transition. At the resonant frequency, the phase of the transfer function changes rapidly (steep slope), so the derivative −dφ/dω spikes. High group delay at bass frequencies (below 200 Hz) is normal for ported loudspeaker systems and subwoofer crossovers; group delay spikes in the midrange or treble are usually more audibly harmful.
How does this compare to Room EQ Wizard (REW) for phase measurement?
This browser tool is a quick visual phase checker — no installation, no calibration files, and no saving. REW provides a complete acoustic measurement suite: loopback-calibrated timing, impulse response windowing, harmonic distortion, waterfall plots, and CSV export. Use this tool for rapid before/after comparisons (e.g., checking that an EQ is doing what you expect) or when you don't have REW installed. For serious loudspeaker, room, or headphone measurements intended for reporting or correction, REW or a similar acoustic measurement platform is the appropriate tool.