Skip to content
Measured, not estimated

What we have measured so far

Every number on this page is an aggregate over scans somebody asked for. Each one carries the count it was taken over, and says what it counted. Nothing here is modelled, sampled or bought.

Every scan we have settled
2,612
scans settled
2,223
scored
105
refused our scanner
4%
of settled scans were refused

Refused means the site answered BotreadyBot/1.0 with a 401, 403 or 429 on the first request, and we stopped there rather than working around it. Those scans never reach a score, so they are absent from every figure below — which is worth knowing, because it means the scores on this page are the scores of sites that let us read them.

Refusal rate by clientsame URL, same second, 2,233 scans each

ClaudeBot is refused on 7% of the sites we have scanned. A browser asking for the same URL in the same second is refused on 0%.

Chrome
browser control
0% of 2233
ClaudeBot
AI client
7% of 2233
GPTBot
AI client
3% of 2233
Perplexity
AI client
3% of 2233
Google-Extended
AI client
1% of 2233

Refused counts a 4xx or a 5xx. A request that produced no response at all is not counted as a refusal in either direction — nothing was measured — so the percentages are over the scans where that client got an answer. Every client is sent the same URL from the same address within a second of the others, which is what makes the comparison a comparison.

The Google-Extended asymmetry

95% of the sites that block an AI client let Google’s through.

Of 151 sites that served a browser and refused at least one AI client, 143 served Google-Extended anyway. It has an obvious explanation — nobody wants to risk their search traffic — and it is worth noticing that the risk is the same for all four: none of these crawlers is the one that ranks you.

2,233
scans with a client table
2,226
served a browser
151
refused an AI client anyway
143
but not Google-Extended
What sites fail mostworst ten, of the scans that ran each check
An agent manifest or WebMCP endpoint exists
actionability
86% of 2239
A markdown representation is advertised
representation
68% of 2223
Primary forms have labels, names and autocomplete tokens
actionability
51% of 2223
A person is reachable in a way an agent can hand over
actionability
49% of 1883
API docs are two hops from the homepage
actionability
48% of 2223
What can be done here is declared, not just described
actionability
45% of 1883
Last-Modified or ETag is sent
freshness
35% of 2233
llms.txt tells agents which pages matter
discovery
34% of 2239
Sitemap lastmod values are maintained
freshness
31% of 2239
Each page has its own title and description
representation
24% of 2223

A check that could not run is counted apart from one a site failed: folding a timeout of ours into a failure rate would blame a site for our own problem. Skipped checks — the ones a sector is not measured on — leave the denominator entirely, so a rate here is over the sites the check was actually asked of.

Scores by kind of sitemedian, within one scoring version
general v1.5median 70 · 27–91 · 768 sites
software v1.5median 83 · 62–98 · 670 sites
local-service v1.5median 75 · 69–85 · 356 sites
media v1.5median 61 · 40–68 · 87 sites
general v1.4median 48 · 41–54 · 2 sites

Grouped by the profile a site was scored under, because the profile decides which checks were counted. A median across mixed profiles averages numbers built from different denominators, which reads like a comparison and is not one.

Read at 2026-10-25 00:59 UTC, from the scan record. A scan enters this page the moment it settles, so the figures move. If one of them disagrees with something we have said elsewhere, this page is the one that is current. Every check and weight is published, so a rate here can be traced to the rule that produced it.