How Ad Blockers Actually Work
A plain-English explanation of how modern ad blockers work in 2026, including filter lists, cosmetic rules, request blocking and the role of Manifest V3.
Ad blockers are one of those products that feel like magic and turn out, on inspection, to be refreshingly straightforward. There is no machine learning, no neural network, no AI guesswork, just lists of patterns and an engine that applies them. Once you understand the moving parts, every "why is this site showing ads" or "why did this break" question makes intuitive sense.
This article walks through the entire stack in plain English, with concrete examples. It pairs well with the Manifest V3 explainer, which covers how the engine plugs into the browser.
The two jobs of an ad blocker
Every ad blocker does two things, in this order:
- Network blocking. Prevent the request for the ad, tracker or analytics script from ever leaving your browser.
- Cosmetic blocking. Hide any element on the page that, despite step 1, still ended up rendering.
These are independent. The network block is the powerful one because it stops bytes from being downloaded, scripts from being executed, and trackers from running. The cosmetic block is the polish layer that makes the page look clean.
Filter lists
A filter list is a text file. Each line is either a rule or a comment. There are two main rule families.
Network rules describe URLs to block. They look like this:
||doubleclick.net^
||googlesyndication.com^
||example-tracker.io^$third-party
Read in English: block any request to a host containing doubleclick.net, then googlesyndication.com, then example-tracker.io but only when it is a third-party request.
Cosmetic rules describe page elements to hide. They look like this:
example.com##.ad-banner
example.com##div[data-ad-slot]
##.cookie-banner-popup
Read in English: on example.com, hide any element with class "ad-banner". On every site, hide elements with class "cookie-banner-popup".
These rules are simple, but at scale they are extremely effective. The flagship community list, EasyList, contains tens of thousands of rules and is updated several times a day by a small team of volunteers who track new ad networks, new tracker patterns and new cosmetic tricks.
The engine
Until 2024, most blockers ran a JavaScript engine inside the extension that watched every request the browser made, compared the URL to every rule in every filter list, and decided whether to block it. This was flexible but expensive. Every request paid a small JavaScript tax.
Under Manifest V3, blockers compile their filter lists into a JSON ruleset, hand it to the browser, and the browser evaluates the rules in native C++ code as part of its normal request handling. The extension barely runs at all in the steady state. The CPU cost of a modern blocker on a typical page is essentially zero.
The trade-off is that the rules must be declarable up front. Anything that needs to inspect the page state at request time has to be done via narrower, more targeted scripts on specific pages. For example, NovaBlock's YouTube module runs only on YouTube domains because that is where it is needed, and nowhere else. Same for cookie banner removal logic on sites with unusual banner implementations.
How a request actually gets blocked
Suppose you load a news article. The browser does roughly this:
- Parse the HTML, find references to images, scripts, stylesheets and iframes.
- For each one, look up the URL in the blocker's compiled ruleset.
- If a network rule matches, do not send the request. The browser silently treats the resource as missing.
- If no network rule matches, send the request.
- Once the page is rendered, the blocker's cosmetic rules apply, hiding any matching elements with CSS.
This process happens hundreds of times on a typical page. On a heavy news site, a third of all requests might be blocked before the article header has even rendered.
Tracker blocking vs ad blocking
Conceptually, tracker blocking and ad blocking are the same mechanism applied to different lists. Tracker rules block analytics scripts, fingerprinting libraries, conversion pixels and social media widgets that double as trackers. Ad rules block the actual ad creatives, the ad-serving networks and the auction infrastructure.
In practice the two overlap heavily because most trackers are paid for by ads, and most ads ride on tracker infrastructure. Our block trackers guide drills down on the tracker side.
Cookie banners
Cookie banners are not ads, but they are an "annoyance" category that most modern blockers also handle. The mechanism is different: rather than blocking a request, the blocker injects a small helper that clicks "Reject all" (or the equivalent) before the user sees the banner. On sites where automatic dismissal is risky, the blocker falls back to cosmetic hiding. Our remove cookie banners guide goes into the implementation detail.
YouTube
YouTube is a special case because the ads are served first-party, on the same domain as the videos. Generic filter list rules cannot block them without breaking the site. Blockers that take YouTube seriously ship dedicated logic that runs only on YouTube, intercepting the calls that fetch ad metadata and skipping over them. This logic has to be updated frequently because YouTube updates its anti-blocker code frequently. See block YouTube ads.
Pop-ups, pop-unders and overlays
Pop-ups are typically defeated at the network level (block the script that opens them) or at the JavaScript level (intercept the call to window.open). Pop-unders that open below the current window are blocked the same way. Full-page overlays that lock scrolling are removed via cosmetic rules. See block pop-ups.
How filter lists are maintained
EasyList and friends are maintained by small teams of volunteers, typically with day jobs in software or sysadmin work. New ad networks are reported via mailing lists and issue trackers. Maintainers verify the report, write the rule, push the update. Within hours every installed blocker on the planet has the new rule.
Many blockers also maintain in-house supplemental lists. NovaBlock contributes back to community lists where the rule is broadly useful, and maintains a small private list for newer tracking SDKs that have not yet been picked up by the community.
Why a site still shows an ad
Three common reasons:
- First-party ad. The ad is served from the same domain as the page. Without breaking the site, a generic rule cannot block it. Site-specific rules can, but adding them is a manual process.
- Anti-blocker workaround. The site detects the blocker and routes ads through a different URL or domain. Filter list maintainers eventually catch up.
- Stale filter list. Your blocker has not refreshed its lists. Modern blockers refresh automatically; if yours does not, that is a sign to switch.
Our adblock detection article covers what happens when a site detects your blocker and asks you to disable it.
Why a site breaks
Sites occasionally break because a blocked script was actually doing something legitimate alongside its ad function, or because a cosmetic rule hid too much. The fix is almost always per-site: filter list maintainers add a more surgical rule. In the meantime, one-click per-site pause is the standard recovery.
Why a blocker uses memory at all
Even though MV3 evaluation is in native code, the ruleset itself sits in memory. A few hundred thousand rules is around 15 to 25 MB. The extension itself, with its popup UI and background service worker, adds another few MB. Total: roughly 18 to 30 MB. This is a fraction of what a typical content tab uses.
Pros and cons of the modern blocker stack
Pros
- Fast: native-code rule evaluation is essentially free per request.
- Predictable: rules are declared, behaviour is easy to audit.
- Effective: community filter lists cover the vast majority of ads and trackers.
- Private: a well-built blocker does not need to send anything anywhere.
Cons
- Some advanced techniques that worked under the old runtime API are no longer available.
- First-party ads remain harder to block generically.
- Filter lists are maintained by small teams; the work is undervalued.
Conclusion
There is no magic. An ad blocker is a small program that combines a list of patterns with an engine that applies them, and the engine, under Manifest V3, runs in your browser's native code. The reason blockers vary in quality is mostly the freshness and accuracy of their filter lists, the engineering on top for special cases like YouTube and cookie banners, and the integrity of the team behind the extension.
If you want the version of all of this that just works out of the box, install NovaBlock. If you want to see the comparison with other blockers, our best ad blocker 2026 round-up is the place to start.
Key takeaways
- •Ad blockers are mostly two things: a list of patterns to block (filter list) and an engine that applies those patterns to the requests your browser makes.
- •Cosmetic rules hide elements that did load. Network rules stop the requests before they happen.
- •Filter lists are maintained by volunteers and small teams. They are updated continuously.
- •Under Manifest V3, the browser itself enforces the rules in native code, which is faster than the old approach.
Frequently asked questions
Do ad blockers see my browsing history?+
A well-built ad blocker evaluates rules locally and does not send your browsing history anywhere. A badly-built one might. Always check the privacy policy of any extension you install.
Why do some sites still show ads even with a blocker?+
Either the ad is served from the same domain as the page content (first-party ads), or the page uses anti-blocker tricks to detect and route around the blocker. Filter list updates close most of these gaps over time.
What is EasyList?+
EasyList is the most widely used filter list in the world. It is maintained by volunteers and updated several times a day. Almost every ad blocker ships it by default.
Can ad blockers block scripts?+
Yes. Modern blockers block scripts at the network level using declarative rules. They can also inject small 'scriptlet' helpers on specific pages to neutralise common anti-blocker patterns.
Why does it sometimes break a site?+
Most sites are built assuming their ad and analytics scripts will load. When those scripts are blocked, sites occasionally have layout glitches or missing features. Filter list maintainers add fix-up rules over time; one-click per-site pause is the usual recovery.
Try NovaBlock free
A faster, calmer web in one click. Free on Chrome and Firefox. Premium across every device with a 7-day trial.
Share this article
Related articles
Manifest V3, Explained
A plain-English guide to Manifest V3, what changed for browser extensions, why some blockers struggled and how NovaBlock was built for it from day one.
How to Block Trackers in 2026
What online trackers actually are, why blocking them matters, and how to set up a browser that respects your privacy in under five minutes.
How to Block Pop-Ups and Pop-Unders
Pop-ups, pop-unders and overlay interstitials are still a daily annoyance in 2026. This guide explains the modern variants and how to block them reliably.
The Best Ad Blocker in 2026
An honest, up-to-date 2026 comparison of the best ad blockers for Chrome and Firefox. Speed, privacy, YouTube ads, cookie banners and Manifest V3 compatibility.
