A site can score 94 on Google PageSpeed Insights, have no broken links, and still be invisible to ChatGPT, Perplexity, and Google AI Overviews. The AI visibility score measures a different set of signals — and most sites haven't been optimized for any of them.
Here's exactly what the AI Visibility Grader checks, what each band means, and what to do when a signal comes back red.
Traditional SEO scores measure whether a site is crawlable by Googlebot, loads quickly, and has reasonable on-page optimization. Those signals still matter. But AI search engines — the systems powering ChatGPT's web search, Perplexity's citations, and Google's AI Overviews — have different extraction requirements.
They need:
Permission to crawl (robots.txt and llms.txt signals)
Structured signals they can parse without guessing (schema markup, semantic HTML)
Extractable content they can quote verbatim (body text that doesn't require JavaScript to render)
Freshness signals that indicate a page is current and authoritative
A site that fails these signals doesn't get cited. It doesn't appear in AI-generated answer panels. It loses traffic from the fastest-growing search surface in 2026 — not because Google penalized it, but because AI systems can't reliably extract or attribute its content.
What it checks: Whether the site has a /llms.txt file at the root domain.
llms.txt is an emerging standard — analogous to robots.txt but designed for large language models. A well-formed llms.txt file tells AI crawlers which pages they're allowed to index, which content is authoritative, and which sections to skip.
Grade bands:
Pass:/llms.txt is present, returns HTTP 200, and contains valid directives
Warn: File is present but malformed (wrong MIME type, empty, or returns a redirect)
Fail: No /llms.txt file at the root
Fix: Create a plain-text file at the root of the domain. At minimum:
Add Disallow directives for login pages, cart pages, and internal tooling that AI systems shouldn't index. See llms.txt and the future of AI discoverability for a complete reference format.
What it checks: Whether robots.txt explicitly blocks or allows known AI crawlers (GPTBot, ClaudeBot, PerplexityBot, anthropic-ai, Applebot-Extended).
Grade bands:
Pass: At least three major AI crawlers are explicitly allowed (or User-agent: * allows all)
Warn: Some crawlers are allowed, some are blocked, or the file is silent on AI crawlers
Fail:GPTBot or other major AI crawlers are explicitly disallowed
This one catches site owners who added AI crawler blocks during the 2023–2024 "protect my content" wave. Those blocks were understandable then. Now they're self-defeating: they prevent citation, discovery, and traffic from AI-powered search.
Fix: Open robots.txt and audit the Disallow rules. Remove blocks on:
User-agent: GPTBot
Disallow:
Replace with:
User-agent: GPTBot
Allow: /
Repeat for ClaudeBot, PerplexityBot, and anthropic-ai. If you blocked all crawlers with a wildcard Disallow: / and only allowed Googlebot, you've opted out of every AI index.
What it checks: Whether the page has valid schema markup, which types are present, and whether they match the page's content category.
AI systems use structured data to anchor facts. A LocalBusiness schema block tells an AI system the business name, address, phone, and hours without requiring text extraction from a paragraph. An Article schema block with datePublished tells it the content is recent. A FAQPage schema tells it exactly what questions the page answers — which directly feeds AI Overview sourcing.
Grade bands:
A (90–100): Multiple schema types, all valid JSON-LD, types match page content
B (80–89): One valid schema type present
C (70–79): Schema present but has validation errors (missing required fields, wrong property names)
D/F (under 70): No schema, or schema that fails to parse
Fix: Add JSON-LD blocks in the <head>. The highest-impact types for AI visibility:
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "How much does an SEO audit cost?", "acceptedAnswer": { "@type": "Answer", "text": "Typical SEO audits range from $500 for a basic report to $5,000+ for a full technical and content audit." } } ]}
Use the Schema Markup Validator to verify your JSON-LD parses cleanly before deploying. Invalid schema is worse than no schema — it signals to both crawlers and AI systems that the site owner doesn't maintain their markup.
Check your meta tag configuration too: title and description completeness directly affects how AI systems attribute and display your pages in citations.
What it checks: Whether the page has sufficient body text for AI systems to quote and cite, and whether that text renders in the HTML source (not JavaScript-injected after load).
This is the most commonly failed signal on modern sites. Single-page applications that render content via client-side JavaScript get crawled by Googlebot fine (it runs JavaScript). Many AI crawlers don't — they read the HTML source. If your page's primary content is rendered by React after the initial paint and the HTML source contains only a <div id="root"></div>, your page is functionally empty to those systems.
Grade bands:
Pass: 300+ words in the raw HTML source, no major content blocks require JavaScript
Warn: 150–300 words in source, or key content blocks appear to be JS-rendered
Fail: Under 150 words in source HTML, or the page is essentially a shell
Fix: Server-side rendering (SSR) or static site generation (SSG) for content pages. If you're on Next.js, ensure content pages use getStaticProps, generateStaticParams, or are Server Components — not pure client components that fetch and render their own content.
For marketing pages: write the content directly into the template. Don't load blog posts, service descriptions, or FAQ sections via client-side API calls.
What it checks: The datePublished and dateModified schema properties, the Last-Modified HTTP header, and whether the sitemap includes <lastmod> timestamps.
AI systems weight recency. A page with no publication date is treated as potentially stale. A page with a dateModified from six months ago but substantive content may still rank well — the date signal is one input among many. But a page with no freshness signals at all is at a systematic disadvantage for time-sensitive queries.
Grade bands:
Pass:dateModified in schema is within the past 90 days, sitemap <lastmod> is accurate
Warn: Dates present but dateModified is more than 90 days old, or sitemap <lastmod> is stale
Fail: No date metadata anywhere on the page
Fix: Add datePublished and dateModified to Article or WebPage schema. Keep them accurate — updating dateModified without actually changing the content is a signal-gaming pattern that AI systems are getting better at detecting.
The overall AI visibility score weights these signals:
Signal
Weight
Structured data coverage
35%
Content extractability
30%
Crawler access (robots.txt + llms.txt)
25%
Freshness signals
10%
A site that blocks GPTBot and has no schema markup will score in the 30–40 range regardless of how good its content is. A site with excellent schema and SSR-rendered content but no llms.txt will score around 65–70 — passing, but not competitive against sites that have done all five things.
Opinionated take: The sites scoring 85+ on AI visibility in 2026 are almost entirely sites that were already well-optimized for traditional SEO — with one addition: they didn't panic and block AI crawlers when the option appeared. The biggest AI-visibility mistakes are acts of commission, not omission.