How the grade works
These are the access checks and reading-experience grades, dated and changed in public. Search order also depends on relevance; the letter grade is not itself a search-ranking multiplier.
First: can a stranger read it?
One question decides whether a site is indexed at all. Can a first-time visitor read this page right now, without paying and without creating an account? If no, it is not indexed. Not ranked lower — absent.
| Gate | Fails if |
|---|---|
| G1 | Content requires payment |
| G2 | No content at all without an account |
| G4 | Popunder or popup on load or first click |
| G5 | Full-screen interstitial with no way past it |
| G6 | Sound-on autoplay |
| G8 | More than 30% of a sampled viewport is detected advertising |
| G9 | Deceptive or malicious |
A wall is what you cannot get past. Anything you can dismiss in one click is penalized and buried, never excluded. We narrowed two of these rules in August 2026 after measuring how often they caught sites that were, in fact, readable: cookie walls stopped being a gate on 2026-08-30, and full-screen boxes you can close stopped being a gate on 2026-08-31.
Some sites ask who you are. A few let you read only after you state something about yourself, such as being a professional investor. If a person has reviewed the condition, we index the site and name the condition on its report card and on every affected search result, for example “Professional investors only; private investors refused”. If you do not hold that status, you cannot read those pages without claiming it, and a page behind the condition never counts as free of interruptions. Paying, making an account or agreeing to tracking is never treated this way.
Then: how much is it working against you?
| Behavior | Cost |
|---|---|
| Readable now, walled after a few visits | 0.55 |
| Full-screen box you have to close | 0.40 |
| Cookie dialog blocks the page, no refuse button | 0.35 |
| Asks you to register, but you can read without it | 0.30 |
| Cookie dialog blocks the page, but you can refuse | 0.25 |
| Subscription, app-install or donation prompt on scroll | 0.20 |
Metering has a separate cap of C. For the interruption subject, we use the strongest verified overlay cost above or the largest sampled ad-area fraction, whichever is greater. We do not add or multiply deductions for a panel that several detectors may have labeled.
These are starting values and we have not calibrated them. They were chosen by argument, not measurement, and we would rather say so than imply a precision we do not have.
The letter grade
Four subjects, weighted. Since September 21, 2026, loading speed does not affect grades or rankings. Lab timings vary too much across runs and connections to use as a score.
| Subject | Weight |
|---|---|
| Interruption — observed prompts and visible ad area | 35.71% |
| Readability — type size, contrast, column width | 28.57% |
| Accessibility and keyboard | 21.43% |
| Stability and weight — no penalty at all under 1 MB | 14.29% |
Grades are absolute, not curved: a C means you hit the C thresholds, not that you landed in the middle of the pack. Metered sites are capped at C however fast and clean they are. A meter counts only when a second visit was measured: if that visit hit a bot check or an error, the meter is “not measured”, which neither caps the grade nor holds the site.
Signs of a paywall. When a search crawler is served much more text than a browser, but nobody saw a wall, the site is not excluded. Its card says “signs of a paywall” and a person reviews it. The 0.55 recorded beside it is a label and a review hold, not part of the grade, and it does not cap the letter.
The thresholds
Each subject scores 0–100, the scores are weighted as above, and the total lands in a band. The bands are the ordinary school ones, because this is a report card: A+ 97, A 90, B 80, C 70, D 60, F below that.
Every cutoff inside a subject comes from somewhere published:
| What | Threshold | Where it comes from |
|---|---|---|
| Layout shift, full marks | CLS under 0.1 | Core Web Vitals: “good” |
| Layout shift, 60 | CLS 0.25 | Core Web Vitals: “poor” |
| Weight, full marks | under 1 MB | our own rule: no reward for austerity below it |
| Weight, 55 | 3 MB | above this it bites hard |
| Interruption, full marks | No qualifying interruption detected in complete sampled evidence | observations, not network request counts |
| Interruption, overlays | 0.20–0.40 | the published penalty values above |
| Type size, full marks | 16px | every browser’s default; our own floor |
| Type size, 60 | 14px | stated |
| Characters per line, full marks | 45–90 | our published band; the classic typographic range is 45–75 |
| Characters per line, zero | 25 or 140 | “a column of confetti” and “exhausting”, in our own words |
| Line height, full marks | 1.5 | WCAG 1.4.8 and 1.4.12 |
| Line height, 80 | 1.4 | our own “below this is cramped” |
| Contrast, 85 | 4.5:1 | WCAG 1.4.3, level AA |
| Contrast, full marks | 7:1 | WCAG 1.4.6, level AAA |
| Reflow at phone width | no sideways scroll at 360px | WCAG 1.4.10 |
| Text column, full marks | 45% of the window | our own example of a 40% column failing the reader |
Readability and accessibility
Both come from one rendered page per site, last measured 2026-10-07. Readability rests on six mechanical facts: type size, characters per line, line height, contrast, reflow at phone width, and how much of the window the text gets. The score is half their average and half the weakest of them, because a page is only as readable as its worst typographic fault — 11-pixel type does not become fine because the column is a good width. That blend is our choice, stated here. None of it is a judgment of taste.
Accessibility weights five parts: automated WCAG 2.1 A/AA checks (axe-core) 40%, keyboard 20%, reader-mode parseability 15%, page structure 15%, alt text 10%. A keyboard trap scores zero on its part. The violation score is ours, not anyone else’s: it counts failing rules, so a long page is not punished for being long, at 25 points per critical rule, 15 per serious, 5 per moderate and 2 per minor. Nobody publishes a standard for this, so the numbers are stated here to be argued with.
Automated checks catch an estimated 30–40% of real accessibility problems. The score is a floor. A clean result reads “no automated violations detected”, never “accessible”.
What counts as an interruption
Since September 21, 2026, ad and tracker request counts are diagnostics only. A request may be a beacon or one of many files supporting a single ad. It is not a visible interruption. Navigation links, ordinary sticky headers and transparent page wrappers do not establish a popup. A subscription or donation prompt needs structural evidence that it is a visible prompt. The modal detector requires at least 15% of the viewport after scrolling; small nonblocking banners do not receive that penalty. This threshold is our stated policy.
Interruption score = 100 × (1 − the larger of verified overlay cost and detected ad-area fraction). For example, 20% detected ad area scores 80; a 0.40 takeover scores 60. If the same panel is also labeled a newsletter prompt, it still scores 60. This conservative maximum avoids duplicate charges; it does not claim to count distinct interruptions.
This scoring formula is our policy, not a validated standard. Better Ads Standards distinguish visible ad formats and density; they do not prescribe our 0–100 score. WCAG discusses user control over interruptions, not request counts. We keep these distinctions explicit.
The ad scan covers detected media elements in sampled viewports, not every ad format or the entire page. New scans check initial and scrolled views, hidden elements, exact resource URLs and overlapping rectangles. Historical observations have weaker coverage and are labeled on the report card. Failed scans, ambiguous prompt wrappers, missing diagnostics and pending review leave the interruption subject unscored. No detected ads is not a guarantee of no ads.
When a subject is missing
A site whose readability was never measured is graded over the subjects that were, and its report card says what share of the scheme the letter rests on. We leave a missing subject out rather than score it zero, which would fail a site for something nobody looked at, or full marks, which would be a claim we have not earned. A+ needs every subject measured, because it means exceptional on every axis. Until 2026-09-05 that withheld it from every site.
We also withhold readability when we have only measured non-article pages. Readability is measured off body prose, and a homepage or listing is headlines and cards, so our reading of the type comes out low for reasons that are ours rather than the site’s — the type measures a third narrower there than on article pages. The numbers still appear on the report card. Readability does not contribute to the letter until we have measured an article.
A page where we found no prose has readability “not measured”. With no paragraphs to read there is no type size, line length or contrast to score. Until 2026-10-14 such a page was scored on whether it scrolled sideways on a phone alone, which put a zero or a hundred on a measurement we had not made.
The distribution, as measured
Published alongside the grade so the letter has context. These shares are a consequence of the absolute thresholds above — we do not tune the thresholds to produce them, which is what makes a C mean the same thing next year.
| Grade | Sites | Share |
|---|---|---|
| A+ | 277 | 4.4% |
| A | 1,821 | 29.1% |
| B | 1,948 | 31.1% |
| C | 1,374 | 22.0% |
| D | 589 | 9.4% |
| F | 245 | 3.9% |
6,254 sites graded. Sites we could not measure, and sites excluded outright, do not get a letter.
The sites at the top of the scale.
What we do not measure yet
Green hosting, and time-to-first-readable-sentence as distinct from largest paint. Readability and accessibility are measured on one page per site, which is a sample, not a survey. Report cards say “not measured” wherever that is the truth, because a zero would not be.