Skip to content
metryn

Methodology

How Metryn works

What every scan measures, how sure each finding is, and what Metryn cannot tell you.

The score is 100 points split across four areas

100/ 100
Example: the score of our own sample scan

Points per area

  • Crawler access40
  • Indexability30
  • Content & entity20
  • Technical signals10

What the total means

  • 80–100Ready for AI Search
  • 60–79Needs attention
  • 0–59Not ready

Points are lost for issues found, never gained for being popular. The score does not predict rankings, traffic or AI citations. The rules behind it

How the score works

The score out of 100 is deterministic: fixed point deductions per issue found, split across four categories. There is no randomness and no invented probability — the same site, scanned twice with no changes, gets the same score.

CategoryMax pointsWhat it covers
Crawler access40Whether tracked AI crawlers are allowed by robots.txt
Indexability30HTTP status, noindex directives, canonical consistency
Content & entity clarity20Title, H1, meta description, and their consistency
Technical signals10Sitemap health and structured data (JSON-LD)

The total maps to a label: 80+ is "Ready for AI Search", 60–79 is "Needs attention", below 60 is "Not ready". These labels describe technical readiness only — see "What this score does not predict" below.

Confidence levels

Every finding carries one of three confidence levels, so a heuristic is never presented with the same certainty as a directly observed fact.

  • CONFIRMED — read directly from the HTTP response or the HTML itself (a header, a tag, a status code). Not an inference.
  • LIKELY — a reasonable conclusion from several signals, flagged explicitly as a heuristic rather than a certainty.
  • RECOMMENDATION — a best-practice suggestion, or an unresolved gap in explicit policy (for example, no robots.txt at all) — not a confirmed problem.

AI crawlers Metryn tracks

Metryn checks robots.txt against the crawlers below. Each entry's identity and purpose come from that operator's own published documentation — never reconstructed or guessed.

CrawlerOperatorPurposerobots.txt reliable?Docs last verified
OAI-SearchBotOpenAISearch discoveryYes2026-09-04
GPTBotOpenAIModel trainingYes2026-09-04
ChatGPT-UserOpenAIUser-requested fetchNo — operator states it may not apply2026-09-04
ClaudeBotAnthropicModel trainingYes2026-09-04
Claude-UserAnthropicUser-requested fetchYes2026-09-04
Claude-SearchBotAnthropicSearch discoveryYes2026-09-04
PerplexityBotPerplexitySearch discoveryYes2026-09-04
Google-ExtendedGoogleModel training (Gemini / Vertex AI)Yes2026-09-04
GooglebotGoogleSearch indexingYes2026-09-04
bingbotMicrosoftSearch indexing (also feeds Copilot)Yes2026-09-04

"Docs last verified" is the date this entry's identity and purpose were last checked directly against the operator's own documentation (see the URL cited in src/lib/crawlers.ts) — not a claim that the crawler's real-world behavior was tested on that date.

Reported but not scored

Metryn reports whether /llms.txt is present and carries it at 0 points: its absence is never a deduction. Chrome's Lighthouse has an experimental Agentic Browsing audit for the same file (as of 13 October 2026, it has no 0 to 100 score, treats a missing file as not applicable, and checks a few basic things in a file that exists). Metryn does not reproduce that audit and does not score the file. Google says Google Search ignores these files.

Six more notes are reported at 0 points and appear only when there is something to say: hreflang inconsistencies (invalid codes, no self-reference, same-site alternates that do not link back, reading at most three alternates), the redirect chain between the URL you entered and the final URL (a chain of more than two hops is flagged), relative or multiple Sitemap: lines in robots.txt, a Crawl-delay line (Google does not honour it, some other crawlers do), a possible soft 404 on the checked URL only (HTTP 200, very short visible text and a strong not-found phrase, always labelled possible), and basic structure notes for /llms-full.txt when it exists. None of them changes the score or the four weights.

Product data. When the scanned address shows evidence of being a product page (Product JSON-LD in the page, og:type product, a product:price:amount tag, or a Shopify or WooCommerce product address together with proof of that platform), Metryn also reads the Product, Offer and ProductGroup JSON-LD in the HTML as the server sends it and reports against Google's merchant listing and product variants guides: name, image and offer; a price above zero; an ISO 4217 currency code; a schema.org availability value; brand and identifiers; rating and review consistency; several blocks for one product; blocks that do not parse; and Product markup that is absent from the raw HTML because a script adds it. Only unambiguous errors, such as a missing or zero price, are labelled confirmed; everything else is likely. It also compares the price, currency and availability in the markup with a price tag, itemprop or a recognised price element in the same HTML. It says two values differ only for a single product with one clear page price, the same currency and no variant selector, currency selector, sale marker or price range; otherwise it says the comparison is inconclusive and why, and most pages will be. Prices that appear only after JavaScript runs are never inferred. These notes sit in a separate Product data section of the paid report, the free result only counts them, and they never change the score or the four weights. Product microdata and RDFa are not validated.

What Metryn cannot verify

  • Whether any specific AI system will actually crawl, index, cite, or recommend a given page — that decision happens entirely inside systems Metryn has no visibility into.
  • Content that only appears after client-side JavaScript executes. Metryn fetches raw HTML; it does not run a browser or execute third-party JavaScript (see the render-dependency heuristic, which reports this as a heuristic, never a confirmed measurement).
  • How a crawler operator's own infrastructure behaves. Any simulated access check runs from Metryn's own infrastructure, not the operator's network, and is reported as simulated, never as the genuine crawler's traffic.
  • Ranking position, referral traffic, or revenue impact of any finding.
  • Anything the site hides from the scanner. If robots.txt or the sitemap answers with 403, 5xx or a timeout, the finding says it "could not be read" or "could not be verified", deducts no points, and does not claim the file is missing. If the page itself answers with a bot-verification page, the scan stops with an explanation instead of scoring a challenge page. That message may say the response looks like a named protection service when its headers show it, and always says the result tells nothing about your policy for AI crawlers and that you can allow the MetrynScanner user agent in your firewall.
  • Indexing directives scoped to another crawler. A noindex that applies only to a named bot other than Googlebot or Bingbot (for example X-Robots-Tag: googlebot-news: noindex) is shown as information and not scored as a page-level noindex.
  • Pages larger than 2 MB. Only the first 2 MB of the HTML are analysed, and the report says so.
  • Findings about missing title, H1, description or JSON-LD on a page that appears to render with JavaScript are marked LIKELY, because only the raw HTML was inspected.

What this score does not predict

This tool evaluates technical AI search readiness. It does not guarantee indexing, rankings, citations, recommendations, traffic, or revenue.

See also the docs guides for more on specific crawlers, robots.txt, and structured data.