Skip to main content

Playground · research instrument

DSP · Audio

Speaker Box Calculator

Design a sealed or vented-box loudspeaker from Thiele–Small parameters. Dial in driver specs, choose an alignment target, and see the computed response, port length, and max SPL in real time.

Independent research instrument — not claimed as MakerPortal shipped product code. Methods, equations, assumptions, and limitations are disclosed so you can inspect what the page does and does not establish.

Driver Parameters

fs Free-air resonance (Hz)
Qts Total Q factor
Vas Equivalent compliance volume (L)
Re DC voice coil resistance (Ω)
Sd Effective piston area (cm²)
Xmax Linear excursion (mm)
Qms Mechanical Q (default 5.0)

Driver parameters, box volume and tuning all live in the URL.

Starting from a real driver? Dayton Audio RS180-8, transcribed from the manufacturer's datasheet →

Enclosure

Alignments:
Vb Box volume (L) — auto-calculated for Qtc=0.707
Qa Absorption Q (box losses)
Ql Leakage Q
Power Input power (W)
System Qtc

0.71

System fc

65.1 Hz

Total system Q

Qtc

System tuning

fc / fb Hz

-3 dB point

f3 Hz

Reference efficiency

η₀ %

@ 1W / 1m

Sensitivity dB

At Xmax + power

Max SPL dB

Vb recommendation

Alignment

SPL Frequency Response

SystemFree-air

Box Visual

The box is a spring, the port is a mass

Thiele and Small proved you can treat a loudspeaker and box as a filter. The driver is a resonator, the box is a second spring, the port is a Helmholtz mass. Get the ratios right, you choose the high-pass shape. Get them wrong, you get one-note boom.

1 — Compliance ratio is the master knob

Every datasheet gives you fsf_s, QtsQ_{ts}, VasV_{as}. VasV_{as} is the volume of air that has same compliance as the driver suspension. Put the driver in a box of volume VbV_b and you add another spring in parallel. The key ratio:

α=VasVb\alpha = \frac{V_{as}}{V_b}

Big box → α\alpha small → soft extra spring, fcf_c barely above fsf_s. Small box → α\alpha large → stiff spring, fcf_c pushed up. You cannot cheat volume — smaller box always costs low-end unless you raise QQ.

2 — Sealed box math: choose your Qtc

Sealed is a 2nd-order high-pass. Its entire character is QtcQ_{tc}:

Qtc=Qts1+αfc=fs1+αQ_{tc} = Q_{ts}\sqrt{1+\alpha} \quad\quad f_c = f_s\sqrt{1+\alpha}

Vb=Vas(Qtc/Qts)21V_b = \frac{V_{as}}{(Q_{tc}/Q_{ts})^2 - 1}

H(f)=(f/fc)2(1(f/fc)2)2+(f/(fcQtc))2|H(f)| = \frac{(f/f_c)^2}{\sqrt{(1-(f/f_c)^2)^2 + (f/(f_c Q_{tc}))^2}}

Qtc=0.5Q_{tc}=0.5 critically damped transient-perfect, lean. 0.577 Bessel — best phase linearity. 0.707 Butterworth — maximally flat amplitude, the universal default. 1.0 adds +1.5 dB peaking, warmer but rings. The slider recomputes VbV_b for each target — that is why hitting Butterworth shrinks or grows the box in real time.

Box losses QaQ_a (absorption) and QlQ_l (leakage) enter as 1/Qtc=1/Qtc,ideal+1/Qa+1/Ql1/Q_{tc}=1/Q_{tc,ideal}+1/Q_a+1/Q_l. Typical stuffed box: Qa30100Q_a\approx 30–100, leaky unsealed: Ql1020Q_l\approx 10–20.

3 — Vented box: 4th-order Helmholtz bargain

Ported adds a Helmholtz resonator fbf_b. Below fbf_b port and driver cancel, above both sum. Transfer becomes 4th-order:

H2=Ω8(Ω4BΩ2+D)2+(AΩ3CΩ)2|H|^2 = \frac{\Omega^8}{(\Omega^4 - B\Omega^2 + D)^2 + (A\Omega^3 - C\Omega)^2}

where Ω=f/fs\Omega=f/f_s, h=fb/fsh=f_b/f_s, and A,B,C,DA,B,C,D are Small's 1973 coefficients containing α\alpha and QlQ_l. QB3 is quasi-Butterworth 3rd-order approximation — punch over extension. SBB4 super 4th-order boombox, best for low QtsQ_{ts} drivers in large boxes. SC4 sub-Chebyshev 4, ripple allowed for deepest f3f_3 at expense of group delay.

Port length: Lp=c2Sp4π2fb2Vb0.732rpL_p = \frac{c^2 S_p}{4\pi^2 f_b^2 V_b} - 0.732 r_p

That end-correction 0.732rp0.732 r_p is flanged. This tool uses exact acoustic mass calc from SpS_p.

4 — Hoffman's Iron Law & why specs lie

Reference efficiency for half-space:

η0=4π2c3fs3VasQesQes=11/Qts1/Qms\eta_0 = \frac{4\pi^2}{c^3}\frac{f_s^3 V_{as}}{Q_{es}} \quad Q_{es}= \frac{1}{1/Q_{ts}-1/Q_{ms}}

Sens=112+10log10η0dB@1W/1mSens = 112 + 10\log_{10}\eta_0 \quad dB @ 1W/1m

Hoffman's Iron Law says you only get two of three: small box, deep bass, high efficiency. Formally:

η0Vbf33=constant\eta_0 \cdot V_b \cdot f_3^3 = constant

Shrink VbV_b 50%, you lose 3 Hz extension or 3 dB sensitivity. No port or DSP escapes it long-term — EQ restores response but not η0\eta_0, so power demand and XmaxX_{max} blow up. Max SPL here min() of thermal power Sens+10log10PSens+10\log_{10}P and excursion limit SPLXmax=20log10(ρ02πf2Vd/p0)SPL_{Xmax}=20\log_{10}( \rho_0 2\pi f^2 V_d/ p_0) where Vd=SdXmaxV_d=S_d X_{max}.

5 — How to use & where it breaks

Playbook

  • Start sealed, hit Butterworth 0.707 to see required VbV_b. If box too big, accept Qtc 0.9–1.0 or go vented.
  • Vented excels when Qts<0.4Q_{ts} < 0.4. If Qts>0.5Q_{ts} > 0.5, sealed usually wins — vented needs absurdly large box for flat alignment.
  • Tune fbf_b near fsf_s for SBB4, above fsf_s for punch QB3, below for extension SC4. Watch port length — if Lp>2×L_p > 2× box depth, increase diameter or accept higher tuning.
  • Use f3f_3 and cone-shaped VbV_b visual: cube-root scaling shows volume not linear — +6 L at small box is huge.

Honesty

Small-signal only. No standing waves, panel flex, leakage nonlinearity, port chuffing, voice-coil inductance, BL droop, power compression, baffle step, or room gain. Assumes 2π2\pi half-space and rigid walls. Real driver QtsQ_{ts} shifts with excursion and heat. Max SPL combines XmaxX_{max} and thermal but not simultaneously. Use for alignment intuition, then measure impedance and nearfield.

Anatomy of the instrument

Seven driver parameters, two enclosure types, four sealed alignments, three vented alignments, one live SPL canvas, and a cube-root-scaled box visual. Here is how each piece connects to the Thiele-Small math.

Driver parameters and alignment logic

  1. 01

    fs, Qts, Vas — the big three. These are the minimum required to compute any box alignment. fs is the driver's natural resonance, Qts is the damping, Vas is the air volume with equivalent compliance. Every slider has a paired numeric input; the _syncing flag prevents infinite loops when slider and number update each other. The sliders are range inputs for quick sweeps; the numbers are for exact entry.

  2. 02

    Alignment presets compute Vb automatically. Choosing a sealed target Qtc solves Vb=Vas/((Qtc/Qts)21)V_b = V_{as} / ((Q_{tc}/Q_{ts})^2 - 1) and sets the Vb slider to the result. Choosing QB3, SBB4, or SC4 sets approximate Vb and fb ratios. The active preset gets highlighted with the brand-anchor border.

  3. 03

    Sealed/vented toggle. Switches the transfer function between a 2nd-order high-pass (sealed) and a 4th-order Helmholtz-coupled system (vented, using Small's 1973 ABCD coefficients). The toggle also shows/hides the fb slider, port diameter, port length readout, and switches the alignment preset buttons.

  4. 04

    Qa and Ql — the loss parasites. These absorb into Qtc via 1/Qtc=1/Qtc,ideal+1/Qa+1/Ql1/Q_{tc} = 1/Q_{tc,ideal} + 1/Q_a + 1/Q_l. Qa models stuffing absorption; Ql models air leakage through seams. Setting both to 100 effectively disables them (ideal case). Lowering Qa or Ql reduces the effective Qtc, making the response more damped.

The SPL canvas and box visual

  1. 05

    SPL frequency response. A log-frequency canvas from 10–500 Hz, showing both the system response (solid magenta) and free-air driver response (dashed). The f3 point is found by scanning backward from high frequency until the magnitude crosses -3 dB. fc (sealed) or fb (vented) is marked with a filled circle. A crosshair cursor shows frequency and SPL at any mouse position.

  2. 06

    The box visual. An isometric SVG whose face dimensions scale with the cube root of Vb. The driver circle radius is proportional to Sd but clamped to prevent it from exceeding the box face. In vented mode, a second smaller circle (the port) appears below or beside the driver. A dimension line shows the volume in liters and the edge length in decimeters.

  3. 07

    Max SPL: Xmax vs power. The calculator computes both the thermal limit (sensitivity + 10·log(Power)) and the excursion limit at fc. It takes the minimum — at low frequencies excursion dominates, at higher frequencies power dominates. The dashboard shows which limit is active in the title attribute.

  4. 08

    Raf-throttled updates. The scheduleUpdate() function uses requestAnimationFrame to batch slider changes. If you drag a slider rapidly, only the last value before the next frame triggers a recompute. The canvas is HiDPI-scaled via setupHiDPI() and redraws from scratch on each frame with log-frequency and dB grids from the chart-core library.

The transfer function implementations

Sealed: r = f/fc; return r² / sqrt((1−r²)² + r²/Qtc²). Vented: Small's 1973 ABCD coefficients with Ω=f/fs,h=fb/fs\Omega = f/f_s, h = f_b/f_s. The 4th-order numerator is Ω8\Omega^8 (two rolloff pairs), denominator is the quartic polynomial from the coupled mass-spring system.

Gear for speaker measurement & design

Speaker design stack · 17 picks

Measurement & monitoring gear17

More gear across every app: the full Gear list →

Two gotchas worth knowing

Driver Qts shifts with power — your Butterworth alignment drifts

Thiele-Small parameters are small-signal — measured at a few milliwatts. As you push power, the voice coil heats up and Re rises, which raises Qes and therefore Qts. A driver with Qts = 0.38 cold may measure Qts = 0.52 after 30 seconds at 50 W. Your perfectly flat Butterworth alignment becomes a peaked underdamped alignment. The tool assumes cold parameters — for high-power designs, simulate with Qts inflated by 20–30% to see the worst case.

Port chuffing is not predicted by the length formula

The port length calculator gives you the correct acoustic mass for the target tuning, but says nothing about air velocity in the port. If port diameter is too small for the SPL you need, air velocity exceeds ~17 m/s and becomes turbulent — audible chuffing. Rule of thumb: port area should be at least 25–30% of Sd for clean output. If the calculator gives a short port length with your chosen diameter, increase the diameter and recalculate — port length increases with area, but so does clean output headroom.

JavaScript — the sealed-box solver

The core sealed-box transfer function and compliance-ratio math. Drop this into any speaker design tool — input fs, Qts, Vas, Vb and get Qtc, fc, and the full frequency response.

Sealed enclosure — JavaScript

const sealedBox = (fs, Qts, Vas, Vb, Qa = 100, Ql = 100) => {
  const alpha = Vas / Vb;
  const QtcIdeal = Qts * Math.sqrt(1 + alpha);
  const Qtc = 1 / (1 / QtcIdeal + 1 / Qa + 1 / Ql);
  const fc = fs * Math.sqrt(1 + alpha);

  const H = (f) => {
    const r = f / fc;
    const r2 = r * r;
    return r2 / Math.sqrt((1 - r2) ** 2 + r2 / (Qtc * Qtc));
  };

  const sensitivity = () => {
    const Qes = 1 / (1 / Qts - 1 / (Qts * 5));
    const k = (4 * Math.PI ** 2) / (343 ** 3);
    const eta = k * fs ** 3 * Vas / Qes;
    return 112 + 10 * Math.log10(Math.max(eta, 1e-12));
  };

  const vbForQtc = (targetQtc) => {
    if (targetQtc <= Qts) return Infinity;
    return Vas / ((targetQtc / Qts) ** 2 - 1);
  };

  return { alpha, Qtc, QtcIdeal, fc, H, sensitivity, vbForQtc };
};

Frequently asked questions

What Qtc should I target for a sealed enclosure?

Qtc = 0.707 (Butterworth) gives maximally flat amplitude response — the universal default. Qtc = 0.577 (Bessel) gives best transient response with minimal ringing. Qtc = 0.5 is critically damped, tightest bass but the box needs to be very large. Qtc = 1.0 adds about 1.5 dB of peaking at fc for a warmer, fuller sound. For most music, 0.7–0.85 is the sweet spot.

Why does a smaller box raise the system resonance frequency?

The air in the box acts as a second spring in parallel with the driver's suspension. A small box contains stiff air — it's harder to compress. The compliance ratio α = Vas/Vb determines the spring constant: when Vb is small, α is large, and the system resonance fc = fs·√(1+α) rises. Hoffman's Iron Law says you can't cheat this: smaller box means either higher fc or lower efficiency.

When should I choose vented over sealed?

Vented enclosures work best with drivers that have Qts < 0.4. Above Qts ≈ 0.5, sealed usually wins because the vented box needed for a flat alignment becomes impractically large. Vented gives about 3 dB more sensitivity at fb and extends f3 about half an octave lower — but at the cost of a steeper 24 dB/octave rolloff below fb, more group delay, and the risk of port chuffing at high SPL.

How accurate is the port length calculation?

The calculator uses the flanged-end correction (0.732·rp) which assumes the port terminates flush with the baffle. Real ports with flares act slightly longer at high SPL because end correction changes with velocity. Build the port 5–10% longer than calculated, measure the impedance peak with a test signal, then trim to exact tuning. A port that's too long tunes lower; too short tunes higher.

Why is my maximum SPL sometimes limited by Xmax and sometimes by power?

The tool computes both and takes the minimum. At low frequencies, excursion demand grows as 1/f² — your driver hits Xmax before you run out of amplifier power. At higher frequencies, excursion is small and thermal power handling is the limit. The cross-check ensures you see the real bottleneck. If Xmax is the limit and you want more SPL, you need a driver with more excursion or a larger radiating area — more power alone won't help below the Xmax-limited region.

Shareable still

The instrument, captured—not illustrated.

This 16:9 frame is rendered from the real browser instrument above. It is the page's canonical preview for image search, link unfurls, and posts that need to show what the tool actually does.

Download 1280 × 720 JPEG
Speaker Box Calculator — live MakerPortal instrument screenshot
Canonical capture · real UI · no generated scientific artwork