---
title: "Your page ranks #1 on Google and is invisible to ChatGPT"
description: "Googlebot renders JavaScript; AI crawlers don’t. Your React page can rank #1 and still be invisible to ChatGPT: the crawler gets an empty shell."
url: https://seo7.es/en/blog/ai-seo-blog/ranks-1-on-google-invisible-to-chatgpt
canonical: https://seo7.es/en/blog/ai-seo-blog/ranks-1-on-google-invisible-to-chatgpt
lang: en
type: BlogPosting
---

# Your page ranks #1 on Google and is invisible to ChatGPT

> Googlebot renders JavaScript; AI crawlers don’t. Your React page can rank #1 and still be invisible to ChatGPT: the crawler gets an empty shell.

Page: https://seo7.es/en/blog/ai-seo-blog/ranks-1-on-google-invisible-to-chatgpt

## Summary for AI

Googlebot renders JavaScript; AI crawlers don't. Your React page can rank #1 and still be invisible to ChatGPT: the crawler gets an empty shell. There's an assumption sitting quietly inside most engineering teams: if Google can crawl and render our site, AI crawlers can too. And it's the single most expensive wrong assumption in technical SEO right now.

## Questions and answers

### Why does a page at the top of Google not show up in ChatGPT answers?

Googlebot renders JavaScript and AI crawlers do not. A React site without server rendering gives the crawler an empty shell with a single script. Google rendered the page and ranks it, while ChatGPT never saw the content at all.

### Which AI crawlers don't run JavaScript?

According to the Vercel and MERJ server log study of December 17, 2024, no major AI crawler runs JavaScript. These are GPTBot, OAI-SearchBot and ChatGPT-User from OpenAI and ClaudeBot from Anthropic.

### Do AI crawlers download JavaScript files?

Yes, they download them but don't run them. GPTBot fetches JavaScript in about 11.5% of requests, ClaudeBot in about 23.84%. A separate analysis of more than 500 million GPTBot requests found no sign of script execution.

### Which AI does see JavaScript-generated content?

Google Gemini. It works through Googlebot's Web Rendering Service and inherits its ability to run JavaScript, along with the rendering queue delays. The other major AI crawlers read only the source HTML.

### Why can't AI crawlers see JSON-LD added through react-helmet?

react-helmet inserts markup in the browser after scripts load. DevTools shows the rendered DOM, so the markup seems to be there. It is missing from the original server response, and GPTBot, ClaudeBot and PerplexityBot never receive it.

### How do you check whether a crawler sees structured data?

Open the page's view-source instead of the Elements panel in DevTools. If JSON-LD appears only in DevTools and is missing from view-source, AI crawlers can't see it. Google will still find the markup, which is why the failure stays unnoticed.

### Does content have to be visible text for AI to read it?

No. Data embedded in the source HTML as inline JSON or a server payload is in the raw response and the crawler reads it. Only what the browser builds after the page loads is lost.

### How is Bing connected to a site's visibility in ChatGPT?

About 92% of ChatGPT agent requests rely on the Bing index, and Bingbot's JavaScript rendering is limited. So a client-side rendered site risks vanishing both in Bing and from the AI crawlers that use it.

### How can you check in half a minute what a crawler receives?

Run a curl request against the page and grep the response for ld+json and the heading text. If grep returns nothing, the crawler got nothing either. Start with the pricing page, the service pages and your best article.

### Which pages should you check first for an empty shell?

The pricing page, the service pages and your strongest article. They have the most to lose: customers ask AI assistants about exactly these things, and an empty shell knocks the site out of the answer.

### How do you fix a React site being invisible to AI?

With server rendering, static generation or prerendering. Next.js, Nuxt, Angular Universal and Django SSR all work equally: the principle is what matters. Real content must live in the HTML the server returns.

### How does SEO7 solve this problem on its own platform?

JSON-LD is rendered directly into the DOM, without injecting it through Helmet, and key pages are prerendered. That way any crawler can read the markup, including AI bots that don't run JavaScript.

### Why does the old advice about server rendering matter again?

The advice has been right for ten years; what changed is the price of ignoring it. Before, a site without server rendering waited in Google's rendering queue. Now it drops out of AI answers entirely, the fastest-growing channel.

### Why do checks with ordinary tools not find the problem?

DevTools, extensions and Google reports show the page after JavaScript runs, and everything looks fine there. Google renders the site itself, so rankings hold. The empty shell is only visible in the raw server response.

## Other languages

- RU: https://seo7.es/ru/blog/ai-seo-blog/ranks-1-on-google-invisible-to-chatgpt
- ES: https://seo7.es/es/blog/ai-seo-blog/ranks-1-on-google-invisible-to-chatgpt

## schema.org markup

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "name": "Your page ranks #1 on Google and is invisible to ChatGPT",
  "description": "Googlebot renders JavaScript; AI crawlers don’t. Your React page can rank #1 and still be invisible to ChatGPT: the crawler gets an empty shell.",
  "url": "https://seo7.es/en/blog/ai-seo-blog/ranks-1-on-google-invisible-to-chatgpt",
  "mainEntityOfPage": "https://seo7.es/en/blog/ai-seo-blog/ranks-1-on-google-invisible-to-chatgpt",
  "inLanguage": "en-GB",
  "headline": "Your page ranks #1 on Google and is invisible to ChatGPT",
  "isPartOf": {
    "@type": "WebSite",
    "name": "SEO7.ES",
    "url": "https://seo7.es/"
  },
  "publisher": {
    "@type": "Organization",
    "name": "SEO7.ES",
    "url": "https://seo7.es/"
  }
}
```
