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.
| Signal | Points | Notes |
|---|---|---|
| No longer listed in the store | 100 | Overrides everything else. |
| Built on Manifest V2 | 35 | Current Chrome will not load it. |
| No update in over two years | 25 | Twelve to twenty-four months scores 12. |
| Lost 30% or more of its users in six months | 15 | Needs two checks at least 150 days apart. |
| Rating fell 0.4 stars in three months | 10 | Needs two checks at least 75 days apart. |
| Listed publisher changed | 15 | Recorded as a fact, with dates. No motive is implied. |
| Permission reach of 70 or more | 10 | See 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.