All Articles
    Technical
    Published July 20, 20268 min read

    GPTBot: What It Is, How to Block It, and How to Verify It

    GPTBot is one of three OpenAI agents, and blocking the wrong one removes you from ChatGPT search while doing nothing about training. The exact user agents, robots.txt rules and verification method.

    Matiss Katanenko

    Matiss Katanenko

    Co-founder, Honeyb

    GPTBot: What It Is, How to Block It, and How to Verify It

    GPTBot is OpenAI's web crawler for collecting content used to train its foundation models. It is one of three separate OpenAI agents, and it is not the one that powers ChatGPT's search results. Blocking GPTBot in robots.txt opts your content out of model training, but it does not remove you from ChatGPT answers that retrieve pages live, because that retrieval runs under OAI-SearchBot and ChatGPT-User.

    That distinction is the whole reason this page exists. The most common configuration error we see is a site blocking every OpenAI user agent in one line, which quietly removes it from ChatGPT search answers while the operator believes they have only opted out of training.

    The three OpenAI agents, and what each one does

    All three strings below are taken from OpenAI's crawler documentation at developers.openai.com/api/docs/bots, checked 20 July 2026.

    AgentToken for robots.txtWhat it doesBlocking it means
    GPTBot`GPTBot`Crawls pages to train and improve OpenAI's foundation modelsYour content is not used for training
    OAI-SearchBot`OAI-SearchBot`Indexes pages for ChatGPT's search featureYou are not shown in ChatGPT search answers
    ChatGPT-User`ChatGPT-User`Fetches a specific page when a user or a custom GPT asks for itChatGPT cannot open your page on request

    OpenAI's documentation is explicit on the middle row: sites opted out of OAI-SearchBot will not be shown in ChatGPT search answers. It is equally explicit that ChatGPT-User is not used for crawling the web in an automatic fashion, so it is a per-request fetch rather than a systematic crawl.

    The full user agent strings, as published on the same page:

    Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot
    
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot
    
    Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot

    Match on the product token (`GPTBot`, `OAI-SearchBot`, `ChatGPT-User`) rather than the full string. Version numbers move, and a rule keyed to `GPTBot/1.4` stops matching the day OpenAI ships 1.5. For the crawlers run by Google, Anthropic, Perplexity, Meta and the rest, see our AI crawler user agent reference.

    Copy-paste robots.txt configurations

    Three configurations cover almost every real decision. Robots.txt rules are matched per user agent group, so each block needs its own `User-agent` line rather than a comma-separated list.

    Allow everything, the default if you write nothing at all:

    User-agent: GPTBot
    Allow: /
    
    User-agent: OAI-SearchBot
    Allow: /
    
    User-agent: ChatGPT-User
    Allow: /

    Block training only, keep ChatGPT search visibility. This is the configuration most publishers actually want:

    User-agent: GPTBot
    Disallow: /
    
    User-agent: OAI-SearchBot
    Allow: /
    
    User-agent: ChatGPT-User
    Allow: /

    Block all three OpenAI agents. Understand that this removes you from ChatGPT search results entirely:

    User-agent: GPTBot
    Disallow: /
    
    User-agent: OAI-SearchBot
    Disallow: /
    
    User-agent: ChatGPT-User
    Disallow: /

    Partial blocks work the same way as for any crawler. If you want GPTBot kept out of gated or member content but allowed on the public marketing site, list the paths:

    User-agent: GPTBot
    Disallow: /members/
    Disallow: /pricing/internal/
    Allow: /

    Robots.txt is a request, not an enforcement mechanism. It is honoured by the operators who publish user agents in the first place, which includes OpenAI, but it does nothing about scrapers that do not identify themselves. If you need enforcement, that is a firewall or WAF rule, not a text file.

    How to verify a request really came from GPTBot

    User agent strings are a header. Anyone can send one, and a meaningful share of traffic claiming to be GPTBot is not GPTBot. OpenAI's published verification method is IP range matching against JSON files it maintains per agent:

    AgentPublished IP range file
    GPTBot`https://openai.com/gptbot.json`
    OAI-SearchBot`https://openai.com/searchbot.json`
    ChatGPT-User`https://openai.com/chatgpt-user.json`

    Want to see this in action?

    See how every major AI model talks about your brand. Free to start.

    Free AI Check

    The GPTBot file listed 21 IPv4 CIDR ranges when we fetched it on 20 July 2026, with a documented update date of 30 October 2025. The practical implication is that the list changes, so hard-coding today's ranges into a firewall rule and forgetting about it will eventually block legitimate crawls. Fetch the file on a schedule and rebuild the allowlist from it.

    Verification logic, in order:

    1. Read the user agent and check for the product token. 2. Take the connecting IP, not any value from `X-Forwarded-For` that you do not control. 3. Test that IP for membership in a CIDR range from the relevant JSON file. 4. If the token says GPTBot and the IP is outside the published ranges, treat the request as spoofed.

    Note the difference from Googlebot here. Google supports reverse DNS verification, where you resolve the IP to a hostname and forward-resolve it back. OpenAI does not document a reverse DNS verification path for GPTBot, so CIDR matching against the JSON files is the method to rely on. If you see a guide telling you to reverse-resolve GPTBot to an openai.com hostname, treat it as unverified.

    Server-side, the cheapest version of this is a scheduled job that pulls the three JSON files, merges the prefixes into an IP set, and lets your reverse proxy answer anything outside the set with a 403 when the user agent claims to be an OpenAI agent.

    The decision table

    Your situationAllowBlockWhat it costs you
    Marketing site, wants AI referralsAll threeNothingYour public copy enters training data
    Publisher with a licensing positionOAI-SearchBot, ChatGPT-UserGPTBotNothing in ChatGPT search, preserves the negotiating position
    Paywalled archiveOAI-SearchBot on free pagesGPTBot everywhere, all agents on paid pathsPaid content is invisible to ChatGPT, which is usually the point
    Docs or support siteAll threeNothingFewer support tickets is normally worth more than the training concern
    Legal or compliance restriction on content reuseNothingAll threeFull removal from ChatGPT search
    Ecommerce product catalogueAll threeCheckout, account, search-result URLsCrawl budget wasted on parameter URLs if you do not block them

    The strategic argument, stated honestly

    Here is what is known. Blocking GPTBot removes your pages from the corpus OpenAI uses for model training, on OpenAI's own statement. Blocking OAI-SearchBot removes you from ChatGPT search answers, also on OpenAI's own statement. These are two separate decisions with two separate consequences and they should be made separately.

    Here is what is inferred rather than documented. Content already used in training before you added the block stays in models that have already been trained. Nobody publishes a mechanism for retroactive removal from a trained model, so a block is forward-looking only. Treat any claim that blocking GPTBot removes you from ChatGPT as false.

    The commercial argument for keeping training access open is weaker than it looks, because training data is not where most brand mentions come from in practice. Ahrefs found AI visibility correlates most strongly with third-party mentions and video rather than on-page work, which points at what other sites say about you rather than what your own pages contain. Semrush found Reddit is 40.1% of all AI citations, the single most-cited source. Your own robots.txt has no influence over either.

    The argument for keeping search access open is much stronger, and it is the one people get wrong. Live retrieval is how a brand that did not exist at training time appears in an answer at all. If you want the mechanics, see how AI search works and whether ChatGPT can search the internet.

    One more piece of context on why crawler access is necessary but not sufficient. Semrush found 62% of AI citations never name the brand being cited. Being crawled gets your page into the retrieval pool. It does not guarantee the answer says your name, which is a different problem covered in why your brand isn't showing up in ChatGPT.

    Related files people confuse with robots.txt

    Robots.txt controls access. It does not describe your content. Two adjacent conventions come up in the same conversation:

    FileStatusWhat it does
    `robots.txt`Long-established, honoured by OpenAIGrants or denies crawler access per user agent
    `llms.txt`Proposed convention, not honoured by any major AI vendor as an access controlA markdown map of your key pages
    Meta `noindex`Established for search enginesDoes not substitute for a robots.txt crawler block

    We have written up what the first of those actually is in what is llms.txt, with real files in llms.txt examples. Neither replaces the robots.txt rules above.

    Auditing what you have now

    Check four things, in this order. First, fetch your own `/robots.txt` and confirm the three OpenAI tokens appear as you intend, with no catch-all `User-agent: *` `Disallow: /` above them that a CDN or staging config left behind. Second, grep your access logs for each product token and confirm you are seeing real traffic. Third, spot-check a sample of those IPs against the JSON files. Fourth, confirm your WAF or bot-management vendor is not blocking OpenAI agents independently of robots.txt, which is a common invisible failure because the rule lives outside your repository.

    The full walkthrough sits in our GEO audit checklist, and the tactics for turning access into actual citations are in how to get cited by AI. If you want to know whether the engines are showing their working at all, do ChatGPT and other assistants cite sources covers which ones expose citations.

    Getting crawler configuration right is the floor, not the ceiling. Once GPTBot and OAI-SearchBot are set the way you want them, the question that matters is whether AI assistants actually name you when buyers ask about your category. Run a free check at /tools/ai-visibility-checker to see what ChatGPT, Claude, Gemini and Perplexity say about your brand today.

    Frequently asked questions

    Does blocking GPTBot remove my site from ChatGPT?

    No. GPTBot collects training data. ChatGPT's search answers are powered by OAI-SearchBot and by ChatGPT-User for individual page fetches. Blocking GPTBot alone leaves you fully visible in ChatGPT search. Blocking OAI-SearchBot is what removes you, and OpenAI's documentation states that directly.

    Will blocking GPTBot delete content that has already been used for training?

    No mechanism for that is documented. A robots.txt block is forward-looking. Content crawled before the block stays in models that have already been trained on it. Anyone promising retroactive removal from a trained model is describing something OpenAI does not publish.

    How do I check whether a request claiming to be GPTBot is genuine?

    Match the connecting IP against the CIDR ranges OpenAI publishes at openai.com/gptbot.json. The file listed 21 IPv4 ranges when we checked on 20 July 2026. Unlike Googlebot, GPTBot has no documented reverse DNS verification path, so IP range membership is the method to use. Refresh the file on a schedule, because the ranges change.

    Should a small business block GPTBot?

    Usually not. The reason to block is a licensing or legal position on content reuse, which applies to publishers and rights holders. For a business trying to be found, the cost of blocking is real and the benefit is abstract. Ahrefs found AI visibility correlates most strongly with third-party mentions and video rather than on-page content, so your own pages are not the main lever either way.

    Do I need llms.txt as well as robots.txt?

    They do different jobs and llms.txt is not an access control. Robots.txt is honoured by OpenAI and governs whether GPTBot may fetch a page. llms.txt is a proposed convention that describes your content, and no major AI vendor currently treats it as permission or denial. Configure robots.txt first.

    Matiss Katanenko

    About the author

    Matiss Katanenko

    Co-founder, Honeyb

    My name is Matiss Katanenko and I co-founded Honeyb, the AI visibility platform that tracks how ChatGPT, Gemini, Claude, Perplexity and the other major AI engines talk about brands. I'm based in Riga, Latvia. Before Honeyb I spent years on the agency side running SEO and content programs for fast-growing brands across the US and Europe. That work is where I watched AI search start to compress the entire discovery channel into a four-brand short list, and decided to build the tool I wished agencies had. In my free time I'm in the sauna, on a padel court, or behind a drum kit.

    Connect on LinkedIn
    Honeyb

    Free to start

    See your brand through every major AI model.

    Run a free check in 30 seconds. The picture is usually different than you'd expect.

    ChatGPTChatGPT
    ClaudeClaude
    GeminiGemini
    PerplexityPerplexity