On this page · 6 sections
Genuine ChatGPT-User visits in your logs mean someone's ChatGPT request led to your page, one of the few traces of ChatGPT activity you can see on your own server, and a useful input for optimizing for AI search. This page covers what triggers it, its exact user-agent string, what OpenAI says about robots.txt, what allowing or blocking it changes, how to read and verify it in your logs, and OpenAI's own docs.
Who runs ChatGPT-User and when does it visit your site?
OpenAI runs ChatGPT-User as a user-triggered fetcher: it loads a page on behalf of a person using ChatGPT, rather than crawling (visiting pages on its own schedule) like a search or training bot. OpenAI's crawler page says it uses ChatGPT-User "for certain user actions in ChatGPT and Custom GPTs" and that ChatGPT users "may also interact with external applications via GPT Actions" (OpenAI).
OpenAI is explicit about what it isn't: "ChatGPT-User is not used for crawling the web in an automatic fashion." OpenAI doesn't publish a list of the exact prompts or features that trigger a visit; its documentation says only that ChatGPT "may visit a web page" when a user asks a question.
How it compares with OpenAI's automated bots:
Bot | Started by | Purpose | robots.txt |
|---|---|---|---|
ChatGPT-User | A ChatGPT or Custom GPT user's request | Reads a page to help with that request | OpenAI says rules "may not apply" |
OpenAI, automatically | Surfaces sites in ChatGPT search | Followed | |
OpenAI, automatically | Collects content that may be used for training | Followed |
Source: OpenAI crawler documentation, as of October 2026. Our overview of AI crawlers and fetchers compares OpenAI's bots with other operators' crawlers, such as Anthropic's ClaudeBot.
What is ChatGPT-User's user-agent string?
ChatGPT-User sends a short user-agent string (the name a bot sends with each request) ending in a generic OpenAI info URL. Unlike its sibling bots, OpenAI labels this one the "full user-agent string" rather than an example (OpenAI). As of October 2026:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/botTwo things to note:
- The token is
ChatGPT-User, with a hyphen and both capitals. Match it case-insensitively in server rules, since robots.txt matching is case-insensitive too. - The info URL is
https://openai.com/bot, not a bot-specific page like GPTBot's/gptbotor OAI-SearchBot's/searchbot. Don't build log filters on the URL; use the token.
Does ChatGPT-User obey robots.txt?
Not reliably, and OpenAI says so. Its crawler page states: "Because these actions are initiated by a user, robots.txt rules may not apply" (OpenAI). robots.txt (the text file at your site's root that tells crawlers which paths they may fetch) was designed for automated crawlers, and OpenAI treats a ChatGPT-User visit as a person's request rather than a crawl.
"May not apply" isn't "never applies". You can still write a group for it, and it costs nothing:
User-agent: ChatGPT-User
Disallow: /account/Just don't rely on that rule to keep a page private. The robots.txt standard itself, RFC 9309, says its rules "are not a form of access authorization." Anything that must stay private needs a login, or a server rule like the one below.
OpenAI also points search decisions elsewhere: "Please use OAI-SearchBot in robots.txt for managing Search opt outs and automatic crawl." A ChatGPT-User rule in robots.txt doesn't change your ChatGPT search eligibility either way.
Should you allow or block ChatGPT-User?
For most public pages, allow ChatGPT-User: a visit means a ChatGPT user's request led to your page, and blocking it doesn't buy you a search or training opt-out. Block it only on paths you don't want an AI assistant to read for anyone, such as account areas, and do it at the server.
Choice | What changes | What doesn't change |
|---|---|---|
Allow (default) | ChatGPT can read the page when a user's request calls for it | Your ChatGPT search eligibility (OAI-SearchBot) and training opt-out (GPTBot) |
robots.txt | A request that OpenAI "may not" honor | Search eligibility; OpenAI says ChatGPT-User isn't used for that |
Server returns 403 to ChatGPT-User | ChatGPT can't read that page for the user who asked | Search eligibility; other bots; human visitors |
What ChatGPT-User traffic can't tell you: whether ChatGPT quoted, linked or recommended your page in its answer. OpenAI doesn't say how fetched content is used in the reply, so treat the visits as interest, not citations. Measuring mentions in answers is a separate job, covered in tracking AI visibility. For how ChatGPT picks what to cite, see how AI search chooses its sources.
If ChatGPT users are reaching your pages, the next question is whether search engines have your current versions too. You can start a free index check of your pages.
Blocking ChatGPT-User at the server (nginx)
This nginx rule returns 403 to ChatGPT-User on /account/ only and leaves the rest of the site open. We tested it with nginx on October 17, 2026: nginx -t passed, ChatGPT-User's published user-agent got 403 on /account/ and 200 on /, and a normal browser got 200 on both.
# in the http block
map $http_user_agent $is_chatgpt_user {
default 0;
~*ChatGPT-User 1;
}
# in the server block
location /account/ {
if ($is_chatgpt_user) { return 403; }
}A user-agent match also catches anything impersonating ChatGPT-User. To block only genuine OpenAI traffic, or to allowlist it past a firewall, match the IP ranges in the next section as well. If your site runs on WordPress, start with where WordPress keeps robots.txt before changing server rules.
How do you verify ChatGPT-User in your server logs?
Search your access logs for the ChatGPT-User token, see which pages it requested, then confirm the IP addresses against OpenAI's list at openai.com/chatgpt-user.json. As of October 17, 2026, that file lists 234 IPv4 ranges and is dated October 7, 2026 (its creationTime field), far more ranges, and more recently changed, than GPTBot's (18) or OAI-SearchBot's (39). Refresh it often if you allowlist from it. We ran the commands below on a test log in the combined format nginx and Apache use by default.
- See which pages ChatGPT fetched for users, most-requested first:
grep "ChatGPT-User" access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20- Watch the trend per day, for example before and after a launch:
grep "ChatGPT-User" access.log | awk '{print substr($4, 2, 11)}' | sort | uniq -c- Check the IPs are OpenAI's. This downloads the current list and tests every ChatGPT-User address in your log:
curl -s https://openai.com/chatgpt-user.json -o chatgpt-user.json
grep "ChatGPT-User" access.log | awk '{print $1}' | sort -u > chatgpt-user-ips.txt
python3 - <<'EOF'
import ipaddress, json
data = json.load(open("chatgpt-user.json"))
nets = [ipaddress.ip_network(p["ipv4Prefix"]) for p in data["prefixes"] if "ipv4Prefix" in p]
print("list dated", data["creationTime"][:10])
for line in open("chatgpt-user-ips.txt"):
ip = ipaddress.ip_address(line.strip())
print(ip, "OpenAI ChatGPT-User" if any(ip in n for n in nets) else "NOT in chatgpt-user.json")
EOFRequests from addresses outside the list aren't ChatGPT-User, whatever they claim. Exclude them before you report ChatGPT-User numbers to anyone.
Because ChatGPT-User visits are started by people, the URL list from step 1 is a rough map of which pages ChatGPT users asked about. It isn't a citation count.
Where are OpenAI's official ChatGPT-User docs?
OpenAI documents ChatGPT-User on Overview of OpenAI Crawlers, alongside GPTBot, OAI-SearchBot and OAI-AdsBot. The older platform.openai.com/docs/bots address redirects there as of October 2026.
Resource | URL |
|---|---|
Crawler overview (purpose, robots.txt note, user-agent string) | |
ChatGPT-User IP ranges (JSON) | |
GPT Actions, which also call external apps for users | |
Change feed for the crawler page (RSS) | |
robots.txt standard |
For the full picture of getting found in ChatGPT, not just fetched by it, see our ChatGPT SEO guide.
ChatGPT-User reads the live page, so whatever is on it at that moment is what the assistant sees. Search engines work from their own stored copies, which can lag behind your edits; content freshness covers why that gap matters for AI answers. FreshlyCited checks whether Google has indexed each URL, pushes only the ones it hasn't seen, and re-checks on day 1, 3 and 7; Google still decides what it indexes. We don't submit to ChatGPT, and we don't claim to. Check your pages free: 100 checks a month, no card.

