How to Block AI Crawlers Without Blocking Search
If you want to stop AI companies crawling your site, block the crawler you mean—not every verified bot. Search crawlers, user-triggered fetchers, and model-training crawlers can use different identities and serve different purposes.
No method here can prevent someone from copying a public page. It controls compliant crawlers or requests you can identify.
Start with robots.txt
For a crawler that honours the Robots Exclusion Protocol, add its documented user agent to /robots.txt:
User-agent: {BOT-NAME}
Disallow: /
A 2024 list might have looked like this:
User-agent: GPTBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: PerplexityBot
Disallow: /
Do not copy that list blindly. Providers can add agents or separate training from search and user-requested visits. Check each provider’s current documentation, decide which access you want to refuse, and test the published file.
robots.txt is a request, not enforcement. A malicious crawler can ignore it.
Enforce the block at Cloudflare
Cloudflare introduced a verified-bot category for AI crawlers. In the WAF rule builder, the expression was:
(cf.verified_bot_category eq "AI Crawler")
Choose the rule action carefully and review the matched traffic after deployment. Product names, plan availability, and dashboard paths change, so use Cloudflare’s current bot-management documentation for the setup.
This is stronger than robots.txt because matching requests can be rejected. It also depends on Cloudflare correctly identifying the crawler; a fake or unknown agent may require rate limits or a different rule.
Be careful with IP blocks
The original version of this article linked to an OpenAI crawler and fetcher list and blocked one published network:
sudo ufw deny proto tcp from 23.98.142.176/28 to any port 80
sudo ufw deny proto tcp from 23.98.142.176/28 to any port 443
That range is historical, not a current recommendation. Provider networks can change, and a stale block may miss the crawler or reject unrelated traffic. Only use IP rules from current official ranges, automate updates if possible, and inspect their effect.
noai is only a preference
Some publishers add these non-standard tokens:
<meta name="robots" content="noai, noimageai">
There is no general requirement for crawlers to honour them. A WordPress plugin can add the tag, but installing a plugin does not turn the tokens into access control.
I would publish precise robots.txt rules first, enforce them at the edge when the crawler creates cost or ignores the request, and keep private content behind authentication. A polite meta tag can state your preference. It cannot guard the door.
Enjoyed reading this?
If you found this article helpful, consider supporting my writing. Every little bit helps keep this blog going.
Related articles
- Kā uzrakstīt labu specifikāciju mākslīgā intelekta aģentam
Uzzini, kā skaidri formulēt uzdevumus mākslīgā intelekta aģentam un izvairīties no tipiskām kļūdām.
- Vai mākslīgais intelekts atņems darbu digitālā mārketinga speciālistiem?
Vai mākslīgais intelekts apdraud digitālā mārketinga speciālistu darbu? Skats uz mākslīgā intelekta ietekmi, automatizāciju un nākotnes prasmēm.
- Kā gudrāk rakstīt promptus GPT-5.1
Izskaidroju vienkāršā valodā, kā labāk runāt ar GPT-5.1, lietot none režīmu un veidot uzticamus aģentus.