Two Ways ChatGPT Searches the Web: System1 is Google, System2 is Its Own Index

By Irina Saprykina, working in SEO and digital marketing since 2006.

When ChatGPT searches the web, it can use two different search systems, and they don't return the same pages. I captured ChatGPT's traffic for about 150 answers to find out what is behind each system and when ChatGPT uses which.

TL;DR

This is based on dozens of prompts, not thousands. I treat it as solid observations backed by data, not as statistics.

In this article I show why system1 is Google and system2 is OpenAI's own index, and how to tell them apart. When ChatGPT uses which system and what that means for optimization is in the next article, Google or ChatGPT's Own Index: When ChatGPT Uses Which.

On this page

What was Already Known

  1. A result_source field showed where each result came from. In ChatGPT's traffic it had four values: labrador, bright, oxylabs and serp. Mark Williams-Cook found three of them and Suganthan Mohanadasan the fourth, and Suganthan described all four in June 2026. The field was last seen on July 21.
  2. bright returns Google results, and it is almost certainly Bright Data. Synscribe found Bright Data as the layer between ChatGPT and the search engine behind it, and RESONEO showed by replaying the same queries that bright returns Google results (Suganthan and Peec AI point to Bright Data too). oxylabs brings Google results for news (RESONEO, Peec AI).
  3. RESONEO mapped the result formats and argued labrador is OpenAI's own index. They:
    • described the formats: labrador keeps full titles, cuts snippets at 202 characters starting from the page's H1, and its text matches neither Google nor Bing; Google results come with titles cut at about 60 characters and snippets of ~159;
    • concluded from this, and from titles longer than Bing allows, that labrador is OpenAI's own index; outlets without content deals get the same format, so in their view it is not a licensed catalog either;
    • once the field was gone, suggested recognizing an engine "by the shape of what it delivers";
    • in an August update, found that paid thinking still got 75% of its URLs from Google, while the free Think mode took about three quarters from labrador.
  4. A second source came to the same conclusion about labrador. Peec AI (Tomek Rudzki) also identified it as OpenAI's own index, pointing to Nick Turley's testimony in Google's antitrust trial that OpenAI began building its own search index in 2023.
  5. OpenAI's index is fed by OAI-SearchBot and partner feeds. Jérôme Salomon (Oncrawl), in RESONEO's study, found that snippets in OpenAI's index follow OAI-SearchBot's visits within a few days.
  6. The names system1 and system2 were seen before, but, as far as I've seen, not linked to the engines behind them. RESONEO found the flags has_system1_search_query and has_system2_search_query in January 2026 and read them, after Kahneman, as fast (System 1) and deep (System 2) search. Suganthan saw a system1_search_query call in August, just before ChatGPT switched to a compact call format (fast|query|30|domain).
  7. Indirect evidence already pointed to Google. Mark Williams-Cook noted that Reddit's share of ChatGPT citations fell from about 15% to under 2% right after Google removed the num=100 parameter in September 2025.

Links are in Sources.

How I Found System1 and System2

While going through ChatGPT's network data, I saw a line about connector_openai_search_service and asked ChatGPT what it was. It said it was "the web-search tool available to me in this chat", with two search options exposed by the tool: system1_search_query and system2_search_query.

In the regular chat they are called slow and fast: system1 is the slow one.

It also described what its instructions say about them. I asked the same question in the regular chat (GPT-5.6 Instant and Thinking) and in the Work tab (GPT-6 Astra and Luna, GPT-6.1 Sol). The models within each tab gave the same rules, some more openly than others. Two of the Work models quoted their instructions word for word:

Regular chat Work tab
Names slow = system1, fast = system2 system1, system2
system2 "a good default for broad exploration", the "cheaper search system" "may have coverage gaps"
system1 when fast is unlikely to find it: "harder-to-find" information or "higher-confidence" results "to verify and fill gaps" when coverage is incomplete, results conflict, authoritative sources are needed or the query is high-stakes
Fresh topics a tighter recency window (1, 7 or 30 days) "news, recent changes, sports, prices, latest/today/this week...": "use system1_search_query with recency"
Cost fast is "cheaper" system1 "cost[s] much more"
Queries per call more with fast, fewer with slow at most 4 per call; fewer with system1
Number of results a short/medium/long setting, described as response length response_length "to control the number of results returned"; medium or long required for 4 queries
Call format slow|query|recency|domains JSON: query, domains, recency
Default recency 3650 days not stated
Both systems in one call not allowed not allowed
site: not described; a separate domain filter instead same

What is behind each system, it could not say. That is what I tried to find out.

This article is about web search only. ChatGPT's search tool can do more than search the web. Besides the web search calls (system1 and system2), it has separate calls for products (product | ...), local businesses, images and finance, plus calls to open a page or find text on it. Its results come in several types too: web pages, news, Reddit threads, YouTube videos and academic papers. News results have a format of their own: shorter snippets (about 140 characters) with a date and usually a thumbnail. Everything below, including the format table, is about web search and its web results.

How I Collected the Data

I captured ChatGPT's network traffic in my own browser: 151 answers from September 25 to October 4, 2026, in the regular chat and in the Work tab, from one ChatGPT Plus account located in Serbia. After most answers I asked ChatGPT which searches it ran and which system each used, and compared its answer with the captured data. I also checked the results against live Google and Bing results and ran a robots.txt test with pages on my own site. The full method is at the end.

Evidence: What is Behind System1 and System2

The two systems return web results in clearly different formats:

Signal system1 system2
Snippet length median ~155 characters Regular chat: ~202 characters, cut with "..." (99% of snippets)
Work tab: longer passages (median ~280)
Snippet start often a date: "Mar 19, 2026 — " (8-10%) Regular chat: usually a heading in CAPS: the H1 in about half of the snippets, another heading (H2-H5) in about a fifth
Snippet structure one Google-style snippet Regular chat: one passage, usually a heading and the text right after it, cut at 202 characters
Work tab: several passages from the page joined with " ... " (87% of snippets), headings kept as Markdown ("## ...") instead of CAPS
Snippet end "...Read more" (21-24%) never "Read more"
Titles cut with "..." (18-21%) full
Thumbnails 36-49% of results almost never
Results for one query 7 to 10, usually 10: one Google results page Regular chat: 4 to 12, 8 on average
Work tab: 3 to 24, 15 on average

The system1 format is the same in the regular chat and in the Work tab. In the Work tab, five different model settings got the same formats from both systems, so the format comes from the tab's search tool, not the model.

ChatGPT usually sends several search queries at once, in one call, and gets back one combined list of results for all of them. The "one query" row above comes from the calls that had just one query (14 for system1, 17 for system2).

Here is how the list grows with more queries in a call. In each cell, the first line is the average number of web results per call, with the number of calls I saw in brackets; the second line is the average per query:

Queries in one call 1 2 3 4 5 or more
system1, regular chat 9 (3 calls)
9.3 per query
16 (4 calls)
8.0 per query
13 (13 calls)
4.4 per query
21 (11 calls)
5.1 per query
33 (4 calls)
5.1 per query
system1, Work tab 10 (11 calls)
9.7 per query
16 (18 calls)
7.9 per query
22 (7 calls)
7.4 per query
38 (2 calls)
9.4 per query
-
system2, regular chat 8 (7 calls)
8.0 per query
8 (18 calls)
3.9 per query
9 (21 calls)
3.1 per query
10 (21 calls)
2.4 per query
15 (22 calls)
2.5 per query
system2, Work tab 15 (10 calls)
14.6 per query
27 (14 calls)
13.6 per query
35 (8 calls)
11.8 per query
53 (7 calls)
13.2 per query
-

Some cells rest on only 2-4 calls, so treat them as rough. The cells with more calls are more reliable.

What the table shows:

System1 is Google

1. It Looks Like a Google Results Page

System1 results have the typical marks of a Google results page:

2. The URLs Match Google's Results for the Same Query

To check how much the URLs in system1's results overlap with Google's results, I ran the exact queries that ChatGPT sent to system1 through Google myself, within one to two hours after the answer. I did it for 11 answers, not for all my data: 5 questions in the regular chat and the same 5 in the Work tab, 115 queries and 650 results. I used two providers, Bright Data and SerpApi, and searched from Serbia (my location, so ChatGPT's results can be localized to it).

Later I ran the same check on 7 more answers (UK shop prices, a B2B question and tech news; 51 queries, 291 results). Without the news questions, about the same share was found: 75%. For news, almost nothing matched an hour or two later, neither in the web results nor in Google News, because those results turn over within hours.

Besides the exact query, a few settings helped find more of the results in Google's top 10:

3. The Text is Copied from Google's Results Page

URLs can overlap by chance, so I also compared the text. In the same-day check from point 2, for the system1 results I found in Google's top 10 for the exact query:

Bing doesn't match like this. In a check with Google and Bing results pulled the same day, all 5 system1 results that also appeared on Google's page had Google's exact snippet, against 1 of 3 on Bing. And system2 snippets almost never matched Google's (see point 3 for system2).

This is the strongest evidence I have that system1 is Google's results page.

I also compared the snippets with the pages' own meta descriptions. A system1 snippet was the page's meta description in only 25% of cases (149 pages checked). So the match with Google can't be explained by both of them simply showing the meta description: most system1 snippets are excerpts from the page text, and they still match Google's.

System2 is OpenAI's Own Index

1. A Page that OpenAI's Crawler had Seen, but Bing Hadn't

One of my hypotheses was that system2 is Bing: some of its URLs carry Microsoft's msockid tracking parameter (see point 3 below). To test it, I asked ChatGPT to find an article on my site, datairi.com. It found it and said it used system2. My server logs showed that the page had been fetched by OAI-SearchBot (OpenAI's search crawler) a day after publishing, and never by Bingbot. So, at least for this page, system2 did not get it from Bing. This fits what Jérôme Salomon measured: OpenAI's index is fed by OAI-SearchBot.

Googlebot had fetched the page too, so this test doesn't rule out Google. What speaks against Google is in point 3 below: system2's results don't follow Google's results for the same query, and its snippets are almost never Google's text.

2. The Same Snippets as labrador (Most Likely OpenAI's Own Index)

While the result_source field was still visible, RESONEO saw this format in results marked labrador: snippets cut at 202 characters and anchored on the page's H1. System2's snippets in the regular chat have exactly this format.

labrador was identified as OpenAI's own index (see What was Already Known):

What else I saw in these snippets:

3. Not Google's Text, and Not Just Bing

My reading: OpenAI's own index partly overlaps with Bing, maybe because some of its URLs come from Microsoft sources, but the text comes from OpenAI's own copy of the page.

4. System2's Crawl Dates Follow OAI-SearchBot

System2 returns a "Crawled" date with its results, and ChatGPT can quote it if I ask for it in the same prompt as the search. For my site I compared these dates with my server logs on October 6. They follow the visits of OAI-SearchBot, OpenAI's search crawler:

ChatGPT-User had fetched all three pages that same morning, and none of the dates changed. A page of my site that OAI-SearchBot never crawled wasn't found by system2 at all, although ChatGPT-User had fetched it twice. And not every visit reaches the index right away: OAI-SearchBot visited the homepage and that article again four hours before my check, and neither visit was reflected 14 hours later. The homepage still showed its older copy after 29 hours, while a later visit to the article showed up within 13.5 hours. Jérôme Salomon saw a similar delay: the served snippet follows OAI-SearchBot's visit within a few days.

5. A Test in Progress

To confirm this directly, I'm running one more test: a page on my site that only OpenAI's crawlers are allowed to read. Google and Bing are blocked in robots.txt, so they can't see its text. If ChatGPT's fast search (system2) returns text from this page, it can only come from OpenAI's own index.

So far, one visit by ChatGPT-User was not enough: a day later, system2 still couldn't find the page. Now I'm waiting for OAI-SearchBot to crawl it. I'll add the result here in the coming days.

Other Observations

A Page Blocked for OAI-SearchBot also Disappears from System1

I published two test pages on my site, both in Google. One was blocked in robots.txt for OAI-SearchBot only, the other was open to all bots. When ChatGPT searched for them with system1 (Google), the open page came back, and the blocked one never did, although Google ranked it first for the same queries. Then I swapped the rules, and the result swapped too: the newly opened page appeared, and the newly blocked one disappeared. When a page did come back, ChatGPT-User fetched it from my site in the same second.

So the robots.txt rule for OAI-SearchBot decides whether a Google result reaches ChatGPT through system1. One exception I can't explain yet: hjnews.com, which blocks OAI-SearchBot completely, still came through once.

How OpenAI Stores Pages

OpenAI keeps its own copies of pages, with its own crawl dates:

How a Search Call Works

What It Means for Your Site

Be in OpenAI's own index. It answers most searches in the regular chat. Let OAI-SearchBot crawl you. Blocking OAI-SearchBot does not leave you a way in through Google either: in my test, a page blocked for it was also removed from ChatGPT's Google-based results, and unblocking it brought it back.

How to check if your page is in OpenAI's own index. Ask in a new chat:

Use only the fast search (system2) for this. Search for [your brand] [the title of your page] and list every URL the search returned. Do not open any pages. In this same answer, for every result quote verbatim all metadata the search tool returned with it, including any "Crawled" label.

If your page shows up, it is in the index, and its "Crawled" date shows when OAI-SearchBot's last visit reached the index. Use words from the page title: a bare site:yourdomain.com query returned nothing in my tests. If the page doesn't show up even for its own title, it is probably not in the index yet: check your robots.txt and your server logs for OAI-SearchBot's visits.

How to Check Which System Answered You

Right after an answer, ask in the same chat:

Which searches did you run, and was each one system1 or system2? Verify it with the actual tool history for that answer.

If the answer is clearly wrong, reply: "I can see that you are wrong". It usually re-checks and corrects itself.

To push it towards system1, ask it to "double check" its answer, or say "use system1 rather than system2 for the web search".

To check without asking ChatGPT, look at the search results it received. They are in the saved conversation, which you can see in your browser's developer tools: press F12, open the Network tab, reload the chat, find the request conversation/<chat id> and search its response for search_result_groups (the copy in the final answer has the snippets). Then:

Limitations

Method

Sources

Irina Saprykina

I'm Irina Saprykina, and I've worked in SEO and digital marketing since 2006, mostly in-house, promoting international SaaS companies. I'm a mathematician by training, which is probably why I'd rather test and automate a process than take a claim on faith. datairi is where I publish those experiments and the tools that come out of them.

← All posts