// the find
gorhill/uBlock
uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean.
uBlock Origin is the filter-based content blocker that everyone else is measured against. It blocks ads, trackers, and malware URLs using EasyList-compatible filter syntax extended with procedural cosmetic filters and scriptlet injection. It's for users who want something that actually works and developers who want to understand how a high-performance filter engine is built.
The filter engine is genuinely fast — it uses a compressed hostname trie (HNTrie) and compiled filter representations rather than linear regex matching, which is why it benchmarks lower on memory and CPU than AdBlock Plus or Ghostery. The two-tier UI is well-thought-out: basic mode is set-and-forget, advanced mode exposes a per-site dynamic filtering firewall that lets you block all third-party scripts or frames on a domain without writing a single filter rule. Extended syntax — procedural cosmetic filters like :has() and :xpath(), HTML filters, and scriptlet injection — handles anti-adblock paywalls that CSS hiding alone can't touch. The platform/ abstraction layer cleanly separates shared core logic from browser-specific glue, which is what makes maintaining Firefox, Chromium MV2, and MV3 variants from one codebase feasible at all.
The Chrome story is bad and getting worse: MV2 support ends at Chrome 139, and the MV3 replacement (uBlock Origin Lite) is a structurally weaker product because Chrome's declarativeNetRequest API caps static rules and prohibits the dynamic rule evaluation that makes the full filter engine possible — no per-site dynamic filtering, no scriptlet injection, procedural cosmetic filters largely gone. There's no automated test suite: docs/tests/ is a folder of HTML pages you manually open in a browser. The GitHub Actions workflow handles release builds, not correctness. The extension is also heavily dependent on external filter lists (EasyList, EasyPrivacy) it doesn't control — list maintainer decisions, mistakes, or political disagreements propagate directly to users. Thunderbird support was abandoned at 1.49.2 and the README says so plainly, which is honest but means it's dead weight in the project.