the stack guide
Linux noise suppression: the open-source stack, ranked honestly
Here is the whole answer in one paragraph. On a current Linux desktop you get excellent real-time microphone noise suppression from free software: install EasyEffects, add its Noise Reduction effect to your input pipeline, and you're done — fan hum, keyboard clatter and household drone drop away before any app ever hears your mic. Under the hood that's RNNoise, a small open model from the Xiph.Org world, and the same model is reachable through four other doors when EasyEffects doesn't fit: a raw PipeWire filter-chain, the OBS Studio filter, the dormant-but-functional NoiseTorch, and ffmpeg for files you already recorded. Total cost: zero. Nobody pays us to say any of that — almost nothing on this page has an affiliate program, and the one product that does (Krisp) doesn't even run natively on Linux. We'll get to it, briefly, near the end.
arnndn/afftdn.Why this guide ranks paths, not "products"
Most roundups in this niche pretend there are ten competing "Linux noise cancellation apps" and rank them on sound quality. That's theater. Four of the five serious paths run an RNNoise-family model live, so their output is broadly similar; the fifth (ffmpeg) works on files after the fact, with the same model in arnndn or a different algorithm in afftdn. What actually differs — dramatically — is whether the path is maintained, whether your distro packages it, and how much friction sits between you and a working denoised mic.
In open source, those things are checkable facts, not vibes. A project's last release date is public. Its presence in Arch extra or Debian trixie is public. So we score exactly those checkable things and publish the rubric. The table below comes from a script in our repo (tools/score.py) that turns verified dates and packaging counts into points — we re-run it rather than hand-edit numbers, so if NoiseTorch wakes up tomorrow, its score changes mechanically, not editorially.
The five paths, scored
Score = maintenance freshness (30) + verified official packaging (20) + fit with a 2026 default desktop (20) + setup friction (15) + scope of what it can clean (15). It is not an audio-quality score. Inputs verified 2026-09-20.
| Path | Fit score | Latest release | Best for |
|---|---|---|---|
| EasyEffects | 98/100 | v8.2.9 · 2026-08-31 | Any PipeWire desktop; the default answer |
| CLI cleanup (ffmpeg arnndn/afftdn) | 85/100 | ffmpeg 9.0.2 · 2026-09-18 | Files already recorded; batch jobs |
| OBS Noise Suppression filter | 84/100 | OBS 32.2.2 · 2026-08-14 | Screen recordings made in OBS anyway |
| PipeWire filter-chain | 75/100 | plugin v1.21 · 2026-05-29 | GUI-free, declarative, survives reboots |
| NoiseTorch | 49/100 | v0.12.2 · 2022-06-17 | Legacy PulseAudio boxes; nostalgia |
Numbers above are pasted from tools/score.py output, never typed by hand. Rubric constants (setup-friction judgments and all) are documented in the script itself.computed 2026-09-20 · inputs verified 2026-09-20
- maintenance /30
- packaging /20
- stack fit /20
- setup /15
- scope /15
tools/score.py from its inputs verified 2026-09-20 — the empty track is the points a path doesn’t earn. Not an audio-quality score.Path 1: EasyEffects — the default answer
EasyEffects is a processing rack for PipeWire: effects chains for both your output and, crucially here, your microphone input. For noise it actually ships two engines — a Noise Reduction effect built on RNNoise, and a heavier Deep Noise Remover built on DeepFilterNet for messier, non-stationary noise. You add the effect to the input pipeline, save it as a preset, tell EasyEffects to autoload that preset for your mic, and every app on the system simply receives clean audio.
Its scorecard is boring in the best way: released weeks ago, repo active days ago, and packaged in every official channel we checked — Arch extra, Debian trixie, Fedora, Ubuntu and Flathub. One honest caveat: it's built for PipeWire, so a genuinely old PulseAudio-only box can't run it. Full setup guide →
Path 2: ffmpeg and SoX — when the noise already happened
Suppression at the mic is the goal, but half of real life is a recording that already exists and already hums. ffmpeg — released, characteristically, two days before we verified this page — covers both flavors of that problem: arnndn runs an RNNoise model over a file, and afftdn does classic FFT denoising when the noise is a steady hiss or hum. SoX adds the venerable profile-then-reduce workflow. These are per-file commands rather than a system fix, which is why the path scores below EasyEffects despite ffmpeg's ubiquity. Commands and model files →
Path 3: OBS's built-in filter — free with the recorder
If you record your screen with OBS Studio on Linux — demos, walkthroughs, meeting archives — you may not need to touch the system layer at all. OBS ships a Noise Suppression filter offering RNNoise (the default; OBS's own docs note it's higher quality at more CPU) and Speex (lighter, adjustable, harsher at strong settings). It cleans only what OBS records, which is sometimes exactly the right scope: your live calls stay untouched while your recordings come out clean. Filter order and settings →
Path 4: PipeWire filter-chain — the text-file purist's door
PipeWire's filter-chain module builds processing graphs from LADSPA/LV2 plugins with nothing but a config file. Drop werman's noise-suppression-for-voice LADSPA plugin into a filter-chain definition and PipeWire manufactures a virtual "denoised source" that every app sees as a normal microphone. On the plugin's freshness, one wrinkle worth knowing because it trips up automated checkers: its newest tag is v1.21, dated 2026-05-29, but the maintainer never turned v1.20 or v1.21 into GitHub "release" objects, so GitHub's own latest-release API still answers v1.10, May 2024. We score the tag, because the tag is the code. No GUI, no user-session app, works on a headless box, versionable in your dotfiles. The score dings it only for friction — you edit configs and know your node names — and for thin verified packaging of the plugin outside Arch. The config, annotated →
Path 5: NoiseTorch — dormant, functional, oversold elsewhere
NoiseTorch is the tool every 2021 blog post still recommends first, and this is where TuxTone earns its keep: NoiseTorch's last release is v0.12.2, from June 2022. The last commit we could find on the default branch is from January 2025. It isn't in Arch's official repos; it isn't in Debian at all. After a suspected 2022 supply-chain scare, a community audit found no malicious code and the project continued as NoiseTorch-ng — an episode we unpack in a full timeline — but continuation is not maintenance. It still works, its one-button UX is still the friendliest ever made for this job, and on a PulseAudio holdout box it remains a fine choice. On a current PipeWire desktop, EasyEffects does the same job with a heartbeat. Honest status and setup →
What about paid tools? (The honest section)
The paid noise-suppression market mostly ignores Linux desktops, and you lose very little by being ignored. The big name is Krisp, and the fact that matters is simple: Krisp ships no native Linux desktop app — its own system-requirements page lists Windows and macOS only. (Its SDK does run on Linux inside a few third-party apps, but you can't install Krisp itself on your machine.) We keep a whole honest page on this: Krisp on Linux.
So when is Krisp worth even a look from a Linux user? Only when your life is genuinely cross-platform:
Half your calls happen on a work Mac or a Windows dual-boot?
Then the RNNoise stack covers your Linux side, and Krisp covers the other OS — it's the strongest of the paid suppressors there, with a 7-day trial (no card) and a Core plan at $8/user/month billed annually or $16 monthly. A 60-minutes-per-day free plan still exists too, though these days it lives in the help-center docs rather than on the pricing page. Details verified 2026-09-20.
Paid link, flagged: this button is the guide’s single route through /go/. Start a Krisp plan from it and Krisp sends TuxTone a referral fee; the price stays whatever krisp.ai charges. Nothing ranked above it has ever paid us.
Layering rules: one suppressor at a time
A mistake we see constantly once people discover this stack: running suppression twice. System-level RNNoise plus a meeting app's built-in noise removal plus the browser's own processing produces watery, warbling speech — each layer treats the previous layer's artifacts as noise. Pick one layer and switch the others off:
- If EasyEffects or a filter-chain is denoising system-wide, disable noise suppression inside your calling apps, and mind the browser: sites can request their own processing via WebRTC settings. Our mic-setup page shows where the double-processing usually hides.
- If you only need clean OBS recordings, filter in OBS and leave the system alone.
- Post-processing with ffmpeg? Feed it the rawest file you have, not one already scrubbed live.
What would change these rankings
A ranking you can't falsify is an opinion wearing a lab coat, so here are the specific events that would move these numbers — mechanically, via tools/score.py, not by us changing our minds:
- NoiseTorch publishes a release. One tagged release resets its maintenance component from 3 points to 30 and lifts it from 49 to 76 — past the filter-chain, into genuine contention. The project is not archived, so this is entirely possible.
- The LADSPA plugin lands in Debian or Fedora officially. Its packaging score is the thinnest part of the filter-chain's case; each verified official channel is worth four points.
- EasyEffects stops shipping. Four months of silence drops it from 98 to 92; a full year takes it to 83, below the CLI path. Nothing is permanently the default answer, and the script doesn't care that we like it.
- PipeWire ships suppression natively. If the audio server grows a first-class denoiser, the entire "which wrapper" question collapses and this page gets rewritten, not patched.
- --- as scored, 2026-09-20
- +++ the same script, if one input changes
- @@ NoiseTorch ships one tagged release @@
- was: NoiseTorch49maintenance 3
- becomes: NoiseTorch76maintenance 30 · passes the filter-chain (75)
- @@ EasyEffects stops shipping @@
- was: EasyEffects98maintenance 30
- becomes: EasyEffects, four months quiet92maintenance 24
- becomes: EasyEffects, a year quiet83maintenance 15 · below the CLI path (85)
- @@ The LADSPA plugin lands officially in Debian or Fedora @@
- was: PipeWire filter-chain75packaging 4
- becomes: filter-chain, one more channel79packaging 8
- becomes: filter-chain, both83packaging 12
tools/score.py’s arithmetic with a single input changed; the plugin lines add the four points per packaging channel named above.What would not change the rankings: a new listicle, a Reddit thread, or a vendor's marketing page. We score releases, repositories and package databases.
FAQ
Is any of this actually free, or "free trial" free?
Actually free. RNNoise is BSD-licensed; EasyEffects, NoiseTorch, PipeWire, OBS, ffmpeg and SoX are all free software you install from your distro or Flathub. No tiers, no accounts, no minute caps. The only priced product on this page is Krisp, which is labeled, optional and not even native to this OS.
Which path sounds best?
For steady noise (fans, HVAC, traffic drone) they're all fine and all similar, because they share the model family. For erratic noise — clattering dishes, kids, a mechanical keyboard mid-sentence — EasyEffects' DeepFilterNet engine has the most headroom of the free options. If a recording is badly damaged, no real-time path rescues it; do a careful ffmpeg/SoX pass instead.
Does RNNoise slow my machine down?
No. The model is tiny — designed years ago to run on modest CPUs with milliseconds of latency. DeepFilterNet costs more CPU than RNNoise but is still comfortable on any recent desktop. You will not notice either while compiling.
I'm on Wayland/X11 — does that matter?
Not at all. Everything here lives in the audio graph, not the display stack.
Can this clean up the other person's noise?
Yes, and almost nobody sets it up. Everything above defaults to cleaning your outbound microphone, but noise suppression is just a filter — point it at your output pipeline instead and it cleans what arrives in your ears. EasyEffects has separate Output and Input tabs precisely for this, so a colleague broadcasting their café can be tidied on your end. Expect worse results than on your own mic: their audio has already been compressed by their codec, and you're denoising damage rather than noise. It's a rescue, not a fix.
Does any of this need a GPU?
No, and that's a meaningful difference from the Windows-centric advice you'll find elsewhere, where hardware-accelerated suppression is often the headline. Every path on this page is plain CPU code — RNNoise by design, DeepFilterNet by a comfortable margin on modern hardware. Integrated graphics, an ancient ThinkPad, a headless box in a closet: all fine.
Why do you keep printing dates on facts?
Because this stack's biggest trap is stale advice. NoiseTorch was the right first answer in 2021 and is the wrong one on a 2026 PipeWire desktop, and only the dates tell you that. Every fragile claim on TuxTone carries the day we checked it: this page, 2026-09-20.