Free AI crawler diagnostic
AI crawler diagnostic six gates, one URL
Find out exactly why an AI crawler cannot read a page. Enter one URL and we request it as 18 crawlers (GPTBot, ClaudeBot, PerplexityBot, Googlebot and more), check the two AI opt-out tokens, then run six gates for each: robots.txt, page directives, HTTP status, redirects, firewall challenges and JavaScript.
- 20crawlers and tokens
- 6gates per crawler
- 3 to 8 sper run
Reachability
0/20
Fix in this order
Ranked by how many crawlers each issue blocks.
| Crawler | Verdict | robots.txt | Directive | Status | Redirects | Challenge | No-JS |
|---|
Requests come from our servers with each crawler's user-agent string, not from the crawler's own IP range. A site that filters by IP can treat the real crawler differently. The method is explained below.
The six gates, in the order a crawler meets them
- robots.txt. Only the group that names the crawler applies (RFC 9309), so a
User-agent: GPTBotgroup replaces the*group entirely for GPTBot. Within the group the longest matching path wins, query string included. If the page redirects to another host, that host's robots.txt is checked too. A robots.txt that returns 5xx or 429 blocks the whole site; a 404 means no restrictions. Guide: robots.txt disallow and allow. - Page directives.
noindexornonein<meta name="robots">, in a tag named for the bot, or in theX-Robots-Tagheader. These are indexing rules, so they block search engines and AI search crawlers. A user-triggered fetcher such as ChatGPT-User still reads the page, and training crawlers follow robots.txt instead, so for those two the directive is shown as a note. - HTTP status. The page is requested with the crawler's own user agent, and once more as a normal browser for comparison. A 403 or 429 that the browser never sees means the site treats that crawler differently.
- Redirect chain. Every hop is followed and counted. A loop is a hard block; a long chain wastes crawl budget. Read redirects and AI crawler access, and the case study of a loop that only proxies trigger.
- Challenge pages. Cloudflare, Akamai, Imperva, Sucuri, DataDome, PerimeterX, AWS WAF and DDoS-Guard challenge or block pages served instead of content. See is your WAF blocking AI crawlers?
- Content without JavaScript. Most AI fetchers do not run JavaScript, so a client-rendered page reads as empty. See JavaScript rendering and AI crawlers.
What each verdict means
- Reachable
- The crawler passed all six gates and received the page content.
- Blocked by robots.txt
- A rule in the crawler's group refuses the URL. The fix list names the line.
- Blocked by page directive
- A noindex or none directive applies to this crawler.
- Blocked by status
- The crawler got a refusal or an error that a normal browser did not.
- Firewall block: verify
- The site refused the request when it claimed to be the crawler but served a normal browser. Because our request does not come from the crawler's own network, this is either a real block or fake-bot protection that lets the real crawler through. Your CDN or WAF log tells you which.
- Interstitial
- A challenge or block page was served instead of content.
- Requires JS
- The HTML has too little text without scripts, so the crawler sees an almost empty page.
- Redirect loop
- The redirects never reach a final page.
- Unverifiable
- The site refused our normal browser too, so it is filtering our server. The result says nothing about the real crawler and is never counted as a block.
- Opt-out token: allowed
- Google-Extended and Applebot-Extended never fetch pages; robots.txt is the only gate that applies to them.
Reading the per-crawler table
Under the fix list, every crawler gets one row. Hover or focus a Pass or Fail cell to see the evidence behind it.
- Crawler
- The name, linked to its profile in our directory, with the operator underneath.
- Verdict
- The first gate that failed, or Reachable when none did.
- robots.txt
- Whether the crawler's group allows this exact URL.
- Directive
- Whether a noindex or none directive applies to this crawler.
- Status
- The HTTP status the crawler received, compared with a normal browser.
- Redirects
- Whether the redirect chain ends in a page, and how many hops it took.
- Challenge
- Whether a bot-protection page replaced the content.
- No-JS
- Whether the raw HTML holds enough text to read without scripts. "n/a" means an earlier gate already stopped the crawler.
Which crawlers are tested, and why these
Each run tests 20 names: 5 training crawlers, 5 AI search crawlers, 6 user-triggered fetchers, the 2 opt-out tokens and the 2 search engines that AI answer engines also depend on. They are the crawlers whose behaviour changes whether you appear in AI answers. For every one of the 265 bots in our database, use the whole-site AI crawler check.
| Purpose | Crawlers |
|---|---|
| Training | GPTBot, ClaudeBot, Meta-ExternalAgent, Bytespider, CCBot |
| AI search | OAI-SearchBot, Claude-SearchBot, PerplexityBot, Amazonbot, YouBot |
| User-triggered | ChatGPT-User, Claude-User, Perplexity-User, DuckAssistBot, MistralAI-User, cohere-ai |
| Opt-out tokens | Google-Extended, Applebot-Extended |
| Search engines | Googlebot, Bingbot |
Working through the fix list
Fixes are ranked by how many crawlers each issue blocks, so the top item usually unlocks the most. Change one thing at a time and rerun after each change, because one blocked gate can hide the next: a page that fails at the firewall may also have a robots.txt problem that only shows once the firewall lets the crawler through.
| Gate | Typical fix |
|---|---|
| robots.txt | Edit the crawler's group, or add an Allow for the path |
| Page directives | Remove noindex from pages you want read and cited |
| HTTP status | Adjust the firewall, rate limit or server error for that user agent |
| Redirects | Point every variant straight at the final URL |
| Challenge | Allow verified crawlers past bot protection on public pages |
| JavaScript | Render key content on the server |
Why our result can differ from the real crawler
Requests come from our servers using each crawler's user-agent string, not from the crawler's own IP range. A site that trusts verified IPs, or blocks unknown data-centre ranges, can treat the real crawler better or worse than our test. That is why a firewall refusal is labelled "verify" rather than "blocked", and why a site that refuses our browser too is "Unverifiable". Everything else, including robots.txt, directives, redirects and JavaScript dependence, is the same for the real crawler. How each gate is evaluated is on the methodology page.
Which pages to diagnose
- A page that is never cited although competitors are. Start here; the answer is often a gate you cannot see in a browser.
- One URL per template: homepage, a category or listing page, a product or service page and an article. Templates share their gates, so one URL tells you about thousands.
- Any URL behind a new CDN rule, security preset or redirect, the day it ships.
- Pages with tracking parameters, because a wildcard Disallow written for faceted URLs can catch them too.
Diagnostic questions
What does the AI crawler diagnostic tool check?
For each of 16 major AI crawlers plus Googlebot and Bingbot it runs six gates against one URL: robots.txt (with RFC 9309 group selection and longest-match rules), page directives such as noindex, the HTTP status returned to that user agent, the redirect chain, CDN or WAF challenge pages, and whether the content is present without JavaScript.
How is this different from the AI Crawler Check homepage?
The homepage scores your whole site against every bot in the database using robots.txt and site-level files. This diagnostic goes deeper on one page: it actually requests the page as each crawler and tells you which gate fails and how to fix it.
Can a page pass here and still be blocked?
Yes, in one case. We send each crawler's user-agent string, but from our servers, not from the crawler's own IP range. A site that blocks or allows by IP address can behave differently for the real crawler. Everything else, including robots.txt, directives, redirects and JavaScript dependence, is the same for the real crawler.
What does "Firewall block: verify" mean?
Your site refused the request when it claimed to be that crawler, but served a normal browser. There are two possible causes and they look identical from outside the crawler's network: your firewall blocks that crawler (a real block), or it blocks requests that claim to be that crawler from an IP address the operator does not own (fake-bot protection, which lets the real crawler through). Check your CDN or WAF bot log for the crawler to see which one applies. We never count it as reachable, and we never call it a confirmed block.
Is the AI crawler diagnostic free?
Yes. It needs no account and no API key, because every check is a plain HTTP request plus parsing.
How do I audit my website for AI crawler accessibility?
Run this diagnostic on your homepage and your most important pages, fix the issues in the order listed (the top issue blocks the most crawlers), then re-run it after each release.