Frequency Response Curve Tool
Play a logarithmic 20 Hz → 20 kHz sweep through your speakers, capture it with your microphone, and plot a relative magnitude curve (dB vs log frequency). Choose 1/3- or 1/6-octave smoothing, overlay a flat or tilted target curve with a deviation band that marks where the response strays outside your chosen tolerance, then freeze and compare two captures and export the data as CSV or PNG.
ℹ This measures the combined speaker + room + microphone chain, not any single device in isolation. It is uncalibrated and relative: the curve is normalised in dBFS (digital level), it is not SPL and carries no absolute loudness. A built-in laptop, phone or webcam mic colours the result heavily — its own roll-off and resonances are baked in. For accurate work use a calibrated measurement microphone (e.g. a UMIK-class mic) with software such as REW. Nothing is recorded or uploaded; everything runs in your browser.
⚠ Protect your ears and speakers. The sweep plays sound. Start at a low level and raise it slowly. Sustained tones — especially deep bass and high treble — can over-drive small drivers and damage hearing at high volume. Use loudspeakers, not headphones, and never run this through in-ear monitors at high level.
How to Use the Frequency Response Curve Tool
Set up your room
Use loudspeakers (not headphones). Place the microphone where you listen, point it at the speakers, and keep the room quiet. Start with a low volume.
Run a sweep
Press Start measurement, allow microphone access, and the tool plays a log sweep while capturing it. Raise the volume only if the level meter reads low.
Smooth and target
Pick 1/3- or 1/6-octave smoothing, choose a flat or tilted target, and set a tolerance band. Deviations outside the band are shaded so problem regions stand out.
Freeze, compare, export
Freeze a capture as a reference, run a second sweep to overlay a comparison, then export the smoothed curve as CSV or save the plot as a PNG.
Frequency response measurement tool
Press “Start measurement” to play a sweep and capture your room response. Start with the volume low.
A measurement mic gives the truest curve; built-in mics colour the result.
Longer sweeps average out noise and give a steadier curve.
Capped well below full scale. Use your device volume responsibly.
Fractional-octave averaging tames comb-filter ripple.
A tilt sounds more natural than dead-flat in most rooms.
Curve sections outside ± this band are shaded.
Smoothed curve (relative dB sampled at 1/3-octave centres)
The table is always sampled at standard 1/3-octave centres regardless of the plot smoothing above; the CSV export follows the plot smoothing.
| Band centre | Measured | Reference | Target | Deviation |
|---|---|---|---|---|
| Run a measurement to populate the curve table. | ||||
Understanding Your Results
The plotted line is a relative magnitude response: the level the microphone captured at each frequency, in decibels, with the whole curve normalised so its mid-band average sits near 0 dB. It is not SPL and carries no absolute loudness — a reading of “−6 dB” means that band came back 6 dB quieter than the reference average, not 6 dB below any standard level. What you are looking at is the shape of the response, which is exactly what reveals dips, peaks and roll-off.
A broad dip over a wide region usually points to the speaker, a crossover, or microphone roll-off; a narrow, deep notch that moves when you move the mic is almost always a room mode / cancellation, not a speaker fault. A rising or falling overall tilt is tonal balance — most rooms sound best with a gentle downward tilt from bass to treble rather than dead-flat, which is why the tilted targets are offered.
The deviation band shades every section of the curve that falls outside ± your chosen tolerance around the target. The numeric readouts below the plot — curve span, largest peak and dip versus target, and the percentage of bands within tolerance — are computed from the smoothed curve and mirror the plot for screen-reader users. Treat all of it as a guide to relative shape, not a calibrated measurement: a built-in mic can easily add ±10 dB of its own colouration, so compare changes (before/after moving a speaker, adding a panel) rather than trusting the absolute curve.
How the Frequency Response Curve Tool Works
When you press Start, the tool builds two independent Web Audio paths. The output path is an oscillator whose frequency is swept exponentially from 20 Hz to 20 kHz, through a gain node, to your speakers — the intended sound. The sweep timing is anchored to the audio clock (audioContext.currentTime) rather than wall-clock time, so if the browser tab is suspended mid-sweep the schedule cannot drift or corrupt. The capture path is completely separate: the microphone feeds an AnalyserNode only and is never connected to the speakers, so there is no feedback loop and nothing is played back.
As the sweep glides, the analyser reports the captured spectrum many times per second. Because the sweep is logarithmic it spends roughly equal time in every octave, and the swept tone passes through each fine bin only briefly, so the tool records the captured level into a bank of fine frequency bins and tracks the running peak in each bin (the peak is the tone’s true level as it crosses that bin). When the sweep ends, those raw bins are condensed into a fractional-octave curve: each 1/3- or 1/6-octave point is a power average of the captured energy across that band. Fractional-octave smoothing is the standard way to view acoustic response because it tames the dense comb-filter ripple that raw FFT data shows in a real room while preserving the broad trends your ears actually notice.
The smoothed curve is normalised to its own mid-band average so it can be drawn against the chosen target (a flat line, or a gentle −0.5 or −1 dB-per-octave tilt). The deviation shading and the within-tolerance percentage are simple comparisons of curve minus target against your ±-dB band. This is an idealised view: it assumes your playback level is steady, the room is quiet during the sweep, and the mic’s own response is flat — assumptions that hold far better for a calibrated measurement microphone than for a laptop or phone mic. For trustworthy absolute numbers, a calibrated mic and dedicated software such as Room EQ Wizard (REW) remain the right tools; this page is built for fast, in-browser relative exploration of how your system and room shape sound.
Frequently Asked Questions
Is this a calibrated measurement of my speaker?
No. It is an uncalibrated, relative measurement of the whole chain — your speaker, your room and your microphone combined — not any single device in isolation. The curve is normalised in dBFS (digital level), so it shows the shape of the response, not absolute SPL. A built-in laptop, phone or webcam mic adds its own roll-off and resonances, which are baked into the result. For accurate, calibrated work use a measurement microphone such as a UMIK-class mic with software like REW.
Why are the numbers in dBFS and not dB SPL?
SPL (sound pressure level) requires a microphone calibrated to a known sensitivity and a reference level — consumer mics provide neither. The browser only gives access to the digital signal level, dBFS (decibels relative to full scale), which has no fixed relationship to loudness in the room. The tool therefore normalises the curve to its own mid-band average and reports relative dB. That is enough to reveal dips, peaks and tilt, but it cannot tell you how loud anything is in absolute terms.
Should I use 1/3-octave or 1/6-octave smoothing?
Use 1/3-octave for a smooth overview that matches how broad tonal balance is usually judged — it is the most common acoustic smoothing and is good for spotting overall tilt and big regions. Switch to 1/6-octave when you want more detail, for example to see a narrower resonance or to compare two captures more finely. Raw (unsmoothed) data shows the full comb-filter ripple of the room and is mostly useful for confirming exactly where a sharp notch sits, but it is noisy and hard to read.
What does the shaded deviation band mean?
The shading marks every part of the curve that falls outside plus-or-minus your chosen tolerance around the target. With a ±3 dB band, any region rising more than 3 dB above or dipping more than 3 dB below the target is highlighted, and the readout shows what percentage of bands stay inside. A narrow, deep notch shaded amber but that moves when you move the mic is almost always a room cancellation rather than a speaker fault — treat it differently from a broad, stable dip.
Can I trust the deep-bass and high-treble ends of the curve?
Be cautious at both extremes. Below roughly 60 Hz most laptop, phone and small speakers simply do not reproduce much, and most built-in mics roll off there too, so a falling bass end may be the speaker, the mic, or both. At the very top, the displayed range can never exceed the Nyquist limit (half your capture sample rate, shown in the readout), and consumer mic response is rarely flat above ~10 kHz. Read the broad midrange shape with the most confidence and the extremes as approximate.
Is anything recorded or uploaded?
No. The sweep is generated locally and played through your speakers, and the microphone feeds an analyser inside your browser only — it is never connected to the output and no audio is stored or sent anywhere. Microphone access is requested only when you press Start, all media tracks are stopped and the audio context is closed when you press Stop or leave the page, and the CSV and PNG exports are created entirely on your device.