Findings · 2026-09-01 · By VSNARY | Emmanuel Orta · 0 views
We reviewed all 150 scored rows against seven site types. Here is what we unscored, and why.
A threshold that fails a lean personal blog is not measuring quality. A row that scores the mechanism when another row scores the outcome counts one defect twice.
CrawlCheck scored about 150 rows across 22 sections when this review was run in September 2026; both counts have since moved, and the live figures are published at /api/public/counts. Most were written one at a time, each with a threshold that seemed right the day it shipped, and none had been read as a set. So we ran seven real sites through it, a tree service, a WooCommerce store, a personal blog, a national newspaper, a large forum, our own attestation register, and a storefront that redirects off-host, and put the pass or fail for every row on every site into one table. Then we read the columns.
A row that fails six sites out of seven is either finding something real about the web or measuring the wrong thing. Reading which sites failed decides it. When the lean personal blog fails a content-ratio threshold, the threshold is wrong.
Rows that were accusing sites of things that are not defects #
Sitemap trailing slash. Our own tree-service site read 75 with, 1 without and failed. The one was /entitymap.html, a file, and files never carry a trailing slash. Files no longer count, and one stray URL is no longer a mix. Wordless links. The personal blog read twelve. All twelve were image links with alt text or aria-labels, which a screen reader and a crawler both read. Those count as words now. Content ratio. The threshold failed a blog that carries almost no markup; it was lowered. Meta description. 95 characters and 82 characters both failed a 120-to-160 rule that was never more than folklore; short, accurate descriptions pass now. Uppercase paths and query strings. One link in 215 failed the site; one link is not a convention, and it no longer fails. sameAs. A store failed because a marketplace profile does not link out; the marketplace decided that, not the store, and only a dead target fails now. Credential edges. A publisher, a forum and a storefront were being held to a licence-or-membership row written for local contractors; it applies to local and professional subjects only.
Rows that were counting twice, or counting cosmetics #
Cache state scored whether machine files were served DYNAMIC from the edge. Two rows beside it already score what that costs: whether the files answer quickly and whether any is a slow outlier. A slow origin was paying three times for one fault. And DYNAMIC is the CDN's default for .txt and .xml unless someone writes a rule, while sites on other CDNs emit no signal at all, so the row could only ever penalise one vendor's customers for not touching a setting. It is shown, not scored. Apple touch icon and theme colour are browser chrome; they cannot affect whether a machine reaches, reads or quotes a page, and the grade is a claim about exactly that. Scoring them is the mistake we criticise in other tools. Both are shown, not scored. A row in the new RDF section scored the same @id coverage as an existing row; it is shown, not scored.
What deliberately stayed #
Blocking answer engines still fails the reach rows, because that is the product's thesis and the row says so. Read more still fails the generic-anchor row, because it tells a machine nothing about the destination. Zoom lock still fails. A missing llms.txt or entity map still fails the machine-layer rows, because those sections exist to measure exactly that, and the adoption figures beside them say how rare the files are.
The review, in numbers #
| Measure | Reading |
|---|---|
| Scored rows reviewed | about 150 |
| Sections | 22 |
| Meta description rule as written | 120 to 160 characters |
| Descriptions that failed it | 95 and 82 characters |
| Link convention that failed a site | 1 offending link in 215 |
Every change above moves numbers, which is why the score version moves with them.
How the score version moves #
Every change above moves numbers, so the scoring rubric got a new version, and every stored record says which version graded it. History does not draw a change across that boundary, and a site is not ranked against peers measured under a different version, so nobody sees a grade that changed because we changed, presented as if the site did. It is the same discipline as dating every measurement: a number has to say what it is a number of.
The method is reusable by anyone who maintains a scoring rubric: collect the per-row outcomes across sites you understand, read the rows that fail the sites that should pass, and be willing to unscore. Unscored measurement is a glossary term here because it is a design position, not a gap.
Every figure above came out of CrawlCheck.
Point it at your own domain and see the same measurements, free.
The main product
Found this on your own site? We fix it for $500.
Scan free to see where you stand. The fix is one site, every finding implemented and re-measured, with a sealed before and after.
Questions this post answers
What does unscored mean on a report?
The row is measured and shown with its value, but it cannot move the section score or the grade. It is used for things that are informative but either cosmetic, already scored by another row, or dependent on a choice the site is entitled to make.
Why did the score version change?
Because thresholds moved and rows were unscored, every site's overall could change without the site changing. The version stamped on each record stops history from drawing a delta across the boundary and stops the corpus percentile from ranking sites measured under different rules.
Related findings
Comments
Comments are read before they appear. Nothing is published automatically, and no account is needed.
Writing about this? Facts, live figures and marks — every number on that page is dated and traceable to a scan.