What it does#
AEO Checker is a Chrome extension that audits the page you're currently on for AI-readiness — the qualities that decide whether ChatGPT, Perplexity, Google AI Overviews, and Claude can retrieve your page and quote it when answering a question.
It runs nine checks against the live page, weights them, and gives you one 0–100 AEO Score with a per-check breakdown of passes, warnings, and fails. Every warning comes with the concrete fix, and most come with a link to the article that explains the underlying signal in full.
The reason it's an extension rather than a site-wide crawler is scope. A crawler tells you your domain has 400 problems. AEO Checker tells you what's wrong with the page open in front of you, in about a second, while you're the person who can fix it.
The nine checks and what they're worth#
Weights are the raw points each check contributes. They add up to 105 rather than 100 on purpose: a check that doesn't apply to the current page is marked n/a and drops out of both sides of the fraction, so the score is always a percentage of what was actually applicable. A blog post with no Organization entity isn't punished for lacking one.
| Signal | Weight | Passes when | Deep dive |
|---|---|---|---|
AI bots in robots.txt |
25 | No retrieval bot is blocked (ChatGPT-User, ClaudeBot, anthropic-ai, PerplexityBot) and fewer than four training bots are (GPTBot, CCBot, Google-Extended, Applebot-Extended, Meta-ExternalAgent, Bytespider). A wildcard Disallow: / fails outright. |
robots.txt for AI crawlers |
| Server-rendered text | 20 | Raw-HTML word count divided by rendered-DOM word count is ≥ 0.8. Between 0.3 and 0.8 warns; below 0.3 fails. | The JavaScript trap |
| JSON-LD entities | 20 | At least one specific type is present — Article, FAQPage, HowTo, Product, ProfilePage, BreadcrumbList and eighteen others. Only WebPage / WebSite / Organization / Person warns; no parseable JSON-LD fails. |
JSON-LD for AI |
| Heading hierarchy | 10 | Exactly one H1 and no skipped levels. Zero or three-plus H1 fails; a skipped level warns. |
Heading hierarchy |
| Metadata bundle | 10 | All six of title, description, og:title, og:image, canonical and html lang check out. Four or five warns. |
The invisible tags |
robots meta |
5 | The page carries no noindex. |
The 3-word tag |
datePublished + author |
5 | Both present in structured data. One of the two warns. n/a on pages that aren't articles. |
Recency and authority |
Entity authority (sameAs) |
5 | A Person or Organization in the JSON-LD links out to authoritative profiles. n/a when the page has no such entity to anchor. |
— |
llms.txt |
5 | /llms.txt answers 200 with a text/plain or text/markdown content type. HTML body or wrong MIME warns; 404 fails. |
Adding llms.txt |
The weighting is a claim about what breaks first, and it is mine rather than anyone's published research. Access outranks everything — a blocked crawler makes the other eight checks irrelevant, which is why robots.txt alone carries a quarter of the score. Renderability and structured data come next at 20 apiece, because a bot that reaches your page still has to find text in it and know what the text is about. Presentation-layer signals sit at 5 and 10: real, cheap, and not what sinks a page.
One known divergence. The metadata check accepts a
descriptionof 50–160 characters, while this site enforces a narrower 120–165 insrc/lib/snippet-limits.ts— a window that also rejects descriptions Google would pad from body text. Thetitlebound is the same 60 on both sides.
Reading the score#
A partial pass is worth half. pass earns full weight, warn earns half, fail earns nothing, and n/a is excluded from the total — so a warning costs you real points without pretending the page is broken.
| Band | Score | What it usually means |
|---|---|---|
| Excellent | 90–100 | Nothing structural is in the way. Remaining points are usually one warning on a 5-weight check. |
| Good | 70–89 | Retrievable and parseable. Typically a missing llms.txt or a thin metadata bundle. |
| Needs work | 50–69 | Something with real weight is failing — usually renderability or absent structured data. |
| Poor | 0–49 | Check access first. At this level a blocked crawler or a client-rendered shell is the likely cause, and fixing it moves the score more than anything else will. |
Chasing 100 is the wrong instinct. The score is a diagnostic ordering, not a target: getting from 45 to 75 by unblocking PerplexityBot matters, and getting from 92 to 97 by adding sameAs to a page nobody retrieves does not.
How it compares#
Four tools, four different jobs. No judgement about which is better — they answer different questions, and the honest reason to know the others is that AEO Checker deliberately does not do what they do.
| AEO Checker | agent-ready.dev | llms-txt.io validator | Profound crawlability | |
|---|---|---|---|---|
| Form | Chrome extension | Web scanner, API, GitHub Action | Web form | Platform, integrated at CDN or server |
| Scope | The one page you're on | Whole site — 15 site-wide plus 24 per-page checks, 71 in total | A single llms.txt file, by URL or pasted |
Whole site, from live crawler traffic |
| Data source | The rendered page, plus /robots.txt and /llms.txt |
Fetched pages | The file you point at | Your server logs and CDN data |
| Answers | Is this page retrievable and parseable right now | Is the site agent-ready against the Vercel Agent Readability Spec, llmstxt.org, and protocol manifests like MCP and A2A | Is this llms.txt structurally valid |
Which AI bots actually came, what they fetched, what errored |
| Also covers | — | 23 WCAG accessibility checks as a sub-score | — | Response times and render verification per bot |
| Cost | Free | Free, with paid Pro plans | Free, with paid managed-site monitoring | Pricing not published; demo-led |
The gap worth naming: AEO Checker tells you nothing about whether crawlers actually visited. That question needs server logs, and Profound is built for it. Equally, if you want one number for an entire domain or a check in CI, that is what agent-ready.dev does and this extension does not.
Privacy#
The extension requests two permissions, activeTab and scripting, and holds no others.
There is no remote server, no account, no telemetry — not even anonymous usage counts. A scan reads the active tab's HTML in your browser and makes same-origin requests to that site's /robots.txt and /llms.txt. Results live in the popup and are discarded when it closes. The claim is structural rather than a promise: there is no code path in the extension that calls a server I control.
Full detail on the AEO Checker privacy page.
How to use#
- Install from the Chrome Web Store (button below).
- Open any page you want to audit.
- Click the AEO Checker icon in the toolbar.
- Read the score, open the failing checks, apply the fixes, reload, re-scan.
Start with whatever is failing in the access category. Points there are worth more, and every other check is downstream of a crawler being allowed in.
FAQ#
Does AEO Checker send my page data anywhere?#
No. It requests only the activeTab and scripting permissions, processes the page entirely in your browser, and has no code path that contacts a server I run. There is no telemetry, no account, and no analytics — see the privacy page.
Why does the score not add up to 100 from the weights?#
The nine weights total 105, and checks that don't apply to the current page are marked n/a and removed from both the earned and the possible total. The score you see is the percentage of applicable weight you earned, so a page with no Person or Organization entity is never penalized for the entity-authority check.
What is a good AEO Score?#
Anything from 90 counts as excellent and 70 upward means nothing structural is blocking retrieval. Below 50, look at the access checks first — a blocked crawler or a client-rendered shell costs more points than every presentation-layer signal combined, and fixing it usually moves the score further than anything else available to you.
Does it work on any site, or only my own?#
Any page you can open in Chrome. The scan needs no ownership, no verification and no access to a dashboard, which makes it just as usable on a competitor's page as on your own.
How is this different from a site-wide AI-readiness scanner?#
Scope and moment. A crawler audits a domain and hands you a backlog; this audits the page in front of you while you are the person editing it. For whole-site scoring or a check that runs in CI, use a scanner built for that — the comparison above lays out which tool answers which question.