Why your website might be invisible to AI crawlers
Your website might be invisible to AI, and you'd never know it.
When someone asks ChatGPT, Claude, or Gemini about your industry, your competitors show up. You don't. Not because your content is weak or your site is new, but because something technical is preventing AI systems from accessing your information in the first place.
We can put a number on part of it. Our quarterly AI Discovery File adoption crawl checks the robots.txt of roughly two thousand websites every three months. In the Q3 2026 crawl, 9.9% of successfully crawled sites blocked GPTBot by name, and 13.7% blocked at least one AI crawler. That is only the blocking you can see in a text file. It does not count the sites whose firewall, CDN, or bot-protection rules quietly reject AI crawlers before robots.txt is ever consulted.
The difference between a website that AI systems can cite and one they ignore often comes down to a handful of configuration settings. A robots.txt rule that blocks GPTBot. A firewall that treats ClaudeBot as a threat. A JavaScript framework that serves an empty document to anything that isn't a browser. A missing llms.txt file that would have told AI systems exactly who you are and what you do.
This checklist walks through every technical barrier we see when running AI visibility checks across hundreds of websites. Each item is something you can verify and fix today. Where we have measured data, we have included it rather than guessing.
The short version
- 9.9% of sites block GPTBot in
robots.txt, and 13.7% block at least one AI crawler (our Q3 2026 crawl of 1,744 sites). - 84.2% have no AI crawler policy at all. Most sites are not blocking deliberately. They simply have not decided.
- Blocking the training crawler is not the same as blocking the answer engine. Sites block
GPTBotroughly twice as often asChatGPT-User. - The blocks that hurt most are the ones you didn't choose: firewall rules, JavaScript-only rendering, and login walls.
How AI crawlers reach your site
Before working through the checklist, it helps to understand how AI crawlers behave differently from search engine crawlers.
Traditional search crawlers like Googlebot visit your pages to build a search index. They follow links, read HTML, execute JavaScript, respect cache headers, and send referral traffic back when users click results. The exchange is simple: you let the crawler in, and you get search visibility in return.
AI crawlers work differently. Systems like GPTBot (OpenAI), ClaudeBot (Anthropic), and PerplexityBot fetch content to train language models or to answer user queries directly. They usually read raw HTML without executing JavaScript. They look for specific files in your root directory. And the traffic ratio is dramatically skewed: where Google crawls roughly 5 times per referral it sends, Anthropic's crawl-to-referral ratio has been measured at over 38,000 to 1. AI crawlers sit inside a wider retrieval pipeline, and understanding that pipeline helps explain why a single blocked crawler can knock you out of citations entirely.
"If a human were doing a task... you might go to five websites. Your agent... will often go to a thousand times the number of sites. So it might go to 5,000 sites. And that's real traffic, and that's real load."
That line, "and that's real load," landed hard the first time I read it. We'd been thinking about AI visibility as a content problem: are your files in the right place, is the information accurate? But Prince is talking about something more visceral. Thousands of bots hammering your server for data they may never send a single visitor back for. When we started running AI visibility checks across client sites, we kept finding servers that were buckling under crawler traffic the site owners didn't even know existed. They were paying for hosting to serve human visitors, and half their bandwidth was going to machines. Cloudflare's 2026 threat report found that 94% of login attempts are now automated bots. That number puts the scale of non-human traffic into perspective.
Cloudflare estimates bot traffic will overtake human traffic by 2027. That's not a distant prediction. It's next year. The question isn't whether to engage with AI crawlers. It's whether you're engaging on your terms, or being excluded by default.
Four kinds of AI crawler, and why the difference matters
Treating "AI crawlers" as one category is the single most expensive mistake in this whole topic. There are four distinct jobs, and blocking one has nothing like the same consequence as blocking another:
| Type | What it does | Examples | What blocking it costs you |
|---|---|---|---|
| Bulk crawlCollects content at scale, usually for model training. | Downloads large numbers of pages on a schedule, unconnected to any individual user question. | GPTBot, CCBot, Bytespider, Meta-ExternalAgent |
Your content stays out of future training data. Little immediate effect on live answers. |
| Search indexBuilds the index an AI system searches when answering. | Indexes pages so the AI can find and cite them at answer time. | OAI-SearchBot, Claude-SearchBot, PerplexityBot |
You stop appearing as a cited source in AI answers. This is the expensive one. |
| Live user visitFetches your page because someone just asked about you. | Retrieves a single page in real time, on behalf of a specific person mid-conversation. | ChatGPT-User, Claude-User, Perplexity-User |
The AI cannot open your page for a user who is actively asking about you. |
| robots.txt switchA permission token, not a crawler that ever visits. | Nothing fetches under this name. It is a flag the vendor honours using a different crawler. | Google-Extended, Applebot-Extended |
Opts you out of that vendor's AI training or grounding, without affecting normal search. |
That last row catches almost everyone out. Google never sends a crawler identifying as Google-Extended. It crawls with Googlebot and honours the Google-Extended token as a separate permission setting. Applebot-Extended works the same way. You cannot test for these two by watching your logs, because nothing will ever arrive under those names. They only exist as instructions.
Which websites are blocking GPTBot?
Most writing on this topic recycles the same two or three third-party statistics. We run our own crawl, so here is our own data.
Every quarter, the ADF adoption crawler fetches robots.txt from roughly two thousand websites and records which AI user agents are named, and whether they are allowed or disallowed. The Q3 2026 crawl completed on 1 July 2026 and successfully read 1,744 sites. Here is how often each AI crawler was blocked by name.
The full figures, in case you want to quote or check them:
| Crawler | Operator | Type | Sites blocking | % blocked |
|---|---|---|---|---|
CCBot | Common Crawl | Bulk crawl | 186 | 10.7% |
ClaudeBot | Anthropic | Bulk crawl | 174 | 10.0% |
GPTBot | OpenAI | Bulk crawl | 173 | 9.9% |
Bytespider | ByteDance | Bulk crawl | 167 | 9.6% |
Meta-ExternalAgent | Meta | Bulk crawl | 151 | 8.7% |
Applebot-Extended | Apple | robots.txt switch | 146 | 8.4% |
PerplexityBot | Perplexity | Search index | 134 | 7.7% |
Google-Extended | robots.txt switch | 125 | 7.2% | |
Diffbot | Diffbot | Bulk crawl | 114 | 6.5% |
cohere-ai | Cohere | Bulk crawl | 108 | 6.2% |
Amazonbot | Amazon | Search index | 105 | 6.0% |
OAI-SearchBot | OpenAI | Search index | 100 | 5.7% |
ChatGPT-User | OpenAI | Live user visit | 83 | 4.8% |
Claude-User | Anthropic | Live user visit | 75 | 4.3% |
FacebookBot | Meta | Bulk crawl | 75 | 4.3% |
The headline number most people expect is the one at the top: roughly one site in ten blocks the best-known AI crawlers. But the more interesting number is the one that never gets quoted. 84.2% of the sites we crawled had no AI crawler policy at all. No rule allowing them, no rule blocking them, nothing. Only 1.8% explicitly named AI crawlers in order to allow them.
That matters because it reframes the question. The web is not split between publishers who have thoughtfully opted out and publishers who have thoughtfully opted in. The overwhelming majority have simply never made the decision, and are getting whatever their CMS, their security plugin, and their CDN default happens to give them.
The pattern nobody mentions: sites block the trainer, not the visitor
Sort our data by crawler type and something consistent appears. Both OpenAI and Anthropic run a bulk crawler and a separate live-visit crawler. In both cases, the bulk crawler is blocked around twice as often.
Read one way, that is a coherent policy emerging across the web: don't take my content to train your model, but do come and fetch my page when a customer asks about me. It keeps the commercial upside of AI search while withholding the free training data. If that is what site owners intend, it is a defensible position and arguably the right one for most businesses.
Here is the honest caveat. Our data cannot tell the difference between a deliberate policy and a copied blocklist. Plenty of those rules will have arrived through a security plugin, a template, or a widely shared Gist that happens to name the famous training crawlers and omit the newer live-visit ones. The pattern in the chart is real. The intention behind it is inferred, and we can't prove it from robots.txt alone.
What we can say is that the outcome is better than a blanket block either way. If you take one thing from this section: check whether your rules distinguish between the two, because the accidental version of this policy works out considerably better than the accidental version of Disallow: /.
Reflex blocking has stalled. Deliberate allowing is rising.
We now have three quarters of comparable data, which is enough to see a direction of travel.
The share of sites blocking at least one AI crawler went 11.6%, then 13.5%, then 13.7%. The jump happened between Q1 and Q2. Between Q2 and Q3 it moved by two tenths of a percentage point, which is inside the noise you would expect from a partially different sample of sites.
Meanwhile the share explicitly allowing AI crawlers went 0.8%, 1.2%, 1.8%. Small numbers, but it more than doubled while blocking stood still. Sites that write an Allow rule naming an AI user agent are not doing it by accident. That is someone making a decision.
Two quarters is not a trend, and we will say so plainly when Q4 lands if it reverses. But the reading that best fits the data right now is that the reflexive blocking wave of early 2026 has run its course, and a slower, more deliberate sorting has started.
Does blocking AI crawlers hurt your citations?
This is the question people actually want answered, so here is a direct answer before the detail: yes, but only for some crawlers, and the ones most people block are not the expensive ones.
Work through it by crawler type, using the four categories from earlier.
- Block a search-index crawler (
OAI-SearchBot,Claude-SearchBot,PerplexityBot) and you are removed from the index those systems search when composing an answer. You cannot be cited from an index you are not in. This is the block that costs you citations. - Block a live-visit crawler (
ChatGPT-User,Claude-User) and the AI cannot open your page for a specific person who is mid-conversation and asking about you. That is close to the highest-intent traffic on the internet, and you are refusing it at the door. - Block a bulk training crawler (
GPTBot,CCBot,Bytespider) and your content stays out of future model training. Your ability to be retrieved and cited live is largely unaffected, because that runs through the other two crawler types. - Set a robots.txt switch (
Google-Extended,Applebot-Extended) and you opt out of that vendor's AI training and grounding, with no effect on normal search indexing.
The trap is that the blanket rule catches all four at once:
# This blocks every crawler, including all four AI categories,
# and every search engine as well.
User-agent: *
Disallow: /
We have seen this in the wild on a business that had been trading online since the 1990s and could not work out why AI systems never mentioned it. The full story is in our write-up of a client blocking every crawler while submitting sitemaps to Google Search Console, which is a stranger combination than it sounds.
Now the limitation, because this deserves an honest answer rather than a confident one. We cannot show you a controlled study proving that unblocking a crawler causes citations to appear. Nobody can, at present. AI systems do not publish retrieval logs, citation behaviour varies between models and between weeks, and no publisher is going to run a randomised trial on their own visibility. What exists is the mechanism (you cannot be retrieved from an index you are excluded from) plus case-level evidence.
Our own case-level evidence: a removals company at full conformance was independently scored 92/100 by ChatGPT, and a three-week-old locksmith site reached the top of AI search results in its area. Both had every AI crawler allowed and complete AI Discovery Files. That is consistent with the mechanism. It is not proof of causation, and we are not going to dress it up as such.
Check 1: robots.txt and crawler access
This is where most unintentional blocking happens. Your robots.txt file and server-level rules determine which crawlers can reach your content.
Review your robots.txt for AI-specific rules
Open https://yourdomain.com/robots.txt in your browser. Look for rules targeting these user agents:
GPTBot,OAI-SearchBot,ChatGPT-User(OpenAI)ClaudeBot,Claude-SearchBot,Claude-User(Anthropic)PerplexityBot,Perplexity-User(Perplexity)Google-Extended(Gemini training and grounding switch)Applebot,Applebot-Extended(Apple Intelligence)CCBot(Common Crawl, used by many AI models)Meta-ExternalAgent,Bytespider(Meta AI, ByteDance)
If you see Disallow: / for any of these, your site is invisible to that AI system. This is a deliberate choice for some publishers, but many businesses have these rules without realising it, sometimes added by a CMS plugin or a security template. The 365i Robots.txt Checker can parse your file and test specific URL paths against your crawl rules to spot exactly what's blocked.
Paul Calvano's HTTP Archive analysis found that almost 21% of the top 1,000 websites now include rules for GPTBot, and that number grew from near zero to over 500,000 sites in under two years. Note that his 21% figure covers the top 1,000 sites, where publishers with licensing deals and legal teams are heavily over-represented. Our 9.9% covers a broader sample of ordinary business websites. Both numbers are right; they are measuring different populations, which is worth remembering whenever you see a single "X% of the web blocks AI" headline.
"The appearance of AI bot user agents in so many websites over a short period reflects site owners' sentiment toward content scraping."
Calvano's data shows GPTBot going from zero robots.txt appearances to over 500,000 in just two years. That's not a measured response; it's a flinch. And I get it. When we first saw how aggressively some AI crawlers were hitting sites, the instinct to block everything felt rational. But sitting with it longer, and after watching businesses wonder why ChatGPT never mentions them, the cost of that reflex became obvious. They blocked the scraping, but they also blocked the citations, the recommendations, and the visibility. The smarter move, the one we keep coming back to, is to let the retrieval crawlers in and use AI Discovery Files to control what they learn. Give them the information on your terms rather than slamming the door.
Check for wildcard blocks
A common mistake is using a broad wildcard rule that catches more than intended:
# This blocks ALL bots, including AI crawlers
User-agent: *
Disallow: /
If your robots.txt starts with this, every AI crawler is locked out. You need explicit Allow rules for the crawlers you want, or a more targeted approach that blocks only specific paths.
Check your CDN and WAF rules
This is the most common source of unintentional blocking, and the one our robots.txt crawl cannot see. Content delivery networks and web application firewalls often classify AI crawlers as suspicious traffic. Cloudflare, Sucuri, Wordfence, and similar security tools may challenge or block requests from AI user agents by default. Cloudflare now blocks AI crawlers by default on new domains, which means a site can be blocking AI without a single line in its robots.txt.
Check your CDN dashboard for:
- Bot management rules that block "unrecognised" user agents
- Rate limiting thresholds that AI crawlers might exceed
- JavaScript challenge pages that block non-browser clients
- Country-based blocking that might exclude AI crawler IP ranges
If you're on managed hosting, your hosting provider should be able to whitelist known AI crawler user agents while keeping malicious bot protection active.
What a clean result looks like
Reading your own robots.txt tells you what you declared. It does not tell you what your server actually does when a request arrives claiming to be GPTBot. Those are different things, and the gap between them is where most silent blocking lives.
The free 365i AI Crawler Checker sends a live request as each of 14 AI crawlers and reports the response. Here is the result for this site, which is what a clean pass looks like:
Bot-by-bot results 14 of 14 allowed
-
Allowed
GPTBot OpenAI AI search indexing
Builds the index behind ChatGPT search and model training
robots.txt Allow: / Live test HTTP 200
-
Allowed
OAI-SearchBot OpenAI AI search indexing
Powers ChatGPT search results and link citations
robots.txt Allow: / Live test HTTP 200
-
Allowed
ChatGPT-User OpenAI Live user visits
Visits your pages live when a ChatGPT user asks about you
robots.txt Allow: / Live test HTTP 200
-
Allowed
ClaudeBot Anthropic AI search indexing
Crawls for Claude, including search and model improvement
robots.txt Allow: / Live test HTTP 200
-
Allowed
Claude-SearchBot Anthropic AI search indexing
Indexes pages to improve Claude search results and citations
robots.txt Allow: / Live test HTTP 200
-
Allowed
Claude-User Anthropic Live user visits
Visits your pages live when a Claude user asks about you
robots.txt Allow: / Live test HTTP 200
-
Allowed
PerplexityBot Perplexity AI search indexing
Builds the Perplexity answer-engine index and citations
robots.txt Allow: / Live test HTTP 200
-
Allowed
Perplexity-User Perplexity Live user visits
Visits your pages live when a Perplexity user asks about you
robots.txt Allow: / Live test HTTP 200
-
Allowed
Meta-ExternalAgent Meta Model training
Crawls for Meta AI training and product indexing
robots.txt Allow: / Live test HTTP 200
-
Allowed
Applebot Apple AI search indexing
Powers Siri, Spotlight and Apple Intelligence answers
robots.txt Allow: / Live test HTTP 200
-
Allowed
Bytespider ByteDance (TikTok) Model training
Collects training data for ByteDance AI models
robots.txt Allow: / Live test HTTP 200
-
Allowed
CCBot Common Crawl Model training
Open web dataset used to train many AI models
robots.txt Allow: / Live test HTTP 200
-
Allowed
Google-Extended Google robots.txt control
robots.txt switch for Gemini training and grounding (Google never crawls as Google-Extended. It crawls with Googlebot and honours this token in robots.txt.)
robots.txt Allow: / Live test Not crawlable by name
-
Allowed
Applebot-Extended Apple robots.txt control
robots.txt switch for Apple AI model training (Apple never crawls as Applebot-Extended. It crawls with Applebot and honours this token in robots.txt.)
robots.txt Allow: / Live test Not crawlable by name
How to read the live test: these requests identify as each bot but come from the checker's servers, not the AI companies' own networks. A rejection means your site or host filters traffic claiming to be that bot. Some security layers only reject impostors and let the verified bot through, which is why the message below asks your host to confirm either way.
Two rows in that grid are worth pausing on. Google-Extended and Applebot-Extended report "Not crawlable by name" rather than a status code, because no crawler ever arrives under those names. You cannot test them with a live request, only declare them in robots.txt. Any tool that claims to have successfully fetched your site as Google-Extended is reporting something that did not happen.
What to do when the block is at server level
Here is the situation this article was originally missing an answer for. You run the check, two crawlers come back rejected, and the rejection is nothing to do with robots.txt. It is a firewall or CDN rule inside infrastructure you may have no access to. On shared or managed hosting, you often cannot fix this yourself.
The useful move is to give your host something specific and technically precise, rather than asking whether they "block AI". The checker generates a message for exactly this, and it is worth reading even if you never run the tool, because it shows the shape of the request that gets results:
Send this to your hosting company
Generated automatically when crawlers are rejected at server level. That is usually a host, WAF
or CDN rule, not something you can fix in robots.txt. Names and dates below are
illustrative; the tool fills in your own domain, the crawlers that actually failed, and their
status codes.
Subject: Please confirm AI search crawlers can reach www.example.com
Hi,
I run www.example.com, which is hosted with you. I tested the site on 25 July 2026 using the free AI Crawler Checker at https://www.365i.co.uk/tools/ai-bot-checker/ and requests identifying as the following AI crawlers were rejected before reaching my site:
- Bytespider (ByteDance (TikTok)) - HTTP 403
- CCBot (Common Crawl) - HTTP 403
A normal browser request to the same page succeeded, so the rejection is specific to these bots.
These crawlers power AI search results in ChatGPT, Claude, Perplexity and other AI assistants. If they cannot reach the site, my business cannot appear in AI search answers.
Please could you:
- Confirm whether the genuine crawlers (coming from the providers' published IP ranges) are allowed to crawl my site.
- If they are blocked at the server, WAF or CDN level, unblock them or tell me how I can opt out of the block myself.
- If your security only filters unverified traffic impersonating these bots while the genuine crawlers are allowed through, confirm that, so I know AI search engines can see the site.
Test details: https://www.365i.co.uk/tools/ai-bot-checker/
Date tested: 25 July 2026Thanks,
The third numbered request is the one that matters most, and it is the reason this message is phrased as a question rather than a complaint. A lot of bot protection is designed to reject unverified traffic claiming to be GPTBot while allowing the genuine crawler through from OpenAI's published IP ranges. That is correct behaviour, not a misconfiguration, and it produces exactly the same failed result in any user-agent-based test, including ours. Asking your host to confirm which of the two is happening saves everyone an argument.
Check 2: server and hosting configuration
Even when crawlers aren't blocked, poor server configuration can prevent them from reliably accessing your content.
Response times
AI crawlers are less patient than you might expect. If your server takes more than a few seconds to respond, crawlers move on. Google's own crawler ignores content that takes too long to fetch. AI crawlers behave similarly.
Test your server response time (not page load time, which includes client-side rendering). Your Time to First Byte (TTFB) should be under 500ms consistently. If it's regularly above 1 second, your hosting infrastructure needs attention.
For sites on shared hosting where noisy-neighbour effects cause intermittent slowdowns, moving to a dedicated WordPress hosting environment or managed cloud server with isolated resources can make a measurable difference to crawler reliability.
SSL/TLS configuration
AI crawlers require valid SSL certificates. Expired, self-signed, or misconfigured certificates will cause connection failures that happen silently. Your site looks fine in a browser (which displays a warning you can click past), but crawlers simply fail and move on.
Verify that your certificate is valid, covers all subdomains you use, and includes a proper certificate chain. Free certificates from Let's Encrypt work perfectly well; the important thing is that they're current and correctly installed. The 365i HTTPS Inspector scans for mixed content, insecure resources, and SSL/TLS configuration issues that might not be visible in a browser.
HTTP response codes
Your AI Discovery Files and key pages must return HTTP 200. This isn't theoretical: when we logged real AI crawler hits on a brand-new site, all 15 requests came back 200, which is exactly what you want to see. Common issues that break it:
- 301/302 redirect chains: A file at
/llms.txtthat redirects to/en/llms.txtthat redirects tohttps://www.example.com/en/llms.txt. Each hop increases the chance a crawler gives up. - 403 Forbidden: Server permissions blocking access to
.txtor.jsonfiles in your root directory. - 404 Not Found: The most basic failure. Files that simply don't exist yet.
- 503 Service Unavailable: Server under load or in maintenance mode when a crawler visits.
Content-Type headers
Your llms.txt should serve as text/plain. Your ai.json and identity.json should serve as application/json. If your server returns the wrong MIME type, parsers may reject the content even though it's valid.
Most web servers handle this correctly by default based on file extensions, but CMS platforms and custom routing can override defaults. You can test with curl -I https://yourdomain.com/llms.txt in your terminal, or use the 365i HTTP Header Inspector to check response headers, redirect chains, and status codes without leaving your browser.
Check 3: JavaScript and client-side rendering
This is the blocker people find hardest to believe, because the site looks perfect in a browser. Your pages can be fully open in robots.txt, fast, correctly certificated, and still deliver a blank document to every AI crawler that visits.
If your website relies on client-side JavaScript to render core content (React, Vue, or Angular single-page applications), AI crawlers will see an almost empty page. Googlebot executes JavaScript. GPTBot, ClaudeBot, and PerplexityBot typically don't. They read the raw HTML your server sends and work with whatever is in it.
That asymmetry is exactly why this goes unnoticed for so long. The site ranks in Google, so nobody suspects a rendering problem. Meanwhile every AI system sees a shell.
The two-minute test
You don't need a tool for this one. Fetch your own page the way a crawler does, with JavaScript disabled by definition, and look at what comes back:
# Fetch the raw HTML exactly as a non-rendering crawler receives it
curl -sL -A "GPTBot" https://yourdomain.com/ -o crawler-view.html
# How much text is actually in it?
wc -c crawler-view.html
# Is your main headline present in the source?
grep -o "Your Headline Text" crawler-view.html
If grep finds nothing, that text does not exist for an AI crawler. To read the result without counting bytes: open crawler-view.html in a browser. What you see is roughly what an AI system gets. If the page is empty, or shows only a navigation bar and a footer, you have found your problem.
A quicker version if you just want a signal: compare the byte count of the raw fetch against the rendered page size in your browser's developer tools. A content-rich page that returns 4KB of HTML is almost certainly rendering client-side.
How to fix it
Server-side rendering (SSR) or static site generation (SSG) ensures crawlers receive complete HTML. Every major framework supports one or both: Next.js and Remix for React, Nuxt for Vue, Angular Universal for Angular, and static generators like Astro, Eleventy or Hugo if the content doesn't need to be dynamic at all.
If a full rendering change isn't realistic in the short term, prerendering the most important pages for non-browser user agents is a legitimate interim step, and publishing AI Discovery Files gives AI systems a machine-readable description of your business that doesn't depend on rendering your pages at all. That is a mitigation rather than a fix, but it means an AI system knows who you are while you work on the underlying issue.
A category of commercial tools has appeared to detect rendering and crawler-access problems at scale, aimed mostly at large enterprise sites. For a single site, the curl test above tells you the same thing in about two minutes and costs nothing.
Check 4: login walls, paywalls and gated content
AI crawlers have no account, no password, and no session cookie. They get exactly what an anonymous visitor gets. If that's a login form, then that's your content as far as every AI system is concerned.
This one bites documentation sites hardest. Technical documentation is some of the most useful, most citable content on the web, and a great deal of it sits behind a login for reasons that made sense when the audience was human customers. The result is that AI systems answering questions about your product are working from your marketing pages and third-party blog posts, while your accurate, detailed, carefully maintained documentation is invisible to them.
The same applies to:
- Hard paywalls that serve nothing to anonymous visitors
- Cookie or consent walls that block content until a banner is accepted, since a crawler cannot click a button
- Age or region gates implemented as an interstitial
- Email-gated resources, including whitepapers and pricing pages behind a form
- Members-only knowledge bases and customer portals
How to test it
Open the page in a private or incognito window, logged out. If you can't read it, neither can an AI crawler. That's the whole test. For a stricter check, fetch it with curl as in the previous section, which won't carry any cookies at all.
What to do about it
Opening everything up is rarely the right answer, and we're not going to pretend the trade-off doesn't exist. Gated content is gated for commercial reasons. But there is a middle path, and it's the one we recommend to clients:
- Publish a public subset. Getting-started guides, API references, and conceptual overviews are usually safe to open and are exactly what AI systems need in order to recommend you competently.
- Describe what's behind the wall. If the material must stay gated, publish a public page that explains what it covers. AI systems can then tell someone that the answer exists and where to find it, which is far better than not knowing you have it.
- Use AI Discovery Files as the machine-readable summary. This is precisely the job llms.txt and faq-ai.txt exist to do: state your services, scope, and answers in a form an AI can read without needing access to your gated pages.
- Move consent walls out of the way of content. A consent banner does not need to prevent the page HTML from being served. If yours does, that's a fixable implementation choice rather than a legal requirement.
Check 5: AI Discovery Files
Even with crawler access sorted and server configuration right, AI systems still need structured information about your business. That's what AI Discovery Files provide.
These machine-readable files sit in your website's root directory and tell AI systems who you are, what you do, and how to represent you accurately. Without them, AI systems guess based on whatever they can scrape from your pages. With them, you control the narrative.
Start with llms.txt
The llms.txt specification defines the most widely adopted AI Discovery File. It's a plain text Markdown file that gives AI systems a structured overview of your business: name, description, services, exclusions, and contact information.
If you haven't created one yet, our step-by-step guide walks through the process. If you're unsure whether your business needs one, the short answer is: almost certainly yes.
Add supporting files
The full AI Discovery Files specification defines ten files, each serving a different purpose. After llms.txt, the highest-priority files are:
identity.json(ADF-006): Structured business identity data in JSON formatai.txt(ADF-004): AI-specific permissions and preferencesbrand.txt(ADF-007): Official business name, naming rules, and terminology
You don't need all ten on day one. But the more files you publish, the harder it becomes for AI systems to misrepresent you. The quick start guide has a recommended implementation order.
Check for consistency
If your llms.txt says "Acme Web Solutions" but your identity.json says "Acme Digital Ltd" and your Schema.org markup says "ACME", AI systems can't confidently determine which name is correct. Inconsistency across files undermines the trust signal that AI Discovery Files are meant to provide.
Run your domain through the AI Visibility Checker to catch identity inconsistencies, missing files, and format errors in one scan.
Don't want to write these files yourself?
Two ways to skip the writing. On WordPress, the free AI Discovery Files plugin generates and serves all ten files from your dashboard, with nothing to upload. On any other platform, the AI Discovery Files Service Pack has all ten professionally written for your business, ready for you or your developer to upload to your site root.
Get the free pluginCheck 6: content structure and Schema.org
AI crawlers read your site differently from human visitors. They don't scroll, they don't watch videos, and as covered above, they usually don't run JavaScript. What they do is parse HTML and look for structured data.
Structured data and Schema.org
JSON-LD Schema.org markup gives AI systems machine-readable context about your content. At minimum, include Organization schema with your business name, URL, and contact information. Add Article schema to blog posts, LocalBusiness to location pages, and FAQPage to FAQ sections.
Schema.org and AI Discovery Files are complementary, not alternatives. Schema.org is embedded in your HTML and tied to individual pages. AI Discovery Files are standalone documents providing a complete business overview. You need both for full AI visibility.
Content locked inside images and canvas elements
Text inside an image is invisible to an AI crawler. So are the numbers inside a chart drawn on a <canvas> element, because canvas output is pixel data rather than text, even for crawlers that do render JavaScript.
This is a rule we hold ourselves to on this site. Every chart we publish, including the three in this article, is accompanied by the same figures in an HTML table. If a statistic only exists inside a picture, it may as well not be published as far as machine readers are concerned.
Meta robots and X-Robots-Tag
Check that your pages don't include <meta name="robots" content="noindex"> on pages you want AI systems to access. Also check for X-Robots-Tag HTTP headers that your server or CDN might add. These headers can block indexing globally without any visible indication in your HTML, which makes them one of the harder blockers to spot by eye.
Check 7: WordPress-specific blockers
WordPress powers over 40% of the web, and it introduces a few AI visibility issues specific to the platform.
Security plugins and bot blocking
Popular plugins like Wordfence, Sucuri Security, and iThemes Security include bot-blocking features that can reject AI crawlers. Check your security plugin settings for bot filtering rules and whitelist legitimate AI user agents.
Caching and robots.txt
Some WordPress caching plugins generate a robots.txt automatically or modify your existing one. Check that your live robots.txt (the one that crawlers actually see) matches what you expect. Plugins like Yoast SEO and Rank Math also manage robots.txt rules, and conflicting settings can create unexpected blocks.
AI Discovery Files on WordPress
The AI Discovery Files WordPress plugin generates and serves all ten AI Discovery Files directly from your dashboard. It handles the formatting, serves files at the correct URLs, and keeps everything consistent. If you're on WordPress, it's the simplest path to full AI visibility.
For WordPress sites that need more control over their hosting environment, bot management, and server configuration, 365i's WordPress hosting is built for exactly this kind of fine-grained control. And if you're migrating from a host that doesn't give you the access you need, free migrations make the switch painless.
How to tell if AI is actually crawling your site
Everything so far has been about removing barriers. This section answers the question underneath all of them: is my site being crawled by AI engines at all, and if so, which ones?
It is worth separating from the checks above. Those tell you whether an AI crawler could reach you. This tells you whether one actually did.
Read your server logs
The most direct evidence is your own access log. Every request records the user agent that made it, so AI crawler visits are already being recorded whether or not anyone has looked. On a Linux host:
# Every AI crawler hit in the current access log
grep -Ei "GPTBot|ClaudeBot|OAI-SearchBot|ChatGPT-User|Claude-User|PerplexityBot|Applebot|CCBot|Bytespider|meta-externalagent" access.log
# Count the hits per crawler, busiest first
grep -Eoi "GPTBot|ClaudeBot|OAI-SearchBot|ChatGPT-User|Claude-User|PerplexityBot|Applebot|CCBot|Bytespider|meta-externalagent" access.log \
| sort | uniq -c | sort -rn
# Which of your AI Discovery Files are being read, and by what
grep -Ei "llms.txt|ai.json|identity.json|brand.txt|faq-ai.txt" access.log | grep -Ei "bot|gpt|claude|perplexity"
If those commands return nothing at all, that is itself a finding. Either nothing is reaching you, or your host is not retaining logs in a place you can read.
Use the plugin's crawler log
On WordPress, the free AI Discovery Files plugin logs every AI crawler that requests one of your discovery files and presents it without needing shell access. This is the AI Crawlers tab on one of our own sites, mcneece.com, over a seven-day window:
Three things worth pulling out of that screenshot, because they are easy to miss.
First, the most active crawler is ChatGPT-User, not GPTBot. That is the live-visit crawler: it fetched those files because a person asked ChatGPT something. Bulk training crawls are not the main event on a small site. Real questions from real people are.
Second, eight different bots across six operators turned up on an ordinary business site inside a week. This is not a phenomenon reserved for large publishers.
Third, the "0 bots blocked by robots.txt" card is the entire subject of this article rendered as a single number. That is what you are aiming for.
We have written up a longer version of this evidence, covering 11 days of logs and a Meta crawler sweep, in do AI crawlers actually read AI Discovery Files?.
The honest limitation of log-based checking
Logs undercount. A growing share of AI agent traffic arrives with an ordinary browser user agent string, either because the agent drives a real browser engine or because it deliberately presents as one. Those requests are indistinguishable from human visits in your access log.
So treat a log count as a floor, not a total. If you can see AI crawlers, you definitely are not blocking them. If you cannot see any, the safest interpretation is that you have a problem worth investigating rather than proof that nothing came.
If you actually do want to block AI
This article argues that most businesses block AI crawlers by accident and lose something they wanted. That is not the same as claiming nobody should ever block one. Some publishers have thought about it carefully and reached the opposite conclusion, and they are not wrong.
Blocking is a reasonable choice when:
- Your content is the product. Paid research, subscription journalism, and licensed datasets lose value if they are absorbed into a model that answers the question for free.
- You have a licensing deal, or want one. Several large publishers now sell access to AI companies. Giving it away undermines the negotiation.
- Crawler load is a real cost. On serverless or pay-per-request hosting, unmanaged crawler traffic shows up on the bill.
- You have a legal or contractual duty covering how client material may be processed.
If any of those apply, block deliberately rather than bluntly. That means naming the crawlers you actually want to exclude instead of reaching for Disallow: /, which also removes you from Google. The most common deliberate configuration keeps the retrieval crawlers and refuses the bulk ones:
# Keep the crawlers that let AI systems find and cite you...
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
# ...and refuse the ones that collect content in bulk for training.
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Google-Extended
Disallow: /
Two caveats we would be doing you a disservice to leave out. robots.txt is a request, not an enforcement mechanism: well-behaved crawlers honour it, and badly behaved ones ignore it entirely. If you need enforcement, that is a firewall or WAF job, not a text file. And the robots-ai.txt specification offers finer-grained control by purpose rather than by user agent, which is a better fit when your policy is "training no, answering yes" rather than a list of names that goes stale every time a vendor ships a new crawler.
The point is not that blocking is wrong. It's that blocking should be a decision you made, not a default you inherited.
Test your AI visibility
Once you've worked through this checklist, verify everything in one place.
Scan your site for issues blocking AI crawlers
Two free scans cover different halves of the problem, and you want both.
The 365i AI Crawler Checker scans your site by sending a live request as each of 14 AI crawlers, so it catches server, WAF and CDN blocks that never appear in robots.txt. The AI Visibility Checker scans your domain across four dimensions: AI Discovery File presence, identity consistency, crawler access, and structural readiness. Each dimension is scored, and you get specific recommendations for anything that needs attention.
Both are free, take under a minute, and don't require an account. If you've made changes based on this checklist, run both to confirm everything is working.
Manual verification
For a quick manual check, test these URLs in your browser:
https://yourdomain.com/robots.txt(should return 200, check for AI crawler rules)https://yourdomain.com/llms.txt(should return 200, text/plain)https://yourdomain.com/ai.txt(should return 200, text/plain)https://yourdomain.com/identity.json(should return 200, application/json)
If any of these return a 404, 403, or redirect, you've found something to fix.
List your site
Once your AI Discovery Files are in place and validated, submit your site to the AI Discovery Files Directory. The directory is monitored by AI crawlers and helps accelerate the discovery of your files. You can also browse the directory to see how other organisations have implemented their AI visibility infrastructure.
Need expert help?
The AI Discovery Files Service Pack covers the file side of this checklist. 365i researches your business, writes and validates all ten AI Discovery Files, and delivers them ready to upload to your site root. One fixed price, no ongoing subscription. On WordPress, the free plugin handles the same job automatically.
View the Service PackFrequently asked questions
How do I check if my website is blocking AI crawlers?
Run your domain through the free 365i AI Crawler Checker, which sends a live request as each of 14 AI crawlers and reports which ones your site actually accepts. That catches server-level and firewall blocks that reading robots.txt alone will miss. Then run the AI Visibility Checker for the wider picture: AI Discovery Files, identity consistency, and structural readiness. To check by hand, open yourdomain.com/robots.txt and look for Disallow rules naming AI user agents.
Does blocking AI crawlers hurt my chances of being cited in AI answers?
It depends entirely on which crawler you block. Blocking a retrieval crawler such as OAI-SearchBot, Claude-SearchBot or PerplexityBot removes you from the index those systems search when answering a question, so you stop being cited. Blocking a bulk training crawler such as CCBot or Google-Extended keeps your content out of future model training but does not, by itself, remove you from live AI answers. The costly mistake is a blanket Disallow: / that catches every crawler at once.
How do I know if AI is actually crawling my site?
Check your server access logs for AI user agents. On a Linux host, grep -Ei "GPTBot|ClaudeBot|PerplexityBot" access.log will show you the hits. On WordPress, the free AI Discovery Files plugin logs AI crawler visits and shows which bots read which files, and we published 30 days of that log from a real site so you can see what a normal month looks like. Bear in mind that logs understate the total: some AI agents fetch pages using an ordinary browser user agent, so they are indistinguishable from human traffic.
Do AI crawlers execute JavaScript?
Mostly no. GPTBot, ClaudeBot and PerplexityBot read the raw HTML your server returns and do not run client-side JavaScript the way a browser does. Googlebot does render JavaScript, which is why a site can rank in Google Search and still be invisible to ChatGPT or Claude. If your pages build their content client-side with React, Vue or Angular, AI crawlers may see an almost empty document. Server-side rendering or static generation fixes it.
Is content behind a login wall visible to AI crawlers?
No. AI crawlers have no credentials and no session, so they receive whatever an anonymous visitor receives, which is usually the login page. Documentation sites behind a login are invisible to AI systems no matter how good the content is. If you want that content represented, publish a public subset, or at minimum publish a machine-readable summary of what the gated material covers so AI systems can describe and link to it accurately.
Which AI crawlers should I allow in robots.txt?
At minimum allow the retrieval crawlers that feed live AI answers: OAI-SearchBot and ChatGPT-User (ChatGPT), Claude-SearchBot and Claude-User (Claude), and PerplexityBot (Perplexity). Training crawlers such as GPTBot, CCBot and Google-Extended are a separate decision with different trade-offs. Our guide to appearing in AI search has a full table of what each crawler does and what blocking it costs.
What is the difference between blocking AI crawlers and blocking search engines?
Search engine crawlers like Googlebot index your pages for search results. AI crawlers like GPTBot and ClaudeBot retrieve content to train models or answer user queries directly. Blocking search engines removes you from search results. Blocking AI crawlers removes you from AI-generated answers, citations, and recommendations. They use separate user-agent strings, so you can control access independently.
Do AI Discovery Files replace robots.txt?
No. They serve different purposes. robots.txt controls which crawlers can access which parts of your site. AI Discovery Files tell AI systems who you are, what you do, and how to represent you. Think of robots.txt as the door policy and AI Discovery Files as the business card you hand over once someone is inside.
Does my hosting provider affect AI visibility?
Yes. Server response times, uptime, SSL configuration, and WAF/CDN settings all affect whether AI crawlers can reliably access your content. Aggressive rate limiting, bot-detection rules that misidentify AI crawlers as threats, and slow response times can all prevent AI systems from reading your site. Managed hosting with configurable bot rules gives you more control.
Will allowing AI crawlers increase my server costs?
On most hosting plans, no. Shared and managed hosting absorbs AI crawler traffic within your existing plan. Serverless or pay-per-request hosting is the exception: unmanaged AI crawler traffic can cause billing spikes on those platforms. The solution isn't to block crawlers entirely, but to manage access with proper rate limits and caching. AI Discovery Files also help by giving crawlers a concise summary, reducing the need to crawl your entire site.
Sources
- ADF Adoption Research, Q3 2026 - AI Visibility (first-party crawl data used throughout this article)
- ADF Adoption Crawl methodology - AI Visibility
- Cloudflare CEO: Bots could overtake human web usage by 2027 - Search Engine Land
- AI Bots and Robots.txt - Paul Calvano
- The crawl-to-click gap: Cloudflare data on AI bots, training, and referrals - Cloudflare Blog
- Content Independence Day: no AI crawl without compensation - Cloudflare Blog
- Google crawlers overview (Googlebot, Google-Extended) - Google Search Central
- OpenAI crawler documentation (GPTBot, OAI-SearchBot, ChatGPT-User) - OpenAI
- Anthropic crawler documentation (ClaudeBot) - Anthropic
- Online bot traffic will exceed human traffic by 2027 - TechCrunch