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.
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
Does blocking GPTBot stop ChatGPT from citing my site?
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.
Why does the checker say my firewall blocks AI bots when they can crawl my site?
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.
Do AI crawlers run JavaScript?
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.
Does llms.txt improve AI search visibility?
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.
