The listing is just gone. uBlock Origin — the real one, not the Lite build — no longer exists as far as the Chrome Web Store is concerned. On 31 August Google pulled every remaining Manifest V2 extension, which was the last unchecked box on a deprecation timeline it has been publishing, revising and quietly slipping since 2019.

I sat down to write the obvious post about this. Big platform kills the good ad blocker, web gets worse, light a candle. Then I went looking for numbers to back it up and had to throw the draft away, which is annoying but probably the more useful outcome.

The timeline, briefly

The fight has been over for a while; 31 August was just the paperwork.

The enterprise escape hatch — the ExtensionManifestV2Availability policy that let admins keep MV2 alive on managed fleets — came out back in Chrome 139. Over this summer the remaining developer flags and the command-line override went out of Chromium too, so by the end of July there was no supported way to turn Manifest V2 back on in Chrome at all. The store purge on 31 August removed the last thing left: the ability to install one.

If you already have full uBO on a Chrome old enough to still run it, it keeps working. It also never updates again. Hold that thought.

Raymond Hill's position hasn't moved in years and it's worth being precise about it, because a lot of coverage gets it backwards: there is no Manifest V3 build of full uBlock Origin because he decided rebuilding it under the new API would gut the thing that made it worth using — not because Google banned it by name. What he ships for Chrome instead is uBlock Origin Lite, a separate, smaller extension built on the MV3 primitives from the start.

The part where the eulogy falls apart

Here's what wrecked my draft. A peer-reviewed paper in PoPETs earlier this year — researchers at Goethe University Frankfurt, replication code on GitHub — took four blockers (Adblock Plus, AdGuard, Stands, and uBlock Origin), ran the MV2 and MV3 builds of each in their default configuration across 924 websites, and measured what actually got through.

No statistically significant drop. In one of the measurements the MV3 builds caught an average of 1.8 more tracking scripts per site.

That is not the result anyone on either side of this argument was expecting, including me. "Manifest V3 kills ad blocking" has been repeated so often it acquired the texture of fact, and when someone finally sat down and measured it properly on a real crawl, the effect size was roughly nothing.

So before anything else: if you're on Chrome and you install uBO Lite, you are not walking around unprotected. It works. Hill maintains it. The median browsing session is fine.

What the benchmark isn't measuring

And yet.

A crawl of 924 sites in default configuration is precisely the scenario where a static, pre-declared rule list looks great. Big sites, mainstream ad networks, the exact traffic that every filter list has had curated rules for since forever. Of course the declarative engine handles it — that workload is what it was designed for.

What that measurement cannot see is everything you do when the defaults don't work. Dynamic filtering, where you flip a specific third party off on a specific site because something broke. The element picker, for the sponsored block that loads from a first-party path so no network rule will ever catch it. The logger, for when a page is misbehaving and you want to see what it's actually pulling. Your own filters, added at 1am, taking effect immediately.

None of that is in the benchmark, because none of it is a default. It's the long tail — and the long tail is the entire reason power users chose uBO over the six other blockers that also block DoubleClick.

The honest summary is narrower and less quotable than either camp wants: MV3 didn't measurably degrade blocking for the median user, and it did remove most of the controls that the non-median user installed uBO to get.

An extension stopped being a program

The underlying change is one line, and it's the bit worth taking away even if you never touch a browser extension.

Under MV2, a blocker registered a listener on webRequest and got called, in the network path, for every single request the browser made. Your code ran. You looked at the URL, the initiator, the type, whatever state you'd built up, and you decided. Arbitrary logic, at request time.

Under MV3 you get declarativeNetRequest. You write your rules down in advance, hand them to Chrome, and Chrome does the matching in its own engine. You are not in the path. You don't see the requests. And you get a budget — a guaranteed minimum of 30,000 static rules, with dynamic rules on a much tighter allowance.

That's the whole shift: from run my code on every request to declare your intent and we'll enforce it. An extension went from being a program to being a config file.

And here's the part I keep having to concede when I want to be angrier about this than I am: Google's stated reasons are not fake. A blocking webRequest listener genuinely is third-party code sitting in the critical path of every network request, with a live feed of everything you browse, shipped by whoever you installed. As an architecture, that is horrifying. If you designed browser extensions today you would not design that.

The problem was never that the old API was defensible. It's that the company that decided it had to go is also the company that sells the ads, so nobody was ever going to read the change charitably — and Google spent six years behaving in a way that made the uncharitable reading feel reasonable. You don't get to make the perf-and-privacy argument and also be the ad business. Someone else had to make that call and there was nobody else.

The frozen copy is the actual bomb

Back to that detail from earlier, because I think it's the thing people are underrating.

The study compared MV2 and MV3 blockers that were both being maintained. That's a fair comparison and it's the right one to run. It is not the situation anyone is in now.

Ad blocking is an adversarial game with a weekly clock. Filter lists move constantly because the other side moves constantly — domains rotate, paths get randomised, the CDN shuffles. A blocker that stops updating doesn't fail on a Tuesday; it decays, quietly, over months, while the little icon in your toolbar keeps telling you everything is fine.

So the frozen full-uBO installs still running on old Chrome builds are on a timer. They're the best blocker anyone made, and they're pointed at last August's web, permanently.

uBOL is maintained, but its list updates ride extension releases through store review rather than being fetched on the extension's own schedule. That's a latency change in a race measured in days. Not fatal. Not nothing either, and it's the axis I'd actually want measured a year from now — not "does MV3 block" but "how does MV3 block drift".

What I'd actually do

If you want full uBO, the answer is a browser that still supports it. Firefox 155 does, Brave does. That's not a workaround, it's just where the extension lives now.

If you're staying on Chrome — most people are, and that's fine — install uBO Lite from Hill and stop worrying about it. But go and look at what you've already got installed while you're in there. A pile of abandoned MV2 extensions just became permanently unmaintainable, and a chunk of them are about to be "acquired" by someone who will very much enjoy owning a frozen extension with broad host permissions and an install base that isn't paying attention. That has happened before, repeatedly, and it will happen again this autumn. Anything MV2 you're not actively using, remove it today.

And if you build anything on a platform you don't own, the pattern here is the one to file away. Nobody took your feature. They swapped the shape of your access: code in the path, replaced by declarations someone else evaluates. The benchmarks come out fine, because benchmarks measure the common case and the common case is exactly what the declarative version was built to handle. What you lost is every escape hatch you'd have reached for on the day the common case didn't apply — and you find that out later, one specific broken thing at a time.

So

Manifest V2 is dead, the ad blockers mostly still block, and I don't think that's the good news it reads as. The measurable thing didn't move. The unmeasurable thing — being able to reach in and change the behaviour of software running on your own machine, right now, without asking a store — is what actually went.

Anyway. Go and audit your extensions list. Half of it is fossils.