ExtensionSunset

How we measure

Every figure on this site is read from an extension's own Chrome Web Store listing by our crawler and stored alongside the response it came from. Nothing is bought from a data provider and nothing is estimated. This page is the whole method, including the parts that limit it.

The sunset score

A number from 0 to 100 estimating how close an extension is to the end of its useful life. It is additive: each signal we can measure adds points, and the page shows which ones fired.

SignalPointsNotes
No longer listed in the store100Overrides everything else.
Built on Manifest V235Current Chrome will not load it.
No update in over two years25Twelve to twenty-four months scores 12.
Lost 30% or more of its users in six months15Needs two checks at least 150 days apart.
Rating fell 0.4 stars in three months10Needs two checks at least 75 days apart.
Listed publisher changed15Recorded as a fact, with dates. No motive is implied.
Permission reach of 70 or more10See below.

A listed extension can never score 100. The signals above sum to more than a hundred, so anything still in the store is capped at 95. One hundred means removed, and only removal produces it — a live extension wearing a "Removed" label would be a false obituary, and those are the one mistake this site cannot afford.

Bands: 0–19 healthy, 20–39 watch, 40–59 at risk, 60–95 likely sunset, 100 removed.

What a missing signal does

Nothing. A signal we cannot measure scores zero and the page says so. Trend signals need history we have collected ourselves, and for an extension we first checked last week that history does not exist. We would rather show a visible gap than a number produced by assumption.

Permission reach

A second number, also 0 to 100, for how much an extension is able to do. It is a measure of capability and nothing else: an extension that can read every page you visit is not thereby doing anything wrong, and a great many perfectly honest extensions need exactly that access to work.

Broad host access — the ability to read and change data on every site — is worth 30. Individual permissions are weighted by what they expose: attaching a debugger 25, running scripts of the extension's choosing 22, messaging a program on your computer 20, reading cookies 15, watching network traffic 15, and so on down to permissions that expose nothing and score zero. Combinations that are worth more than their parts add a little on top: broad host access together with cookie access, for instance.

declarativeNetRequest deliberately scores zero. It is the modern replacement for network interception and, unlike the thing it replaced, it cannot read your traffic. Penalising it would punish the migration everyone wants extensions to make.

A trap worth naming

Manifest V2 extensions declare host access inside their general permission list, while Manifest V3 extensions use a separate field. Any tool that reads only the separate field will report every Manifest V2 extension as having no host access at all — rating the least current extensions as the safest. We normalise both shapes before scoring, and a regression test on a known Manifest V2 extension guards it.

Where an extension runs its own code

An extension page names the sites an extension injects its own code into, taken from the content_scripts section of its published manifest. Those are the pages it acts on without being asked. A site that is not on that list is not touched by it.

Two qualifications. An extension can also hold access to every site at once, and most of the ones we publish do, which is why so many pages open by saying it can reach every site you visit. Where both are true, the named sites are where it acts on its own and the broad access is what it may read when you invoke it. And holding access to a site is not the same as using it: this is a record of what a manifest declares, which is the only thing checkable from outside.

Where the list runs long we name four sites and count the rest. One manifest we hold declares 1,014 match patterns, and printing all of them would be a wall rather than an answer.

How replacements are chosen

Candidates must be in the same store category, on Manifest V3, healthy on the score above, and have at least ten thousand users. They are then ranked by how closely their capabilities overlap with the extension you are looking at, and ties are broken by size.

We do not know whether a replacement is better. We know it does a comparable job on the current platform and is being maintained. Where nothing overlaps meaningfully, the section is titled "others in this category" and says outright that none of them is a direct swap. Where fewer than two candidates qualify, we show none: padding that list with something that merely looks similar would be worse than an empty space, particularly for someone who arrived because the thing they relied on just stopped working.

How we decide something has been removed

Carefully, because this is the claim most likely to be wrong and most damaging if it is. A removed extension does not return an error — its page still answers normally and quietly redirects to the store's front page, so removal has to be detected rather than caught.

We mark an extension removed only when two independent things agree: its listing has gone and the endpoint Chrome itself uses to fetch the package returns nothing. Failing that, the same absence has to repeat at least a day later. A single failed check is recorded as unknown and rechecked. Network stalls are common enough that without this rule the site would publish a steady trickle of obituaries for extensions that are perfectly fine.

What this data cannot tell you

  • User counts are published by the store in rounded bands, not as exact figures. A change of a few hundred users is invisible to us, and we never print a bucketed number as though it were precise.
  • We have crawled a fraction of the Chrome Web Store, not all of it. Counts on this site are counts of what we have checked, and are labelled that way.
  • Our crawler resolves from a European address. If the store shows different listings by region, our picture is the European one.
  • We never state why an extension was removed unless a public statement exists that we can link. The store does not publish reasons, and inventing one would be worse than the silence.
  • We do not test extensions, review them, or rank them by quality. Nothing here is an opinion about whether an extension is good.

The data is free

Every extension page has a JSON version at /api/extension/{id}.json with the same facts the page shows, licensed CC BY 4.0. Use it, cite it, check our work with it.