Show the work
How the AI-Readiness Audit scores sites
The complete rubric: nine scored sections, the checks inside each, the weights, the math, and the limitations. If you want to argue with the score, this page gives you everything you need to do it properly.
The retrieval pipeline
What the audit measures
Before an AI engine can cite you it has to fetch your page, extract clean text, understand who you are, decide you are trustworthy, and find your claims worth quoting. The audit scores each stage of that pipeline. It measures readiness to be cited, from the public surface of your site; it does not measure how often engines actually cite you today (that is what visibility tracking in the app is for).
Every check runs against what a crawler can see: served HTML, headers, robots rules, sitemaps, structured data, and public mentions. Nothing requires access to your analytics or your CMS.
Every check, every weight
The nine scored sections
Sections are listed with their weight in the overall score. The audit page groups these nine into six plain-language checks; the mapping is below the rubric.
Fetch, Render, and URL Integrityweight 1.5Can an engine retrieve the page at all, fast, over HTTPS, without running JavaScript? The highest-weighted section because nothing downstream matters if the fetch fails.
- Page fetch returns 200The URL answers with HTTP 200, not an error or soft redirect.
- Served over HTTPSPlain HTTP fails.
- Redirect chain of at most one hopTwo hops warn; three or more fail.
- Response time under 3 secondsUnder 1.5s passes; up to 3s warns; slower fails.
- HTML size under 512 KBUp to 2 MB warns; beyond that fails.
- Content present without JavaScriptIf the served HTML carries under ~500 characters of text and a client-side framework, AI crawlers see a blank page. Fails.
Bot Access & Control Planeweight 1.3Whether robots.txt, meta robots, X-Robots-Tag, sitemaps, llms.txt, and ai.txt invite engines in or lock them out.
- robots.txt availablePresent at the well-known path.
- No blanket blockA catch-all Disallow for every crawler fails.
- AI crawlers not blockedSelective blocks on GPTBot, ClaudeBot, PerplexityBot, and peers fail.
- No noindex in meta robots or X-Robots-TagEither surface carrying noindex fails.
- No noai directivesnoai or noimageai in meta robots or headers fails.
- Sitemap declared and validrobots.txt references a sitemap; the sitemap is real XML and includes the audited page.
- llms.txt available and well-formedA structured llms.txt passes; a minimal one warns.
- ai.txt availablePolicy, contact, or preference content passes.
Off-site Presence & Mentionsweight 1.3What the rest of the web says. Engines corroborate before they cite; a brand nobody else mentions is a brand engines hesitate to recommend.
- External mentions foundThree or more pass; zero is a strong poor-visibility signal and fails.
- Source diversityMentions across three or more distinct sources pass.
- High-authority sourcesAt least one tier-one or well-known authority mention passes.
- Brand-name accuracyAt least half of results clearly refer to this brand.
- Recent mentionsAt least one mention in roughly the last six months.
- No negative signalsControversy or scam-pattern signals fail.
Structured Dataweight 1.2The JSON-LD layer that tells an engine who you are and what each page is. The weakest dimension in the benchmark by a wide margin.
- JSON-LD presentAt least one script block; none fails.
- Organization schemaMissing it warns when other JSON-LD exists, fails when none does.
- WebSite and WebPage schemaSame conditional logic, lower weights.
- BreadcrumbList, FAQPage, Article, Person, ProductOptional types, small weights each; right type on the right page.
- JSON-LD syntax validParse errors fail.
- Required properties presentSchemas missing required fields warn.
HTML Extractability & Main Content Clarityweight 1.2Whether a parser can pull clean text and understand the page without fighting the markup.
- Title tag present, 15 to 65 charactersMissing fails; bad length warns.
- Meta description present, 50 to 160 charactersMissing or mis-sized warns.
- Exactly one H1, aligned with the titleZero or several H1s warn; title/H1 mismatch warns.
- Canonical present, same origin, matches the URLCross-origin or mismatched canonicals warn.
- Text-to-HTML ratio at least 5%Markup-heavy pages warn.
- At least 300 characters of textThin pages warn.
- OpenGraph basics, lang attribute, viewport, faviconEach missing item warns.
- Alt text on at least 90% of images50 to 90% warns; under half fails.
Entity Clarityweight 1.2Whether a machine can tell who you are. Ambiguity here is how engines confuse you with someone else.
- Organization or LocalBusiness schemaIdentifies the entity behind the site.
- Brand name in the titleThe entity name appears in the title tag.
- Brand name in the H1The entity name appears in the main heading.
- Social profiles linkedProfile links corroborate the entity across the web.
Trust & Securityweight 1.0Accountability pages plus the security surface. Engines prefer recommending sites that look operated by someone reachable and competent.
- About, contact, privacy, and terms pagesEach missing link warns.
- Testimonial and press signalsSoft signals; missing warns lightly.
- Security headersFour or more of HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy pass; under two fail.
- No exposed secrets or sensitive filesLive credentials in client code, or files like /.env and /.git reachable, fail.
- No directory listing, mixed content, or insecure formsEach fails when found.
- Cookie flags, CORS policy, version disclosure, source maps, admin paths, SRIHygiene checks; issues warn.
- Internal link densityTen or more internal links pass; under three fail.
- RSS or Atom feed discoverableFeeds give engines a clean ingestion path; missing warns.
- Speakable and SearchAction schemaOptional voice and sitelinks extras; informational.
Content Freshness & Authorityweight 1.0Datestamps and bylines. Engines discount content that nobody signed and nobody dated. The dimension where the top decile separates hardest.
- Publication datedatePublished in schema or article:published_time in meta.
- Last-modified datedateModified in schema or article:modified_time in meta.
- Visible time elementA <time> element with a datetime attribute.
- Author or bylinePerson schema is the strongest signal; visible bylines and meta also pass.
- FAQPage and Article schema where relevantInformational when not applicable.
Content Answerabilityweight 1.0Whether the writing is shaped so an engine can lift an answer: questions, definitions, lists, and concrete numbers.
- Question-phrased headings30% or more of H2/H3 headings pass; some but fewer warn.
- Lists and tablesRoughly two structured elements per thousand words pass.
- Section depthA median of 40 or more words per section; 80+ reads as thorough.
- Unique data pointsFive or more concrete numbers, percentages, or prices pass.
- Definition patternsThree or more X-is-Y constructions pass.
- FAQ content with matching schemaVisible Q&A plus FAQPage schema passes; visible without schema warns.
The audit-page mapping
How nine sections become six checks
The audit page describes the report in six buyer-facing groups. Same engine, same checks; this is only a presentation grouping.
| On the audit page | Scored sections behind it |
|---|---|
| Crawl & fetch readiness | Fetch, Render, and URL Integrity + Bot Access & Control Plane |
| Structured data | Structured Data |
| Content extractability | HTML Extractability & Main Content Clarity |
| Answerability & citation | Content Answerability + Content Freshness & Authority |
| Identity & trust | Entity Clarity + Trust & Security |
| Off-site mentions | Off-site Presence & Mentions |
From checks to a 0-100 score
The scoring math
Every check has a status and a weight. Pass earns the full weight, warn earns half by default (a few soft checks earn less), fail earns zero, and infomeans the check could not be evaluated and is excluded from scoring rather than penalized. A section’s score is points earned over points possible, on a 0–100 scale.
The overall score is the weighted average of the nine section scores using the weights listed above. When a whole section cannot be evaluated (for example, off-site mentions while search providers are unavailable), it is held at a neutral 50 rather than inflating or sinking the total, and the report says so.
Worked example: a section with three checks weighted 10, 20, and 15, where the first passes, the second warns, and the third fails, earns 10 + 10 + 0 = 20 of a possible 45, scoring 44/100.
Industry percentiles shown in reports use linear interpolation against the benchmark distribution at p05, p10, p25, p50, p75, p90, and p95.
Behind the State of AI Visibility
How the benchmark sample is built
The public benchmark aggregates completed audits from the last 365 days. Each domain contributes only its most recent run, audits without a finite overall score are excluded, and percentiles are computed across the deduplicated set.
The honest caveat: the sample is self-selected. These are sites whose teams chose to run an AI-readiness audit, which likely skews the sample toward companies already thinking about AI search. The true median across all B2B websites is plausibly lower than the published one.
The aggregate data is published at /state-of-ai-visibility with a JSON download, and refreshed weekly.
What the audit cannot see
Limitations
- It is automated and reads only the public surface. It cannot judge whether your content is actually good, only whether it is structured to be retrieved and quoted.
- It is point-in-time. A deploy can change the score the same day; that is why re-running on a cadence matters more than any single number.
- It measures readiness, not outcomes. Being citable raises the odds of citation; it does not guarantee an engine picks you.
- Engine behavior shifts. Checks track published crawler documentation and observed behavior, and the rubric changes when the engines do (see the changelog).
- Off-site checks depend on third-party search providers. When providers are unavailable, those checks report as not-evaluated instead of guessing.
Every change to the rubric, dated
Scoring changelog
Methodology published. Current engine scores nine sections; fetch, render, and URL integrity became its own scored section this quarter (previously folded into the crawl checks), which is why earlier snapshots show eight.
Questions about a specific check, or a score you think is wrong? Send a message and we will look at the run together. Or run the audit and read your own report against this rubric.