Active Filter Design with Sallen-Key Sections

After reading this you can turn a filter specification (type, response family, cutoff, order) into exact resistor and capacitor values for a cascade of op-amp stages, and you can read the resulting Bode plot with confidence.

Suppose you have an audio signal riding on 60 Hz hum and some high-frequency hiss, and you want to keep the 300 Hz to 3 kHz voice band. A single RC section rolls off at only 6 dB per octave, so at 6 kHz (one octave above 3 kHz) it has attenuated the hiss by just 6 dB. That is not enough. A 4th-order low-pass filter rolls off at 24 dB per octave, cutting that same hiss by 24 dB. The Sallen-Key topology builds those higher orders cheaply: one op-amp, two resistors and two capacitors per 2nd-order stage, cascaded until you reach the order you need.

What a Sallen-Key filter is

A Sallen-Key section is a single op-amp wired as a unity-gain buffer with a small RC network around it. Each section produces a 2nd-order response. That means its magnitude falls off asymptotically at 12 dB per octave (40 dB per decade) above cutoff for a low-pass, or below cutoff for a high-pass.

Filter order is the total number of reactive poles. An 8th-order filter is four 2nd-order stages in series. Odd orders add one plain 1st-order RC stage (6 dB per octave) to make up the last pole. This tool cascades stages lowest-Q first, which keeps early stages from clipping on transients before later high-Q stages sharpen the response.

Cutoff frequency f_c
The -3 dB point for Butterworth and Bessel. For Chebyshev it is the edge of the ripple band, where the response last touches the ripple limit.
Q (quality factor)
How sharply a stage peaks near its own pole frequency. Q of 0.707 gives no peak; higher Q gives a bump in the magnitude response.
Response family
The mathematical shape of the transfer function: Butterworth (flattest passband), Chebyshev (steeper but rippled), Bessel (gentlest but with linear phase).

Choosing a response family

The three families are different trade-offs against the same fixed order. Pick by what your signal cannot tolerate.

Butterworth is maximally flat in the passband: no ripple, monotonic rolloff. Use it when you want a predictable, flat gain up to f_c and do not need the sharpest possible transition.

Chebyshev accepts ripple in the passband (0.5 dB or 1 dB here) to buy a steeper transition. A 4th-order Chebyshev 1 dB filter reaches roughly 9 dB more attenuation at twice the cutoff than a 4th-order Butterworth. The cost is that gain wiggles up and down by up to 1 dB across the passband.

Bessel gives the gentlest rolloff of the three but keeps group delay almost constant across the passband. Constant group delay means all frequencies are delayed by the same time, so a square wave or pulse passes through with minimal overshoot and ringing. Use Bessel when waveform shape matters more than sharp frequency cutoff.

If you cannot decide, start with Butterworth. It is the default for a reason: flat passband, sensible rolloff, and no ringing beyond the mild Gibbs overshoot common to all sharp filters.

The Sallen-Key transfer function

A low-pass Sallen-Key section with equal resistors R and unequal capacitors has this transfer function:

H(s) = \frac{\omega_0^2}{s^2 + \frac{\omega_0}{Q} s + \omega_0^2}

Here s = j\omega is the complex frequency, \omega_0 = 2\pi f_0 is the stage pole frequency in radians per second, and Q sets the sharpness. Each family and order fixes a specific set of (f_0, Q) pairs, one per stage. These come from tables of normalized filter polynomials.

For the equal-resistor low-pass form, the component relations are:

C_1 = \frac{2Q}{\omega_0 R}, \qquad C_2 = \frac{1}{2 Q \omega_0 R}

You pick R (both resistors in the stage share it), then the two capacitors follow. Notice C_1 / C_2 = 4Q^2: high-Q stages need a large capacitor ratio. A stage with Q = 2 needs C_1 sixteen times larger than C_2.

The high-pass form swaps roles: you fix both capacitors at C and solve for the two resistors instead.

R_1 = \frac{2Q}{\omega_0 C}, \qquad R_2 = \frac{1}{2 Q \omega_0 C}

Worked example: 4th-order Butterworth low-pass at 1 kHz

Reproducing the demo

Load the demo: low-pass, Butterworth, order 4, f_c = 1000 Hz, resistors 10 kΩ. A 4th-order Butterworth splits into two stages. The normalized Butterworth pole frequencies both sit at f_c, but the two stages have different Q values: 0.5412 and 1.3066.

  1. Convert cutoff to radians: \omega_0 = 2\pi \cdot 1000 = 6283 \ \text{rad/s}.
  2. Stage 1, Q = 0.5412, R = 10 kΩ. Then C_1 = \frac{2 \cdot 0.5412}{6283 \cdot 10000} = 17.2 \ \text{nF} and C_2 = \frac{1}{2 \cdot 0.5412 \cdot 6283 \cdot 10000} = 14.71 \ \text{nF}.
  3. Stage 2, Q = 1.3066, R = 10 kΩ. Then C_1 = \frac{2 \cdot 1.3066}{6283 \cdot 10000} = 41.59 \ \text{nF} and C_2 = \frac{1}{2 \cdot 1.3066 \cdot 6283 \cdot 10000} = 6.091 \ \text{nF}.
  4. Check the ratio on stage 2: C_1 / C_2 = 41.59 / 6.091 = 6.83 \approx 4Q^2 = 4 \cdot 1.3066^2 = 6.83. Good.

Cascade stage 1 (low Q) first, then stage 2. The combined response is maximally flat to 1 kHz, then falls at 24 dB per octave.

Component values for the 4th-order Butterworth demo (R = 10 kΩ each stage)
StageQC1 (nF)C2 (nF)C1/C2
10.541217.214.711.169
21.30741.596.0916.828

Reading the Bode plot

The magnitude plot shows gain in dB against frequency on a log scale. For this Butterworth design you read three landmarks: flat 0 dB gain in the passband, exactly -3 dB at 1 kHz, and a straight-line slope of -24 dB per octave far above cutoff. One octave is a doubling of frequency, so from 2 kHz to 4 kHz the curve drops another 24 dB.

Flat to 1 kHz, -3 dB at the marker, then settling to -24 dB per octave. At 2 kHz gain is about -24 dB and at 4 kHz about -48 dB: the full 24 dB per octave of a 4th-order response.

The phase plot matters when you cascade or when timing counts. Each pole adds up to 90 degrees of phase lag, so a 4th-order low-pass swings from 0 to -360 degrees. Bessel filters keep this phase change nearly linear with frequency, which is what "constant group delay" means: group delay is the negative slope of phase, and a straight phase line has constant slope.

Compare families at fixed order and cutoff: a 4th-order Chebyshev 1 dB reaches -30 dB near 1.9 kHz, Butterworth near 2.4 kHz, and Bessel near 3.5 kHz. The steeper the rolloff, the more the phase bends and the more a pulse rings.

Common mistakes

Rounding capacitors carelessly. The computed caps are exact. Standard E-series values will not match. If you round stage 2's C_1 = 41.59 nF to 47 nF, its Q and pole frequency both shift, and a high-Q stage is the most sensitive. Adjust the paired resistor to compensate, or use the E-Series Resistor Solver to hit the value with a pair.

Do not ignore op-amp limits. A unity-gain Sallen-Key still needs the op-amp's gain-bandwidth product to exceed the highest stage pole frequency by a wide margin, typically 50 to 100 times. Design a 100 kHz filter with a 1 MHz op-amp and the response will sag and the high-Q stage may misbehave.

Confusing the cutoff meaning. For Chebyshev, f_c is the ripple band edge, not the -3 dB point. The actual -3 dB frequency of a Chebyshev sits above f_c by an amount that depends on ripple and order. Read the plot; do not assume -3 dB at f_c.

Forgetting source and load impedance. A high-pass stage's input resistor loads the previous stage. The unity-gain buffer output is low impedance, which is why cascading works, but the very first stage still sees your source impedance in series. Keep source impedance well below the stage resistor value.

Related tools on this site

Once you have exact values, these help you build and verify the circuit. Snap capacitor and resistor targets to real parts with the E-Series Resistor Solver. Decode or produce resistor stripes with the Resistor Color Code Calculator. For the DC bias and reference networks around your op-amp, the Voltage Divider Calculator and Ohm's Law Calculator cover the arithmetic. If you want intuition for how a single RC section charges and sets a time constant, see the Capacitor Charge Calculator, since \tau = RC is the building block of every pole here.

Frequently asked questions

Why unity gain instead of a gain stage?

Unity-gain Sallen-Key sections are the least sensitive to component tolerance and the easiest to cascade. Adding gain per stage is possible but couples gain, Q and cutoff together, making tuning harder. Put any needed gain in a separate amplifier before or after the filter.

How many op-amps do I need?

One per 2nd-order stage. An even order N uses N/2 op-amps. An odd order adds a passive RC section (no op-amp) for the extra pole, so a 5th-order filter uses two op-amps plus one RC stage.

Can I use the same filter for low-pass and high-pass?

No. The topology is the same but resistors and capacitors swap roles. A high-pass design fixes both capacitors and solves for resistors. Use the filter type selector and let the tool recompute.

Why does my Chebyshev filter peak above 0 dB?

That is the passband ripple, and it is expected. A 1 dB Chebyshev swings between 0 and -1 dB across the passband. If you need flat gain, choose Butterworth instead. If you need the ripple gone but the steep rolloff kept, raise the order and accept more parts.

What limits the maximum order?

Component tolerance and op-amp quality. Beyond 8th order the high-Q stages demand capacitor ratios above 30 and matched components better than 1 percent. This tool stops at 8th order because higher orders rarely pay off against those practical limits.