Designing Your First RC Low-Pass Filter: A Complete Walkthrough

There's a moment in almost every electronics project where noise shows up uninvited — a high-frequency hiss riding on top of a sensor signal, a PWM whistle bleeding into an audio line, a ripple on a DC rail that shouldn't be there. Nine times out of ten, an RC low-pass filter is the first tool you reach for. It's two components, a handful of math, and if you pick the values right, the problem disappears.

This walkthrough takes you through the whole design process from scratch: what the circuit actually does, how to calculate R and C for a specific cutoff frequency, what the rolloff looks like in practice, and how to pick real components off a distributor shelf without running into trouble.

What the Filter Is Actually Doing

A basic RC low-pass filter is a resistor in series with the signal path, followed by a capacitor to ground. Low-frequency signals (including DC) pass through almost untouched because the capacitor looks like an open circuit at those frequencies — it blocks the current path to ground, so the voltage shows up intact at the output. High-frequency signals, on the other hand, find the capacitor's impedance dropping, which means more current flows to ground and less appears at the output node. The transition between "passes" and "blocks" isn't a cliff — it's a gradual slope.

The frequency where the output power drops to half its input value (equivalently, where the output voltage is 1/√2 ≈ 0.707 of the input) is called the cutoff frequency, or fc. This is your design target.

The Core Formula

The cutoff frequency for a first-order RC filter is:

f_c = 1 / (2π × R × C)

That's it. Rearranging for the two common use cases:

  • If you've chosen a capacitor and need the resistor: R = 1 / (2π × f_c × C)
  • If you've chosen a resistor and need the capacitor: C = 1 / (2π × f_c × R)

Let's make this concrete. Suppose you're cleaning up a 0–3.3 V analog sensor output before feeding it to a microcontroller's ADC. The sensor updates at around 100 Hz, but the signal line is picking up 50 Hz mains interference and some higher-frequency switching noise around 10 kHz. You want everything above roughly 500 Hz gone, while keeping the 100 Hz sensor data intact.

Target cutoff: f_c = 500 Hz.

Start by picking a capacitor from what you have on hand — say a 100 nF ceramic capacitor (a very common value, cheap, widely available). Solve for R:

R = 1 / (2π × 500 × 100×10⁻⁹)
R = 1 / (2π × 0.00005)
R = 1 / 0.000314
R ≈ 3,183 Ω

The nearest standard resistor value is 3.3 kΩ (E24 series). Let's verify the actual cutoff with that value:

f_c = 1 / (2π × 3300 × 100×10⁻⁹)
f_c = 1 / 0.002073
f_c ≈ 482 Hz

Close enough. At 482 Hz instead of 500 Hz, you haven't meaningfully changed the design intent.

Understanding the Rolloff Slope

This is where a lot of beginners get surprised. At f_c, the filter has only attenuated the signal by about 3 dB — you're barely touching it. The filter keeps rolling off past that point, and a first-order RC filter drops at –20 dB per decade above f_c.

What that means practically: at 10× your cutoff frequency (5 kHz in our example), you're down 20 dB — that's the signal amplitude at about 10% of its original value. At 100× the cutoff (50 kHz), you're down 40 dB — amplitude at 1%. That 10 kHz switching noise you wanted to kill? It's at roughly 20× f_c, which puts attenuation at around 26 dB. That's solid but not total elimination.

If –20 dB/decade isn't steep enough, you can cascade two identical RC sections (second-order filter) to get –40 dB/decade. Just be aware that when you chain them, the cutoff frequency shifts slightly — two identical stages give you a –3 dB point at about 0.644 × f_c of each individual stage, so you need to design each stage for a somewhat higher frequency to compensate. For truly sharp rolloff, you'd move to active filter topologies like Sallen-Key, but for many analog cleanup jobs, a single RC stage is perfectly adequate.

Picking Real Components Without Getting Burned

Capacitor Selection

Not all capacitors behave the same, and this matters for filters.

Ceramic (MLCC): Best general choice for filter capacitors in the 1 nF to 1 µF range. Fast, low ESR, cheap. The catch: X5R and X7R dielectrics have a voltage coefficient — their capacitance drops as you apply DC voltage across them. A 100 nF X5R cap rated at 6.3 V might behave more like 60–70 nF when you put 3.3 V across it. Use a 10 V or 16 V rating when your signal is in the 3–5 V range. NP0/C0G ceramics don't have this problem and are worth the slight extra cost for precision filter work.

Film capacitors (polyester/polypropylene): Excellent stability, no voltage coefficient, good for audio-frequency filters. Larger and more expensive than ceramics, but the precision is worth it if you're designing a crossover or audio path filter where accuracy matters.

Electrolytic: Generally avoid these in signal-path filters. High tolerance (often ±20%), poor high-frequency behavior, and they're polarized. Fine for power supply decoupling, not great for precision filtering.

Also check the capacitor's tolerance. Most MLCC capacitors are ±10% or ±20%. If you need your cutoff frequency accurate to better than 5%, use ±5% C0G ceramics or film caps.

Resistor Selection

Standard 1% metal film resistors are almost always fine. Keep the value in a practical range — somewhere between 1 kΩ and 100 kΩ for most signal-path applications.

Too low (below ~100 Ω): The resistor needs to source significant current to charge the capacitor on fast edges. It also loads your source circuit. Voltage divider action between your source impedance and the filter resistor can shift the actual cutoff.

Too high (above ~1 MΩ): The filter becomes sensitive to parasitic capacitance on the PCB and input bias currents if you're driving an op-amp input. Leakage currents can also introduce DC errors.

The 1 kΩ to 100 kΩ sweet spot avoids both problems for most signal-chain work.

Source and Load Impedance: The Hidden Factor

The formula f_c = 1/(2πRC) assumes an ideal voltage source driving the filter and an infinite impedance load. In practice, your source has some output impedance Z_source, and your load has some input impedance Z_load.

The actual resistance in the RC time constant is R_total = R_source + R_filter + (R_filter || R_load)... well, more precisely, it's (Z_source + R) in parallel thinking with the load. A simpler practical rule: if your source impedance is less than 10% of your filter resistor, and your load impedance is more than 10× your filter resistor, the formula works with less than 1 dB of error. That's typically fine.

If you're driving the filter from a high-impedance source — like a potentiometer at mid-sweep, which can look like several kΩ — either buffer it with a unity-gain op-amp first, or include the source impedance in your R calculation.

Putting It on a PCB (or Breadboard)

A few layout notes that save headaches:

  • Place the capacitor as close to the filter node as possible. Long traces add parasitic inductance that can resonate with the capacitor at high frequencies.
  • The capacitor's ground return should connect to the ground plane with a short, direct via — not a long trace that shares a path with noisy digital ground currents.
  • If you're filtering an analog signal on a mixed-signal board, keep the filter physically close to the ADC input or wherever the signal is consumed, not at the point of generation. Filter at the destination.

Verifying Your Design

Before committing to production, sweep the filter with a function generator and oscilloscope if you have them. Set the generator to your target cutoff frequency, measure input and output amplitude, and confirm you're seeing approximately 0.707× (or –3 dB) attenuation. Then sweep up to 10× f_c and verify roughly –20 dB. If the numbers are off, the most likely culprits are capacitor voltage coefficient effects, source loading, or component tolerances stacking unfavorably.

Free simulation tools like LTspice let you model this in software before touching hardware. Build the circuit with an AC voltage source, run a .ac simulation from 10 Hz to 1 MHz, and read off the Bode plot. It takes five minutes and catches most design issues before you solder anything.

Final Thought

An RC low-pass filter is one of those circuits that seems almost too simple to take seriously — until you've spent an afternoon chasing noise that a 3.3 kΩ resistor and a 100 nF cap would have squashed in five minutes. The math is a single formula, the components cost pennies, and the payoff is a cleaner signal that makes everything downstream work better. Get comfortable designing these by hand, and you'll find yourself reaching for them constantly.