Why Opera Builds Its Ad Blocker Into the Browser, Not Into an Extension
Opera ships ad blocking inside the browser engine rather than as an extension. Here's why that architectural choice matters, and how to measure its effect yourself with DevTools.
09 Jan 2026, 08:12 UTC

If you've ever watched a browser's task manager while an ad-heavy news site loads, you've seen the problem: dozens of third-party requests fire before the article text renders, and an extension-based blocker spends CPU cycles intercepting each one. Opera's answer is unfashionable but defensible — it ships ad and tracker blocking as a native browser feature, not an extension. That single architectural choice explains most of what's interesting about it.
Blocking at the network layer, not the extension API
Extension-based blockers in Chromium work through APIs that let an extension observe and cancel network requests. Every request on every page passes through that interception path, which adds overhead and, more importantly, makes the blocker a guest in someone else's platform. When the platform owner changes the rules for what extensions are allowed to intercept, the blocker's capabilities change with them.
Opera's blocker lives inside the browser engine instead. Filter rules are evaluated as part of the network stack itself, so a blocked request is never dispatched in the first place. There's no extension process, no message passing between the page and a separate blocker, and no dependency on extension-platform policy. Since Opera is Chromium-based, the rendering engine and web-platform behavior track Chrome — the blocker is one of the Opera-specific layers built on top, along with things like Workspaces and the sidebar.
Filter lists with a pragmatic control surface
Under the hood, the blocker uses EasyList-style filter rules plus tracker lists — the same rule format the major extension blockers use. Opera's middle-ground design is the interesting part: it works with zero configuration, but you can add custom filter lists and set per-site exceptions when a page breaks. That's a sensible default-to-override ratio for a mainstream browser, where most users will never open the settings and a small number need an escape hatch.
Exact toggle locations, default-on state, and which lists ship enabled vary by Opera version and between desktop and mobile, so check the privacy settings in your installed build rather than trusting any written menu path, including this one.
A worked example: measure it yourself
You don't have to take the performance argument on faith. Here's a repeatable check on Opera desktop:
- Open Opera's settings and turn the ad blocker off. Note which filter lists are listed as enabled so you can restore the same state.
- Open DevTools (F12), go to the Network panel, and check "Disable cache" so both runs fetch everything fresh.
- Load an ad-heavy news article. When loading settles, read the summary bar at the bottom of the Network panel: total requests, transferred bytes, and finish time.
- Turn the ad blocker back on, hard-reload the same page (Ctrl+Shift+R), and compare the same three numbers.
On a typical ad-heavy page you should see a meaningful drop in request count and transferred bytes with blocking enabled — those are requests that never left the network stack. The exact delta depends entirely on the page, so treat this as a measurement exercise, not a benchmark claim. No special permissions are needed; the only risk is forgetting whether you left the blocker on or off, so reset it to your preferred state when you're done.
The trade-offs are real
Native blocking doesn't fix the inherent limits of filter-list blocking. Lists are heuristic: they miss some trackers and occasionally block a legitimate resource that happens to match a rule. Sites that bundle ads with first-party content can slip through entirely, and sites that detect blockers may refuse to serve content until you add a per-site exception. If a page looks broken in Opera but fine elsewhere, the blocker is the first thing to toggle as a diagnostic step.
There's also a scope limit worth stating plainly: a browser-level blocker only protects that browser. It does nothing for other apps, other browsers, or devices on your network, unlike DNS-level or router-level filtering.
The takeaway
Opera's native blocker is a good case study in owning a feature at the right layer. By moving filtering into the engine, it sidesteps extension-API overhead and extension-platform policy risk, at the cost of inheriting all the usual filter-list weaknesses. If you use Opera, run the DevTools comparison above on a site you actually visit — the request-count difference is the most honest advertisement the feature has.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.