Formula sheet
Every formula this tool uses, in the same order as its own sections: from a spec down to real component values and a frequency response. Each one has what it is and how to use it, not just the equation on its own.
Symbols that recur through every section below: Amax is the passband ripple or attenuation limit (dB), Amin the stopband attenuation requirement (dB), fp the passband edge (Hz), fs the stopband edge (Hz), n the filter order, and k the transition ratio. They all come from the Specification step of the tool.
Specification and order
Transition ratio
How close the stopband edge sits to the passband edge. Closer to 1, the harder the filter has to work to transition from passing to blocking.
How to use: compute this first; every order formula below needs it.
Butterworth minimum order
The smallest integer order n that meets the Amax/Amin/fp/fs spec with a Butterworth response: the flattest possible passband, at the cost of a slower rolloff than Chebyshev at the same order.
How to use: plug in Amax, Amin and k, then round the result up to the next integer. That integer is n: half of it (rounded down) is the number of second-order stages, plus one leftover first-order stage if n is odd.
Chebyshev minimum order
The same minimum-order calculation for a Chebyshev Type I response, which allows up to Amax dB of ripple inside the passband in exchange for a steeper rolloff than Butterworth at the same order.
How to use: same rounding as the Butterworth case above.
Where both order formulas come from
Every design here is built on one magnitude response (section 3 and section 4 say where each comes from). At fp it loses exactly Amax dB by the definition of epsilon; the only condition left is the stopband, at least Amin dB at fs, and that condition contains n. At fs the frequency ratio is 1/k.
How to use: isolate n (divide by 2 log(1/k), or take acosh of both sides and divide by acosh(1/k)) and substitute epsilon squared = 10^(Amax/10) - 1: that is exactly the two formulas above. Rounding n up is what puts the stopband margin in.
Pole placement, both responses
Where the poles come from
A magnitude formula is not a circuit; a circuit is built from poles. Replacing omega by s/j turns |H(j omega)| squared into H(s) times H(-s). For Butterworth (normalized so that the pole circle has radius 1) its 2n poles are the 2n-th roots of a single number: all the same size, angles spaced pi/n apart, mirrored about both axes. The stable half (negative real part) belongs to H(s). Measuring the angle from the imaginary axis gives the theta formula below; n = 4, for example, puts poles at 22.5 and 67.5 degrees.
For Chebyshev the same substitution into 1 + epsilon squared C_n squared gives cos(n phi) = plus or minus j / epsilon with a complex angle phi = theta + j beta; its real part forces the same theta values, its imaginary part gives beta (section 4).
Pole angle
The n poles of the filter sit evenly spaced by this angle around a curve in the normalized (omega_c = 1 rad/s) s-plane: a circle for Butterworth, an ellipse for Chebyshev. Each second-order stage of the filter is built from one of these angles.
How to use: i is the stage index, starting at 0. Compute one theta per second-order stage; a leftover real pole (odd n) does not need one, it sits at a fixed spot instead (see the response-specific sections below).
Pole coordinates
The real part (sigma) and imaginary part (omega) of the pole at that angle: its coordinates in the s-plane. sh and ch scale the circle into an ellipse for Chebyshev.
How to use: for Butterworth, sh = ch = 1. For Chebyshev, sh = sinh(beta) and ch = cosh(beta) (section 4 below). Compute sigma and omega for a stage's theta, then a and b follow directly.
Stage coefficients a, b
The two coefficients of the stage's normalized quadratic denominator s^2 + as + b, found by multiplying the pole by its complex conjugate: a real circuit always produces both, or the stage's output would not be real-valued.
How to use: feed a and b into the denormalization formulas in section 5 to get a real corner frequency and Q for this stage.
Butterworth specifics
Unit-circle simplification
Because every Butterworth pole sits exactly on the unit circle (sh = ch = 1), b collapses to exactly 1 for every stage: only a changes from stage to stage.
How to use: equivalent to the general sigma/omega formula in section 2, but needs only one trig call. Use this directly for a Butterworth design.
Leftover real pole (odd n)
The one pole with no partner when n is odd. For Butterworth it always sits at exactly s = -1 in the normalized plane, no matter the order: the unit circle only crosses the real axis at one point.
How to use: used only when n is odd, as the b value for the first-order denormalization formula in section 5.
Chebyshev specifics
Epsilon
Controls how deep the passband ripple is allowed to go: a bigger epsilon means more ripple. It comes directly from the Amax spec alone, exactly as for Butterworth. The Chebyshev magnitude response, with C_n the order-n Chebyshev polynomial (which swings between -1 and 1 below the ripple edge and grows like a hyperbolic cosine above it):
At the ripple edge C_n is 1, so exactly Amax dB is lost there and epsilon follows the same way as for Butterworth:
How to use: compute once per design, before beta.
Beta
Controls how squashed the pole ellipse is compared to the unit circle: it folds epsilon and the order n together into the number the ellipse's half-axes need.
Where it comes from: the poles solve 1 + epsilon squared C_n squared (s/j) = 0. Writing s/j = cos(phi) with a complex angle phi = theta + j beta turns C_n into cos(n phi), and expanding the cosine of a complex angle splits the equation in two:
The first part gives the same theta angles as Butterworth (section 2); the second is the beta formula above.
How to use: compute once per design, right after epsilon. sinh(beta) and cosh(beta) are the sh and ch scale factors used in every stage's pole coordinates (section 2).
Leftover real pole (odd n)
Same idea as the Butterworth leftover pole, but on the ellipse: at theta = 90 degrees its position simplifies to just sinh(beta).
How to use: used only when n is odd, as the b value for the first-order denormalization formula below.
Denormalization
Cutoff
Converts the passband edge from Hz to radians per second and places the pole circle. The Butterworth magnitude response (low-pass; a high-pass swaps the fraction to omega_p over omega):
At the passband edge the fraction is 1, so losing exactly Amax dB there fixes the ripple factor:
The n poles sit on a circle of radius omega_0, the frequency where the bracket equals one over epsilon squared, which is also where exactly 3 dB is lost. That circle sits at omega_p only when Amax = 3.0103 dB (epsilon = 1); for a smaller Amax the poles move past fp so that only Amax dB is lost there (inward for a high-pass). Every normalized stage is scaled by this omega_c. A Chebyshev prototype is already normalized to its ripple edge, so it needs no factor.
How to use: compute once per design, then reuse it below. With the common Amax = 3 dB the Butterworth factor is within 0.1% of 1, which is why fp is so often called the 3 dB cutoff; at Amax = 1 dB and n = 5 it is already 1.145.
Second-order stage
Turns a stage's normalized a and b into a real corner frequency omega_n (rad/s) and quality factor Q, the two numbers a real second-order circuit stage is built around.
How to use: f0 = omega_n / (2 pi) is the corner frequency in Hz. Both omega_n and Q feed directly into the MFB or Sallen-Key formulas in sections 6 and 7.
First-order stage
The time constant of the leftover real-pole stage, in seconds.
How to use: feeds directly into the first-order RC formula in section 8; the stage's corner frequency is 1 / (2 pi tau).
Standard second-order form
The form every second-order stage of this filter is built to realize once denormalized: a unity-DC-gain low-pass with corner omega_n and quality factor Q.
How to use: this is the target the MFB or Sallen-Key component search matches against.
MFB components
Transfer function
The multiple-feedback (MFB) topology's transfer function in terms of its five components: R1 from the input to the summing node S, C1 from S to ground, R2 from S to the inverting input, R3 from the output back to S, C2 from the inverting input to the output. Two current balances describe it, at S and at the virtual-ground inverting input:
Eliminating V_S and collecting powers of s gives the transfer function:
How to use: match a and b against the stage's target (a = omega_n / Q, b = omega_n squared) to solve for the components.
Gain-forcing and the resistor quadratic
Choosing R1 = R3 fixes the DC gain c/b to exactly -1 and reduces the two equations in a and b to one quadratic in x = 1/R1 = 1/R3.
How to use: pick C1 and C2 from a preferred series first (subject to the ratio constraint below), then solve this quadratic for x: R1 = R3 = 1/x, and R2 follows from a.
Capacitor ratio constraint
The quadratic above only has a real solution when this holds. It is the practical limit on how high a Q an MFB stage can realize with a given capacitor pair.
How to use: when searching capacitor values, discard any C1/C2 pair that fails this before attempting to solve for resistors.
Sallen-Key components
Defining equations
The unity-gain Sallen-Key topology's two defining equations, in terms of its three free components: two equal resistors R, a grounded capacitor Cbottom, and a feedback capacitor Ctop from the output back to the R-R junction.
How to use: Q depends only on the capacitor ratio, so pick that first (below), then R follows from the omega_n equation once both capacitors are known.
Capacitor ratio
Because Q depends only on this ratio, it is fixed the moment the target Q is known, before any component value is chosen.
How to use: pick Cbottom from a preferred series, multiply by this ratio to get Ctop, then solve R from the equation below.
Resistor value
The value used for both equal resistors, that makes the pair meet the target omega_n once Cbottom and the ratio-derived Ctop are fixed.
How to use: round R and Ctop to the nearest preferred values afterward; recompute the actual omega_n and Q the built stage gives from those rounded values, not the targets.
First-order RC
Single-pole low-pass
The circuit used for the leftover real pole of an odd-order filter: one resistor, one capacitor, output taken across the capacitor. tau is the time constant found in section 5.
How to use: pick C from a preferred series, solve R = tau / C, then round R to the nearest preferred value.
Sensitivity
Definition
How many percent Q moves for every 1 percent a single component x is off by. Lower magnitude is better: less sensitive to real-world component tolerance.
How to use: look up (or compute) one sensitivity per component, then combine them with the root-sum-square formula below.
Sallen-Key sensitivities (fixed)
Fixed values for the unity-gain, equal-R Sallen-Key form: they do not depend on the actual component values, only on the topology.
How to use: multiply each by the component tolerance (in percent) and combine with the root-sum-square formula. The resistor sensitivity dominates, which is why Sallen-Key gets impractical at high Q.
MFB sensitivities
Depends on the stage's actual resistor values, but stays under 1/2 in magnitude for every component as long as no single resistor dominates the other two, which is why MFB is the safer default at higher orders.
How to use: compute from the stage's actual (rounded) R1, R2, R3, then combine with C1 and C2's fixed +-1/2 using the root-sum-square formula.
Root-sum-square
Combines every component's individual sensitivity and tolerance into one worst-case estimate of how far Q can realistically drift, assuming the errors are independent.
How to use: use a tolerance of 1 percent for typical E24/E12 resistors and E6 capacitors, unless the actual parts on hand are known to be tighter or looser.
Frequency response (Bode)
Per-stage gain, second order
The complex gain of one second-order stage at a real frequency omega = 2 pi f, evaluated from its actual (rounded) omega_n, Q and DC gain g, not the ideal targets: this is what would actually show up on a bench.
How to use: multiply, as complex numbers, the per-stage gains of every stage in the cascade to get the full filter's response at that frequency.
Per-stage gain, first order
The complex gain of the leftover first-order stage, from its actual (rounded) tau.
How to use: multiplies into the same cascade product as the second-order stages above.
Magnitude and phase
Converts the cascade's complex response at one frequency into the two numbers a Bode plot actually shows.
How to use: sweep omega (or f) log-spaced from below fp to above fs to trace the full curve, and check that the dB value at fs meets Amin. The angle formula gives degrees; drop the 180/pi factor for radians.
Low-pass to high-pass transform
Prototype substitution
A high-pass filter starts from the exact same pole placement as a low-pass one (sections 2 to 4 above are shared by both) and applies one extra step before denormalizing: substituting s with 1/s in the normalized prototype.
How to use: read the new coefficients directly off the denominator on the right.
New coefficients
a_hp and b_hp replace a and b for every step downstream (denormalization, component synthesis). Q comes out identical to what the low-pass version of this same stage would have had - sqrt(b_hp)/a_hp reduces algebraically back to sqrt(b)/a - only the corner frequency moves, to the other side of the cutoff.
How to use: feed a_hp and b_hp into the same denormalization formulas as section 5, in place of a and b.
Leftover real pole (odd n)
The same 1/s substitution applied to the leftover real-pole stage (odd n): a real pole at b_real becomes a real pole at 1/b_real.
How to use: use b_real,hp in place of b_real in the first-order denormalization formula (section 5), then in the first-order high-pass RC formula (section 14).
Standard second-order high-pass form
The high-pass counterpart of section 5's standard low-pass form: same denominator, a numerator that scales with s^2 instead of being constant, so H(0) = 0 and H(infinity) is what is finite.
How to use: this is the target the MFB or Sallen-Key high-pass component search in sections 12 and 13 matches against.
MFB high-pass components
Transfer function
The R-C dual of the low-pass MFB circuit (section 6): C1 from the input to the summing node, R1 from that node to ground, C2 from the summing node to the inverting input, and two separate feedback paths back to the output - C3 from the summing node, R2 from the inverting input.
How to use: match a and b against the stage's target (a = omega_n / Q, b = omega_n squared) to solve for the components.
Equal-capacitor resistor formulas
Setting C1 = C2 = C3 = C forces the gain c to exactly 1 (so the stage's magnitude matches the input at high frequency) and, unlike the low-pass version, always has a real solution regardless of Q - there is no capacitor ratio to clear. With C fixed, a and b reduce to two direct formulas for the two resistors.
How to use: pick C from a preferred series, then solve directly for R2 and R1 in that order (R2 needs only a and C, R1 needs R2 too).
Sallen-Key high-pass components
Defining equations
The R-C dual of the low-pass Sallen-Key circuit (section 7): two equal capacitors C in series from the input to the non-inverting input, a resistor R_bottom from the C-C junction to ground, and a feedback resistor R_top from the output back to that junction.
How to use: Q depends only on the resistor ratio, so pick that first (below), then both resistors follow directly once C is known.
Resistor ratio
Because Q depends only on this ratio, it is fixed the moment the target Q is known, before any component value is chosen - the resistor-ratio dual of section 7's capacitor ratio.
How to use: pick C from a preferred series, then solve R_top and R_bottom directly from the equations below - unlike low-pass, there is nothing left to search once C is chosen.
Resistor values
The two resistor values that meet the target Q and omega_n for the chosen C.
How to use: round both resistors to the nearest preferred values afterward; recompute the actual omega_n and Q from those rounded values, not the targets.
First-order high-pass RC
Single-pole high-pass
The same series RC as the low-pass version (section 8), just with the output taken across the resistor instead of the capacitor. tau is still RC, computed the same way (section 11, using b_real,hp in place of b_real).
How to use: pick C from a preferred series, solve R = tau / C, then round R to the nearest preferred value - identical procedure to the low-pass case.
High-pass sensitivity
MFB high-pass sensitivities
With C1 = C2 = C3 fixed by design, Q works out to a pure power-law in the two resistors alone (no C dependence) - fixed constants, unlike the low-pass MFB's value-dependent ones. C1, C2 and C3 do still drift independently in a real build, so each keeps its own term (they sum to exactly 0, since moving all three together by the same percent leaves Q unchanged).
How to use: combine all five with the root-sum-square formula (section 9) the same way as low-pass MFB's.
Sallen-Key high-pass sensitivities (fixed)
The R-C dual of section 9's low-pass Sallen-Key sensitivities: the equal input capacitors take over the equal resistors' role (and, like them, turn out to have zero sensitivity by symmetry), while the two resistors get the direct power-law exponents from Q's sqrt(Rbottom/Rtop) factor.
How to use: component tolerance barely moves Q for this topology either way - the practical limit on Q is the resistor ratio itself getting impractically large, not sensitivity.
High-pass frequency response (Bode)
Per-stage gain, second order
The high-pass counterpart of section 10's low-pass per-stage gain: same denominator, a numerator proportional to -omega^2 (from s^2 with s purely imaginary) instead of constant.
How to use: multiply into the same cascade product as any other stage to get the full filter's response at that frequency.
Per-stage gain, first order
The complex gain of a leftover first-order high-pass stage, from its actual (rounded) tau.
How to use: multiplies into the cascade product the same way as the low-pass first-order gain in section 10.
Band-pass (cascaded low-pass + high-pass)
Two independent order calculations
This tool builds a band-pass by cascading a high-pass section (passband edge fl, stopband edge fsl) with a low-pass section (passband edge fh, stopband edge fsh) - the standard approach when the two edges are well separated (more than about 2 octaves apart). Each section gets its own transition ratio and minimum order, from the exact same formulas as sections 1 and 11, just with fl/fsl or fh/fsh in place of fp/fs.
How to use: plug each k into the same Butterworth or Chebyshev order formula from section 1 to get that section's own minimum order, independently of the other section.
Everything else is unchanged
Every stage in either section is an ordinary low-pass or high-pass second-order (or leftover first-order) block, denormalized, synthesized into components and evaluated in the Bode response exactly as sections 2 through 16 already describe. Cascading the two sections - each one's output feeding the next one's input, exactly like stacking more low-pass or high-pass stages - is what turns two separate responses into one band-pass response; there is no new per-stage math to learn.
How to use: design and build the high-pass section and the low-pass section as two completely independent filters, then wire the first section's output into the second section's input.
Band-stop (summed low-pass + high-pass)
Two independent order calculations
This tool builds a band-stop (notch) by summing a low-pass branch (passband edge fl, stopband edge fsl) with a high-pass branch (passband edge fh, stopband edge fsh) - the mirror image of band-pass's edge order: fl < fsl < fsh < fh, stopband sitting inside the two passband edges instead of outside them.
How to use: plug each k into the same order formula as section 1 to get that branch's own minimum order, independently of the other branch.
Why summing works
Every stage this tool builds has an exactly known, rounding-independent gain in its own passband - MFB is always exactly -1 (forced by R1 = R3), Sallen-Key is always exactly +1, a unity-gain follower. Summing a fully-passing branch with a fully-attenuated one reliably reconstructs the original signal outside the stopband; the notch depth in between is set by the same Amin-driven order search as everywhere else in this tool, not by matching any component pair precisely (unlike, say, a Twin-T notch).
How to use: design the low-pass branch and the high-pass branch as two completely independent filters running in parallel from the same input, each feeding its own output into the summing amplifier below - never cascaded in series.
Summing amplifier
A plain inverting summing amplifier combines the two branch outputs into the final notch output. Making all three resistors equal gives an exact, rounding-proof unity-magnitude sum - any equal value works, there is nothing to search for here.
How to use: wire the low-pass branch's output through Ra, the high-pass branch's output through Rb, both into the same summing node, with Rf in feedback around the op-amp.
Parallel-sum frequency response
Unlike every other filter type in this tool (where stage gains multiply in a single cascade), a band-stop's two branches must be evaluated as separate cascades and then added, not multiplied - matching what the summing amplifier physically does.
How to use: compute each branch's own cascade product (section 10 or 16, stage by stage within that branch only) at a given frequency, then add the two complex results together before converting to dB - never multiply the two branches together.
Tow-Thomas biquad
Transfer functions
Two integrators in a loop with one damping resistor: A1 is an inverting integrator with Rd across its capacitor, fed by R1 from the input and by Ra from the inverter; A2 is an inverting integrator (Rb, C2); A3 is a unity inverter (r, r) that closes the loop. KCL at the two virtual grounds, with V3 = -V2, gives one denominator for every output.
Design with equal parts
C1 = C2 = C and Ra = Rb = R make the three knobs independent: R sets the corner, Rd alone sets Q, R1 alone sets the gain (unity for R1 = R). No ratio grows with Q, unlike the 8Q² capacitor ratio of MFB or the 4Q² ratio of Sallen-Key.
How to use: pick C from a preferred series so R lands near 10 kilo-ohm, round R, then solve Rd against the rounded R and round it; the realized Q is exactly Rd/R and the gain exactly 1.
High-pass form (feedforward)
Feed the input into A1's node through a capacitor Cin instead of R1: the input term gains a factor s, A1's output becomes the high-pass and A2's the band-pass. Cin = C gives unity magnitude, inverting.
Sensitivities
Q is a product of powers of the parts, so every sensitivity is a fixed exponent, independent of Q and of the values. The input element and the inverter's matched pair do not enter Q.
Compared with MFB and Sallen-Key
Better: independent tuning of f0, Q and gain; any Q with standard values (Rd = Q R); fixed sensitivities of magnitude 1/2 or 1; low-pass, band-pass and high-pass outputs from one circuit; a non-inverting low-pass. Worse: three op-amps per stage instead of one (parts, supply current, noise, board space), and the loop's extra phase lag raises the realized Q above the design value when the op-amps are slow (Q enhancement), so the gain-bandwidth product has to be well above Q times f0.
How to use: reach for the Tow-Thomas when Q is high (past about 5 the one-op-amp ratios stop being buildable), when the filter has to be tuned on the bench, or when the band-pass or notch output is wanted too. For an ordinary low-Q stage, MFB or Sallen-Key does the same job with one op-amp.