AI Readiness Index

All 51 scored tests

AI assistants now answer the questions a search box used to. They can only quote, cite or recommend what they can actually find, read and trust — and most sites were never built with that in mind. This is the full list of what that takes: every test in the AI Readiness Index, the same list a Primary Indicators scan or a Scan of your own site is measured against. Open any row for why it matters.

Grouped into 7 dimensions, worth 100 points, so a fix that matters more counts for more. The Primary Indicators scan runs 13 of these on a single page, free — the Full scan runs all 51 scored tests across your site, also free. More tests are run and reported on every scan but never count toward the score, each marked Not scored. Some are Unscored Leading Indicators: a practice with essentially no adoption yet, so scoring it would subtract the same points from every site and move nobody relative to anybody. They are worth 0 of the 100 until that changes.

How the points add up, and where they round

Each test scores a band from 0 to 4. What it contributes is its weight times its band, divided by four — so a test worth 2 at band 3 contributes exactly 1.5 points. Your score is every contribution added at full precision, divided by the 100 points above, and rounded once at the end.

Every points figure we show you is a whole number, because a report is meant to be read out loud and nobody argues about three quarters of a point. That means the rows on a report will not add up to the score on it — roughly a third of them round up or down to get there. Both figures are right, and the score is always computed from the exact ones, never from the rounded ones.

You never have to take that on trust. Every full report links to its own full accounting: every test, its band, the arithmetic written out, and the final division, with nothing rounded.

#1

Primary Indicators

13 tests · 30 points

AIR-1.1 5 PTS Can AI crawlers reach your site?
What we're measuring

Your robots.txt tells crawlers what they may read. One stale line, often copied from an old template, can shut out the assistants people now use to find you.

Fixed by
  • Search specialist (lead)
  • Site owner
Why this matters
OpenAI names its own crawlers here, so this is the one place to confirm which user agents robots.txt needs to address.
AIR-1.2 5 PTS Does your CDN let AI crawlers through?
What we're measuring

Even when robots.txt says yes, a firewall or bot rule can turn assistants away before they reach a page. We ask as each crawler and record what comes back.

Fixed by
  • Operations
Why this matters
Cloudflare sits in front of a huge share of the web, so its own AI-crawler rules are what most sites actually enforce.
AIR-1.3 1 PT Is your page readable without a security challenge?
What we're measuring

A CAPTCHA or bot check on an ordinary page stops an assistant at the door. Those belong on forms and logins, not on pages anyone can read.

Fixed by
  • Operations (lead)
  • Back-end developer
Why this matters
Google publishes exactly which status codes and errors stop a crawler cold, straight from the team that builds the crawler.
AIR-1.4 3 PTS Have you stated what AI may do with your content?
What we're measuring

A machine-readable line in robots.txt saying whether AI may search, quote or train on your content. Having a stated position — any position — is the point.

Fixed by
  • Search specialist (lead)
  • Site owner
Why this matters
The standard itself, published by the group defining what a robots.txt AI-permission line actually means.
AIR-1.5 1 PT Can a person read your AI policy?
What we're measuring

A few plain sentences in robots.txt saying what you permit. Journalists and lawyers read this file, and most sites say nothing in it.

Fixed by
  • Site owner (lead)
  • Search specialist
Why this matters
The actual internet standard robots.txt follows, from the IETF working group that ratified it in 2022.
AIR-1.6 1 PT Are you allowing assistants to quote you?
What we're measuring

Old settings that told search engines not to show an excerpt also stop an assistant quoting your page in an answer.

Fixed by
  • Search specialist (lead)
  • Back-end developer
Why this matters
The same reference explains how a leftover noarchive-style setting silently blocks an assistant from quoting your page.
AIR-1.7 2 PTS Does this page declare its real address?
What we're measuring

A canonical link names the true address of a page. Without one, the same content reads as several competing pages.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Why this matters
Google's explanation of canonical URLs, written for the exact crawler that decides which version of a page is real.
AIR-1.8 2 PTS Is your page structured so a machine can follow it?
What we're measuring

Meaningful elements rather than an undifferentiated wall of containers. It is the difference between a document and a soup of boxes.

Fixed by
  • Front-end developer
Why this matters
The W3C's own accessibility tutorial on giving a page real structure, the same structure a machine parses too.
AIR-1.9 2 PTS Do your headings tell a clear story?
What we're measuring

One main heading, then sub-headings in order. Assistants use headings to work out which part of a page answers a question.

Fixed by
  • Front-end developer (lead)
  • Content team
Why this matters
The W3C's guidance on heading order, written for screen readers but read the same way by an assistant.
AIR-1.10 2 PTS Do you publish a guide for AI assistants?
What we're measuring

A file at /llms.txt listing your most important pages. It is early and cheap, and it forces a useful conversation about what actually matters on your site.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Why this matters
The proposal's own site, from the person who coined the /llms.txt format this check looks for.
AIR-1.11 2 PTS Can a machine tell what your organization is?
What we're measuring

Structured data that links together — your organization, your site, this page — rather than a scattering of disconnected labels.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Why this matters
The JSON-LD specification's own site, the format nearly every structured-data check in this Index assumes.
AIR-1.12 2 PTS Can a machine be certain it is you?
What we're measuring

Links from your markup to authoritative records like Wikidata or ROR. Without one, an assistant is guessing which organization of your name it has found.

Fixed by
  • Search specialist (lead)
  • Back-end developer
Why this matters
Schema.org's own definition of sameAs, the property that links your markup to an authoritative outside record.
AIR-1.13 2 PTS Can a machine find out who you are?
What we're measuring

Founding date, leadership, address, contact details, legal identifiers. Thin About pages are the most common weakness we see.

Fixed by
  • Content team (lead)
  • Site owner
Why this matters
Schema.org's own Organization type, listing the founding date, address and identifiers a thin About page usually skips.
#2

Rendering and Extraction

6 tests · 15 points

AIR-2.1 6 PTS Does your content show up without JavaScript?
What we're measuring

If your content only appears after JavaScript runs, a crawler that does not run it sees an empty page. This is the heaviest check in the Index.

Fixed by
  • Front-end developer (lead)
  • Back-end developer
Why this matters
Google's own explanation of when its crawler renders JavaScript and when it gives up, from the company that built it.
AIR-2.2 3 PTS Is content behind tabs and accordions already in the page?
What we're measuring

Tabs and accordions are fine, as long as the text is already in the HTML before anybody clicks.

Fixed by
  • Front-end developer
Why this matters
The same guidance covers progressive disclosure — content that should already be in the HTML before anyone clicks.
AIR-2.3 2 PTS Are your tables real tables?
What we're measuring

Tuition, hours, fees, comparisons — in a real table with header cells, not an image and not a grid of divs.

Fixed by
  • Front-end developer (lead)
  • Content team
Why this matters
The W3C's tutorial on real data tables, the format a machine can actually parse cell by cell.
AIR-2.4 2 PTS Can a model link straight to a section of your page?
What we're measuring

Stable IDs on your headings let a model cite the exact passage rather than the whole page.

Fixed by
  • Front-end developer
Why this matters
The HTML living standard itself, defining the id attribute a stable anchor link depends on.
AIR-2.5 1 PT Do your images say what they show?
What we're measuring

Alt text is the only text an image has. Decorative images should say so with an empty alt rather than describing themselves.

Fixed by
  • Content team (lead)
  • Back-end developer
Why this matters
The W3C's own decision tree for when alt text is required and when an empty alt is correct.
AIR-2.6 1 PT Are your key facts written as text?
What we're measuring

A fact locked inside a PDF, a scan or an infographic is a fact an assistant cannot quote.

Fixed by
  • Content team (lead)
  • Front-end developer
Why this matters
The W3C's guidance on why a fact rendered as an image is invisible to anything that can't see.
#3

Structured Data and the Entity Graph

8 tests · 15 points

AIR-3.1 2 PTS Is your structured data built from your content, not typed in by hand?
What we're measuring

Schema generated from your content model survives the next content change. Hardcoded schema rots quietly and nobody notices for a year.

Fixed by
  • Back-end developer
Why this matters
Google's own introduction to structured data, from the company whose crawler actually consumes the markup.
AIR-3.2 2 PTS Does each page say where it sits in your site?
What we're measuring

Every page below the homepage should declare where it sits, so a model knows a program page belongs to a department.

Fixed by
  • Back-end developer
Why this matters
Google's own reference for breadcrumb markup, the property that tells a model where a page sits in your site.
AIR-3.3 4 PTS Does your markup describe what you actually publish?
What we're measuring

Use the types that match what you actually publish — courses, programs, clinicians, grants — rather than a generic WebPage on everything.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Why this matters
Google's full gallery of supported structured-data types, the closest thing to a menu of what to use instead of WebPage.
AIR-3.4 2 PTS Is your FAQ markup made of real questions and answers?
What we're measuring

Mark up real questions and answers. Do not invent an FAQ block that is not on the page: fabricated markup is a policy problem, not a shortcut.

Fixed by
  • Content team (lead)
  • Back-end developer
Why this matters
Google's own policy page on FAQ markup, including the warning against marking up questions nobody actually asked.
AIR-3.5 1 PT Do you say what a page is about and whether it is free to read?
What we're measuring

Say whether the page is free to read, and link the entities it is actually about. Both are things an assistant would otherwise have to assume.

Fixed by
  • Back-end developer (lead)
  • Content team
Why this matters
Schema.org's own definition of the property that tells a model whether it's allowed to read a page at all.
AIR-3.6 1 PT Are your prices and offers in your markup, and current?
What we're measuring

Prices and offers in markup, and current. A stale price in structured data is worse than no price at all.

Fixed by
  • Back-end developer (lead)
  • Content team
Why this matters
Google's reference for product markup, including why a stale price is worse than no price to its own systems.
AIR-3.7 1 PT Can an agent search your site without a search box?
What we're measuring

Expose your site search as a pattern an agent can call, instead of a box only a human can type into.

Fixed by
  • Back-end developer
Why this matters
Google's own specification for exposing a site search as structured data an agent can call directly.
AIR-3.8 2 PTS Does your structured data actually validate?
What we're measuring

Markup that does not parse, or that leaves out what its type needs, is served to machines that cannot use it — and nothing on the page says so.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Why this matters
The validator schema.org itself runs on submitted markup, and the same judgment this test makes on every page we sample.
#4

Crawl, Index and Licensing Hygiene

10 tests · 12 points

AIR-4.1 1 PT Have you published your licensing terms in a form machines can read?
What we're measuring

Machine-readable licensing terms, so an AI company can find out what you allow without emailing you first.

Fixed by
  • Site owner (lead)
  • Back-end developer
Why this matters
RSL's own specification defines the machine-readable licensing format this check looks for.
AIR-4.2 1 PT Do your licensing terms travel with your content?
What we're measuring

Licensing that travels with the content — in your feeds and your structured data, not only in one file nobody fetches.

Fixed by
  • Back-end developer
Why this matters
The same standard that defines the license file also defines how it travels with content in feeds and markup.
AIR-4.3 1 PT Can you prove a visiting bot is who it says it is?
What we're measuring

Verified agents get through and unsigned scrapers claiming to be them do not, because the edge checks a signature instead of trusting a user-agent string.

Fixed by
  • Operations (lead)
  • Back-end developer
Why this matters
The IETF draft defining cryptographic bot verification, the mechanism this check is asking your edge to support.
AIR-4.4 1 PT Do your PDFs and images carry their own crawl rules?
What we're measuring

PDFs, images and JSON cannot carry a meta robots tag, so the directive has to travel in the HTTP header instead.

Fixed by
  • Operations
Why this matters
Google's own documentation on the header that has to carry this directive when a file can't hold a meta tag.
AIR-4.5 1 PT Do your missing pages say they are missing?
What we're measuring

A missing page that answers 200 OK teaches a crawler that nothing is ever missing, and spends its time on pages that are not there.

Fixed by
  • Back-end developer (lead)
  • Operations
Why this matters
Google defines a soft 404 as a page that should return a real error but returns 200 instead.
AIR-4.6 1 PT Do your redirects go straight to the destination?
What we're measuring

Every extra redirect is another chance to be dropped. One hop, straight to the destination.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Why this matters
Google's own guidance on redirect chains, from the crawler that has to follow every hop you add.
AIR-4.7 2 PTS Are your filters and calendars kept from swallowing a crawl?
What we're measuring

Filters and calendars can generate millions of URLs. A crawler spends its budget in there instead of on the pages you care about.

Fixed by
  • Search specialist (lead)
  • Back-end developer
Why this matters
Google's own advice for the faceted-navigation problem, aimed at engineers whose crawl budget it actually spends.
AIR-4.8 2 PTS Can a crawler trust the dates in your sitemap?
What we're measuring

A lastmod date should mean the content changed, not that you deployed. Once it is noise, crawlers stop trusting it.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Why this matters
The sitemaps.org spec that defines lastmod, jointly backed by Google, Bing and Yahoo.
AIR-4.9 1 PT Is your sitemap organized by type of content?
What we're measuring

Separate sitemaps per content type turn “coverage is bad” into “coverage is bad for news,” which is a problem somebody can fix.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Why this matters
Google's own instructions for splitting sitemaps by type, from the side that actually reads them.
AIR-4.10 1 PT Can a crawler reach page two and beyond?
What we're measuring

Page two and everything after it has to be reachable by something that does not click.

Fixed by
  • Search specialist (lead)
  • Back-end developer
Why this matters
Google's guidance on pagination and infinite scroll, written for the crawler that can't click a 'load more' button.
#5

Authorship, Provenance, Freshness

6 tests · 12 points

AIR-5.1 2 PTS Do your authors have real pages with real credentials?
What we're measuring

Authors who resolve to real people with real credentials, on pages of their own — not a name in a byline and nothing behind it.

Fixed by
  • Content team (lead)
  • Back-end developer
Why this matters
Google's own guidance on why real, credentialed authorship is part of what it considers trustworthy content.
AIR-5.2 2 PTS Do your bylines point at a person, not just a name?
What we're measuring

Sign substantive pages, and point the byline at the author's entity rather than repeating their name as text on every article.

Fixed by
  • Back-end developer (lead)
  • Content team
Why this matters
Schema.org's definition of the author property, and why it should point at an entity, not just a name string.
AIR-5.3 2 PTS Does health, legal and financial content name its reviewer?
What we're measuring

Health, legal and financial pages should name their reviewer in the markup, not only in the design where a machine cannot see it.

Fixed by
  • Content team (lead)
  • Back-end developer
Why this matters
Schema.org's own property for naming a reviewer in markup, not only in a design a machine can't read.
AIR-5.4 2 PTS Are your published and modified dates honest?
What we're measuring

A modified date that changes on every deploy is not a freshness signal. It is noise, and it costs you the trust of the real one.

Fixed by
  • Back-end developer (lead)
  • Content team
Why this matters
Google's reference for dateModified, including its own warning that a date changing on every deploy reads as noise.
AIR-5.5 2 PTS Can a machine follow your citations back to their sources?
What we're measuring

Where you cite a primary source, make the citation machine-readable so the chain from claim to evidence survives.

Fixed by
  • Back-end developer (lead)
  • Content team
Why this matters
Schema.org's own definition of a machine-readable citation, the link between a claim and its primary source.
AIR-5.6 2 PTS Can your images prove where they came from?
What we're measuring

Provenance that survives into the delivered file, so an image can prove where it came from after somebody else has reposted it.

Fixed by
  • Operations (lead)
  • Site owner
Why this matters
The C2PA coalition's own standard for provenance that survives into the delivered file itself.
#6

Agent Interfaces

4 tests · 8 points

AIR-6.1 2 PTS Do you describe your public API in a spec an agent can read?
What we're measuring

If you have a public API, describe it in a spec an agent can read, and version it so today's answer is still true next quarter.

Fixed by
  • Back-end developer
Why this matters
The OpenAPI Specification itself, the versioned format that keeps a described API's contract honest over time.
AIR-6.2 2 PTS Do you publish agent capabilities where agents look for them?
What we're measuring

Put your agent capabilities where agents look for them, rather than in a URL somebody has to be told about.

Fixed by
  • Back-end developer (lead)
  • Operations
Why this matters
IANA's own registry of well-known URIs, the standard location agents already check first.
AIR-6.3 2 PTS Can an agent tell what each form field is for?
What we're measuring

An agent filling in your form has to know what each field is for. Labels, names and autocomplete tokens are how it finds out.

Fixed by
  • Front-end developer (lead)
  • Content team
Why this matters
The W3C's tutorial on labeling form fields, written for assistive tech but read the same way by an agent.
AIR-6.4 2 PTS Can an agent search and filter without meeting a captcha?
What we're measuring

Challenge the actions that need challenging. Searching and filtering are not those actions, and a captcha there ends the visit.

Fixed by
  • Operations (lead)
  • Front-end developer
Why this matters
The W3C's own working-group note on why CAPTCHA blocks more than it protects, and where it still belongs.
#7

Alternate Representations

4 tests · 8 points

AIR-7.1 2 PTS Do you offer a clean Markdown version of your pages?
What we're measuring

A clean Markdown version of each page: none of the navigation, none of the markup a model has to wade through to reach your words.

Fixed by
  • Back-end developer
Why this matters
The IETF RFC that formally registered text/markdown as a media type in the first place.
AIR-7.2 2 PTS Does each page point to its Markdown version?
What we're measuring

Publishing the Markdown is not enough. The HTML page has to point at it, or nothing will ever find it.

Fixed by
  • Front-end developer
Why this matters
The RFC defining the Link header this check expects to point at a Markdown alternative.
AIR-7.3 2 PTS Can a machine ask your URL for Markdown?
What we're measuring

Ask the same URL for Markdown and get Markdown back. One address, two representations, no second set of links to maintain.

Fixed by
  • Back-end developer (lead)
  • Operations
Why this matters
The current HTTP standard's own chapter on content negotiation, the mechanism Accept: text/markdown relies on.
AIR-7.4 2 PTS Are your alternate versions served from the cache?
What we're measuring

Generated representations should come from the CDN. Otherwise every request rebuilds them at origin, and you will turn them off when the bill arrives.

Fixed by
  • Operations (lead)
  • Back-end developer
Why this matters
Cloudflare's own explanation of what it caches and why, from the CDN a generated page probably sits behind.

Leading indicators

Not scored

Practices with essentially no adoption yet. Measured and reported so you can see them; unscored, because scoring something nobody has adopted takes the same points from everybody and moves nobody relative to anybody.

LI-1 0 PTS Are your step-by-step pages marked up as steps? NOT SCORED
What we're measuring

Steps marked as steps, so a model does not have to infer the sequence from prose and get it wrong.

Fixed by
  • Back-end developer (lead)
  • Content team
Why this matters
Schema.org's own type definition for step-by-step content, so a model can follow the sequence instead of guessing at it.
LI-2 0 PTS Have you flagged the part of each page that answers the question? NOT SCORED
What we're measuring

Flag your own best short answer — the lede, the summary — so an assistant reads that rather than guessing at a paragraph.

Fixed by
  • Back-end developer (lead)
  • Content team
Why this matters
Schema.org's definition of speakable, the property built to flag the best short answer on a page.
LI-3 0 PTS Do you tell search engines the moment something changes? NOT SCORED
What we're measuring

Tell search engines the moment something changes, rather than waiting to be crawled again.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Why this matters
The protocol's own docs, backed jointly by Microsoft Bing and Yandex as the search engines that consume it.
LI-4 0 PTS Do you document how your content is made and corrected? NOT SCORED
What we're measuring

Document how your content is produced, reviewed, corrected and funded — then point at that page from your markup.

Fixed by
  • Content team (lead)
  • Site owner
Why this matters
Schema.org's property for linking to the page that documents how content gets made, reviewed and corrected.
LI-5 0 PTS Can an assistant ask your site a question directly? NOT SCORED
What we're measuring

A natural-language endpoint over your own structured data, so an assistant can ask your site a question instead of scraping around it.

Fixed by
  • Back-end developer (lead)
  • Operations
Why this matters
The NLWeb project's own repository, defining the natural-language endpoint this check asks a site to expose.
LI-6 0 PTS Can an assistant call your catalog as a tool? NOT SCORED
What we're measuring

Your course catalog, provider directory or grant database, callable as documented tools rather than scraped out of a search results page.

Fixed by
  • Back-end developer (lead)
  • Operations
Why this matters
The same protocol spec, applied here to a catalog or directory instead of a generic API.
LI-7 0 PTS Do you offer your full text in one file? NOT SCORED
What we're measuring

The expanded variant, with the text inline. Worth it when your content is small enough to ship whole.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Why this matters
The same proposal spells out the expanded variant, where the full text ships inline instead of linked.

Best practices

Not scored

Real work, worth doing, and invisible to a scan. Whether a channel group exists in your analytics or a build validates before it merges cannot be seen from outside, so these are guidance rather than points.

BP-1 0 PTS Can a task like applying or donating be finished without JavaScript-only clicks? NOT SCORED
What we're measuring

Register, donate, apply, find a clinician — these should complete through ordinary form submissions and real URLs, not only through clicks.

Fixed by
  • Front-end developer (lead)
  • Back-end developer
Why this matters
The W3C's forms tutorial, covering the plain HTML submissions an agent can complete without clicking anything.
BP-2 0 PTS Can an agent find your key buttons again after a rebuild? NOT SCORED
What we're measuring

Hashed class names change on every build. An agent that found your Apply button yesterday cannot find it today.

Fixed by
  • Front-end developer
Why this matters
The HTML living standard's own section on data-* attributes, a stable hook that survives a class-name rebuild.
BP-3 0 PTS Can you count visits that come from AI assistants? NOT SCORED
What we're measuring

Traffic from ChatGPT, Perplexity, Claude and the rest lands in Direct by default, where it disappears. A channel group makes it countable.

Fixed by
  • Search specialist
Why this matters
Google's own documentation on channel groups, from the analytics platform that quietly files this traffic under Direct.
BP-4 0 PTS Do you capture visits whose referrer was stripped? NOT SCORED
What we're measuring

Some assistants strip the referrer before the browser sees it. Server-side tagging catches what the client-side tag cannot.

Fixed by
  • Search specialist (lead)
  • Operations
Why this matters
Google's own guidance on server-side tagging, built for exactly the referrer-stripping behavior this check is asking about.
BP-5 0 PTS Do you keep your crawler logs long enough to use them? NOT SCORED
What we're measuring

Crawler logs have to survive long enough to show a before and an after. Many hosts discard them in days.

Fixed by
  • Operations
Why this matters
Cloudflare's own documentation on log retention, from the edge many crawler requests actually pass through first.
BP-6 0 PTS Do you get a regular report on AI crawler activity? NOT SCORED
What we're measuring

Watch crawler behavior continuously rather than auditing it once. A crawler that stops appearing usually means somebody reintroduced a block.

Fixed by
  • Search specialist (lead)
  • Operations
Why this matters
Google's own crawl-stats report, the tool built specifically to show whether a crawler stopped showing up.
BP-7 0 PTS Do you ask the same questions of AI models every month? NOT SCORED
What we're measuring

Ask the same questions of the same models every month. It is the only way to see whether your share of the answers is moving.

Fixed by
  • Search specialist
Why this matters
Google's own page on AI features, written to explain how its systems currently draw on a site's content.
BP-8 0 PTS Have you measured how accurately a model reads your page? NOT SCORED
What we're measuring

Feed your page to a model, ask it your key questions, and score the answers. Then do it again after the fixes and compare.

Fixed by
  • Search specialist (lead)
  • Content team
Why this matters
The same reference frames repeat testing as the only way to see whether a fix actually changed an answer.
BP-9 0 PTS Are you verified in Google Search Console and Bing Webmaster Tools? NOT SCORED
What we're measuring

Verify both. Bing matters more than its search share suggests, because its index feeds several AI products.

Fixed by
  • Search specialist (lead)
  • Operations
Why this matters
Bing's own webmaster tools page, worth verifying because Bing's index quietly feeds several AI products.

Is your site ready for AI?

Scan a page, get a number you can verify. Free.