AI agent readiness checker

Enter a page and this tool checks whether ChatGPT, Claude, Perplexity, Copilot and Google can reach it, read it and use it. It looks at robots.txt for 15 AI crawlers, firewall blocks, content that only appears after JavaScript runs, structured data, and whether a browser agent could fill in your forms. Every issue comes with a fix.

Type the address any way you like: yourcompany.com, www.yourcompany.com and https://yourcompany.com/ all work. Add a path to check one page, such as yourcompany.com/pricing. A check takes about ten seconds and nothing is stored against your name.

Try:

What the checker tests, and what passes

Sixteen checks in five areas. Each scored check is weighted by how much it matters: a pass counts in full, needs attention counts half, a problem counts zero, and information items are not scored.

Can AI crawlers get in?

If a crawler is blocked, nothing else matters: the page cannot be retrieved, quoted or cited.

Read from an archived copy Not scored
What it checks
The live site answered a bot challenge, so the page was read from the Wayback Machine instead, in raw mode so the bytes are the originals rather than the archive's rewritten copy.
Pass criteria
Information only, not scored. Markup checks below are valid for the archived snapshot. Anything that depends on a live response is marked as not checked.
If it fails
Nothing to fix here. If the snapshot is old, the markup checks may not reflect your current site. To get a live reading, allow this checker through your firewall, or check from inside your own CDN dashboard.
Page is behind a bot challenge Not scored
What it checks
Loads the page the way a browser would, and recognises a challenge page from Cloudflare, DataDome or PerimeterX in place of the real content.
Pass criteria
Information only, not scored. A challenge blocks this checker, which runs from a data centre. It does not tell you whether AI crawlers are blocked, because challenge vendors usually allowlist verified crawlers.
If it fails
Check it from the inside. In your CDN or firewall, confirm verified bots are allowed, then look at the last 30 days of traffic for OAI-SearchBot, PerplexityBot, Claude-SearchBot and Bingbot. If they appear, access is fine. If they do not, add an allow rule. In Cloudflare: Security, then Bots, then Verified Bots.
robots.txt lets AI search crawlers in Weight 3
What it checks
Reads robots.txt and applies each crawler's rules to this exact URL, the way the crawlers do: the most specific user-agent group wins, then the longest matching rule, and Allow wins a tie.
Pass criteria
Pass: Googlebot, Bingbot, OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User and Applebot may all fetch the URL. Problem: any one of them is disallowed.
If it fails
Remove the Disallow rule that matches this URL for the blocked crawler, or add a group such as "User-agent: OAI-SearchBot" with "Allow: /". Check your SEO plugin, host and CDN too, because some of them write robots.txt for you.
Training crawlers Not scored
What it checks
Lists which model-training crawlers robots.txt allows: GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, Meta-ExternalAgent and CCBot.
Pass criteria
Information only, not scored. Blocking training crawlers does not remove you from AI search answers.
If it fails
If you want future models to know your brand, allow them. If you publish paid or licensed content, blocking them is a reasonable choice.
Page is allowed in search indexes Weight 3
What it checks
Reads the meta robots tags and the X-Robots-Tag header.
Pass criteria
Pass: no noindex, none, nosnippet or max-snippet:0. Needs attention: nosnippet or max-snippet:0, which Google applies to AI Overviews and AI Mode too. Problem: noindex or none.
If it fails
Remove the directive in your SEO plugin's settings for this page, or from the server or CDN rule that adds the X-Robots-Tag header.
Firewall lets AI bots through Weight 2
What it checks
Requests the page again as OpenAI, Anthropic, Perplexity and Bing crawlers and compares the response with the browser request.
Pass criteria
Pass: every crawler gets the same response as the browser. Needs attention: any of them gets HTTP 401, 403, 406, 429, 451 or 503, or a challenge page. We send from our server, not the bots' own IP addresses, so a firewall that only blocks fake bots shows here too.
If it fails
On Cloudflare, open Security, then Bots, and AI Crawl Control, and allow the crawlers you want. On other hosts or security plugins (Wordfence, Sucuri, ModSecurity), add allow rules for these user agents, ideally verified by IP range.

Can they read the page?

Most AI crawlers read the raw HTML only, so the content and the signals about it must be there before JavaScript runs.

Content is in the HTML Weight 3
What it checks
Counts the words in the HTML the server sends, before any JavaScript runs. Most AI crawlers do not run JavaScript.
Pass criteria
Pass: 150 words or more. Needs attention: fewer than 150 words. Problem: fewer than 120 words and the page is an empty JavaScript app shell (a bare root, app or __next element).
If it fails
Render content on the server: server-side rendering or static generation in Next.js, Nuxt, SvelteKit or Astro, or prerendering for single-page apps. In WordPress, avoid widgets that load their text with AJAX after the page loads.
Title, description and H1 Weight 1
What it checks
Checks the title tag, meta description and H1 heading.
Pass criteria
Pass: a title of 30 to 65 characters, a meta description of 70 to 160 characters, and exactly one H1. Needs attention: any of them missing, outside those ranges, or more than one H1.
If it fails
Write a title that names the topic and your brand, a one or two sentence description of what the page offers, and one H1 that matches the title's promise.
Structured data Weight 2
What it checks
Parses every JSON-LD block and lists the schema.org types and sameAs profile links it finds.
Pass criteria
Pass: JSON-LD that parses, with an Organization or Person node and sameAs links. Needs attention: no JSON-LD, a block that fails to parse, or no sameAs links.
If it fails
Add an Organization node (Person for a personal brand) with name, url, logo and sameAs links to your official profiles, plus a type for the page itself such as Article, Product, Service or FAQPage. Test it in the Schema Markup Validator.
Language is declared Weight 1
What it checks
Reads the lang attribute on the html element.
Pass criteria
Pass: a language is declared, for example en-GB.
If it fails
Add lang to the html element. In WordPress, set the site language under Settings, General.

Can they find the rest of the site?

Sitemaps and canonicals help crawlers discover your other pages and pick the right version of each.

XML sitemap Weight 2
What it checks
Looks for a Sitemap line in robots.txt, then for /sitemap.xml and /sitemap_index.xml.
Pass criteria
Pass: a sitemap is listed or found. Needs attention: none found.
If it fails
Generate a sitemap (Yoast, Rank Math or your framework's sitemap module), add a Sitemap line to robots.txt, and submit it in Google Search Console and Bing Webmaster Tools.
Canonical URL Weight 1
What it checks
Reads the canonical link tag.
Pass criteria
Pass: a canonical URL is declared. Needs attention: none, so duplicate versions of the page can split signals.
If it fails
Add a self-referencing canonical link tag to every page. Most SEO plugins do this by default.
llms.txt Not scored
What it checks
Looks for /llms.txt, a plain-text summary of the site for AI tools.
Pass criteria
Information only, not scored. llms.txt is a proposal, not a standard, and no major AI search provider has confirmed using it for ranking or citations.
If it fails
Optional. If you add one, keep it short, factual and up to date, and link your most important pages.

Can a browser agent use it?

Agents that browse for people read field labels and button names to fill in forms and click the right thing.

Form fields are labelled Weight 2
What it checks
Checks that every visible form field has a name a browser agent can read. Agents such as ChatGPT agent and Claude in Chrome use labels to know what to type where.
Pass criteria
Pass: every field has a label linked with for and id, a wrapping label, or an aria-label. Needs attention: a field relies on placeholder text only. Problem: a field has no label at all.
If it fails
Give every field a visible label element linked with for and id. Where a visible label does not fit the design, add an aria-label.
Buttons and links have names Weight 1
What it checks
Checks that every button and link has a readable name.
Pass criteria
Pass: every button and link has visible text, an aria-label, or an image with alt text. Needs attention: one or more have none, which is common with icon-only buttons.
If it fails
Add visible text or an aria-label to icon-only buttons and links, for example aria-label="Open menu".
Real links, not script-only Weight 1
What it checks
Looks for links that only work through JavaScript.
Pass criteria
Pass: no links use javascript: URLs or onclick without an href. Needs attention: one or more do.
If it fails
Use a normal link with a real URL for navigation, and keep scripts for enhancement.

Basics

Security and speed apply to every visitor, human or not.

Rate limiting under a burst Weight 1
What it checks
Sends five near-simultaneous requests for the same page from one IP address and compares the responses.
Pass criteria
Pass: all five answered the same way. Needs attention: later requests were throttled, rate limited (HTTP 429) or challenged while the first succeeded, which is what an indexing crawler runs into when it fetches several of your pages at once.
If it fails
Raise or disable the rate limit for verified crawlers in your CDN or security plugin. In Cloudflare: Security, then WAF, then Rate limiting rules, and skip the rule for Verified Bots. Crawlers that get throttled slow their crawl rate and index fewer of your pages.
HTTPS Weight 1
What it checks
Checks the final URL after redirects.
Pass criteria
Pass: served over HTTPS. Problem: plain HTTP.
If it fails
Install a TLS certificate (most hosts offer one free) and redirect every HTTP URL to HTTPS.
Response time and 499 risk Weight 1
What it checks
Times how long the full HTML takes to download from our server, so it includes the network distance to your server.
Pass criteria
Best case: under 0.5 seconds. Pass: under 1.5 seconds. Needs attention: 1.5 to 3.5 seconds. Problem: over 3.5 seconds. For reference, Google Lighthouse flags server response times over 600 ms. AI providers do not publish how long their live-fetch bots wait.
If it fails
Turn on full-page caching (LiteSpeed Cache, WP Rocket or your host's cache), serve through a CDN, and look for slow plugins, uncached database queries or an underpowered server. Check Time to First Byte in PageSpeed Insights.

Frequently asked questions

No. GPTBot collects training data. ChatGPT search uses OAI-SearchBot, and ChatGPT-User fetches pages when someone asks about them. You can block training and still appear in ChatGPT answers, as long as those two are allowed. The trade-off is that future models may know less about your brand, which matters if you want assistants to recommend you by name.

The checker sends requests with crawler user agents from my server, not from the bots’ own IP addresses. Some firewalls, including Cloudflare’s verified-bot rules, block fakes and let real crawlers through. Treat this result as a prompt to check your CDN and security plugin settings, not as proof of a block.

Googlebot renders JavaScript. Most AI crawlers, including those from OpenAI, Anthropic and Perplexity, fetch the raw HTML and do not run scripts. If your main copy loads after the page renders, those crawlers see a near-empty page. Server-side rendering or static generation fixes this.

There is no evidence it does. llms.txt is a proposal, and no major AI search provider has confirmed using it for ranking or citations. Google has said it does not. It can still help AI agents that read it describe your business accurately, so it is cheap to add, but it should not be your priority.