AI crawler comparison
One crawls the open web for training; the other fetches a single page because a person asked ChatGPT to look at it.
Short answer
They are not interchangeable. GPTBot handles AI model training, ChatGPT-User handles AI search and live answers. Blocking one has no effect on the other, so a robots.txt rule aimed at the wrong agent produces exactly the outcome you were trying to avoid.
| GPTBot | ChatGPT-User | |
|---|---|---|
| Operator | OpenAI | OpenAI |
| Purpose | AI model training | AI search & live answers |
| robots.txt | Respects robots.txt | Respects robots.txt |
| Published IP ranges | Yes — verifiable | Yes — verifiable |
| Official docs | Yes | Yes |
| Blocking costs you | No traffic — training only | AI-answer citations |
GPTBot is OpenAI's web crawler for gathering training data. Content it collects may be used to improve future GPT models. It is OpenAI's broadest crawler, and the one most site owners mean when they talk about "blocking ChatGPT" — though blocking it does not remove you from ChatGPT's live search answers, which use OAI-SearchBot instead.
Full profile, with every robots.txt, nginx, Apache and Cloudflare rule: GPTBot.
ChatGPT-User is not a crawler in the traditional sense: it fetches a specific page only when a ChatGPT user asks about it or when a GPT action calls out to the web. Traffic from it means real people are reaching your content through ChatGPT conversations.
Full profile, with every robots.txt, nginx, Apache and Cloudflare rule: ChatGPT-User.
User-agent: GPTBot Disallow: / User-agent: ChatGPT-User Disallow: /
The split most sites want when the two agents do different jobs: opt out of one without giving up the other.
User-agent: GPTBot Disallow: / User-agent: ChatGPT-User Allow: /
GPTBot is OpenAI's AI model training agent — Crawls content to train OpenAI's models. ChatGPT-User is OpenAI's AI search and live answers agent — Fetches pages a user asks ChatGPT to browse in real time. They are separate user agents with separate robots.txt rules.
No. robots.txt matches on the user-agent token, so a group naming GPTBot applies only to GPTBot. ChatGPT-User reads the group that names it, or the wildcard group if none does. To stop both you need a rule for each — or a wildcard rule, which would also affect every other crawler that reads it.
It depends which outcome you want. Blocking GPTBot opts you out of OpenAI's model training and costs you no traffic today, because training crawlers send no visitors. Blocking ChatGPT-User removes you from the answers OpenAI's assistant shows its users. The common choice is to block training agents and allow search agents, so your content stays citable without feeding model training.
GPTBot: OpenAI documents GPTBot's IP ranges and states it honors robots.txt disallow rules. ChatGPT-User: OpenAI states ChatGPT-User honors robots.txt, though as a user-triggered fetcher it visits single pages rather than crawling.
Yes — they send different user-agent strings, so grep for each token separately: grep -i "GPTBot" and grep -i "ChatGPT-User". Be aware that a user-agent header is self-declared and anything can send either string. For a check that cannot be spoofed, match the request IP against the published ranges: GPTBot at https://openai.com/gptbot.json, ChatGPT-User at https://openai.com/chatgpt-user.json.
Part of our directory of every known AI crawler. Last verified: 2026-09-13.