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
408
scans settled
342
scored
29
refused our scanner
7%
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, 352 scans each

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

Chrome
browser control
1% of 352
ClaudeBot
AI client
9% of 352
GPTBot
AI client
6% of 352
Perplexity
AI client
7% of 352
Google-Extended
AI client
3% of 352

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

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

Of 28 sites that served a browser and refused at least one AI client, 21 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.

352
scans with a client table
347
served a browser
28
refused an AI client anyway
21
but not Google-Extended
What sites fail mostworst ten, of the scans that ran each check
A person is reachable in a way an agent can hand over
actionability
100% of 2
What can be done here is declared, not just described
actionability
100% of 2
An agent manifest or WebMCP endpoint exists
actionability
90% of 358
A markdown representation is advertised
representation
77% of 342
API docs are two hops from the homepage
actionability
61% of 342
llms.txt tells agents which pages matter
discovery
42% of 358
Last-Modified or ETag is sent
freshness
38% of 352
Sitemap lastmod values are maintained
freshness
37% of 358
Primary forms have labels, names and autocomplete tokens
actionability
35% of 342
Each page has its own title and description
representation
25% of 342

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.4median 48 · 4154 · 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-09-09 23:31 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.