Skip to content
Machine readability index →

Most of the web was built for people.Increasingly, the reader is not one.

When an assistant answers a question about a product, it reads the page first. If it cannot read yours, it answers from a marketplace listing, a review site, or a competitor. Nothing shows up in your analytics, because the visit never happened.

You can check this yourself, right now, without talking to anyone.

One request to your homepage, identified as LegibilityBot, exactly as a crawler would. We obey robots.txt. Nothing is stored against your domain unless you ask us to.

We read twenty well-known retail and news sites the same way. See how they scored.

§01 · method

How the reading is judged.

A page is readable when a machine can extract typed facts from it without guessing. In practice that means structured data: JSON-LD, or failing that OpenGraph. Everything else is prose that a model has to interpret, and interpretation is where it invents things.

When a page is not readable, the reason matters more than the verdict. A site that refuses crawlers made a decision. A site that renders only in JavaScript did not. A site with clean HTML and no markup is one afternoon away from being fixed. We record those separately because they are different problems with different costs. All eight findings, and what each one costs.

the confidence score, and its limit

Every extraction carries a calibrated confidence, and a 0.7 gate decides whether it is safe to rely on. On a held-out test split of 63 items, precision at that gate is 1.0, with a Wilson lower bound of 0.832.

The limit, stated on the same screen as the claim: expected calibration error across the full range is 0.19. The score is dependable at the gate and looser in the middle. One evaluation run is a claim, not a credential, so the run is identified (iso-63-2026-07-05) and its sample size travels with the number.

We do not run a headless browser, and the proxy fallback that would let us read sites which refuse machines exists and stays switched off. A site being unreadable without those is the finding. Working around it would make the number flattering and useless.

§02 · what to do about it

Check it once, or watch it.

The check above is free and always will be. Paid plans exist for people who need the reading repeated, at volume, through an API.

Free
$0/mo
1,000 trusted reads per month, no card
  • 1,000 trusted reads included
  • No card, hard stop at the quota
  • Unlimited domain checks
Starter
recommended
$29/mo
5,000 trusted reads, $0.01 per read after
  • 5,000 trusted reads included
  • $0.01 per read after that
  • Per-field confidence
Growth
$199/mo
50,000 trusted reads, $0.005 per read after
  • 50,000 trusted reads included
  • $0.005 per read after that
  • Highest rate limits

These three are the complete list. There is no enterprise tier, no support channel and no SLA, and we would rather say that here than let you find out later.

§03 · questions

Reasonable objections.

What exactly do you measure?+

We request your homepage once, with an identified user agent, exactly as an answer engine's crawler would. We do not run a headless browser and we do not use a proxy to get around a refusal. Then we classify what came back: structured data present, content assembled by JavaScript, no structured data at all, or a refusal.

Why does that matter commercially?+

AI assistants increasingly answer product questions directly. When they cannot read your site, they answer from somewhere else: a marketplace listing, a review aggregator, a competitor. You do not get a bounce or a lost session to look at, because the visit never happened.

Is a low score always the site's fault?+

No, and we say so in the result. Rendering in JavaScript is usually an accident of how the site was built rather than a decision. Refusing crawlers is a deliberate choice and often a reasonable one. Those are different findings and we report them differently.

How confident are you in the confidence score?+

Measured on a held-out test split of 63 items: precision at the 0.7 trust gate is 1.0, with a Wilson lower bound of 0.832. The honest limit is that expected calibration error across the full range is 0.19, so the score is dependable at the gate and looser in the middle. One evaluation is a claim rather than a credential, which is why the run and its sample size are published rather than the headline alone.

Do you respect robots.txt?+

Yes, and a site that disallows us is recorded as a data point rather than worked around. Being unreadable because you asked to be is a finding, not an obstacle. The credibility of a referee can only be destroyed once.

Can a site ask to be removed?+

Yes. File a takedown at https://legibility.io/takedown and we honour it within 24 hours.

Is there an API?+

Yes. The same engine is available as a REST API and as an MCP server, priced per call. It is the instrument behind the index rather than the headline, and it is documented at https://legibility.io/docs.

The same engine is a REST API and an MCP server, priced per call. It is the instrument behind the index, not the headline.

Read the docs →
curl -X POST https://legibility.io/api/v1/read_product \
  -H "authorization: Bearer lgk_…" \
  -d '{ "gtin": "8076800195057" }'