GuideAI visibility

Do AI crawlers render JavaScript? What GPTBot and ClaudeBot see

Most AI crawlers do not run JavaScript: GPTBot, ClaudeBot and PerplexityBot read raw HTML only. One curl command shows what they see on your page.

LaunchScalerPublished 8 min read

Most AI crawlers do not render JavaScript: Vercel's study of AI crawler traffic found that GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot and PerplexityBot read only the HTML your server sends, and only Gemini (through Googlebot) and Applebot render pages. If your content appears only after JavaScript runs, those crawlers see an empty page, and one curl command tells you whether that is your site.

That matters because the crawlers that do not render are the ones behind ChatGPT, Claude and Perplexity answers. A page that looks complete in a browser can be blank to all three.

Which AI crawlers render JavaScript?

Vercel measured it on its own network and found that "none of the major AI crawlers currently render JavaScript," naming OpenAI's, Anthropic's, Meta's, ByteDance's and Perplexity's crawlers. Two crawlers render: Gemini, which uses Googlebot's infrastructure, and Applebot, which renders through a browser-based crawler. The table lists each crawler you are likely to care about.

CrawlerFeedsRenders JavaScriptSource
GPTBotOpenAI trainingNoVercel
OAI-SearchBotChatGPT searchNoVercel
ChatGPT-UserChatGPT fetches for usersNoVercel
ClaudeBotAnthropic trainingNoVercel
Claude-SearchBot, Claude-UserClaude search and user fetchesNot published; assume noAnthropic documents no rendering
PerplexityBotPerplexity searchNoVercel
Perplexity-UserPerplexity user fetchesNot published; assume noPerplexity documents no rendering
Googlebot (and Gemini through it)Google Search, AI Overviews, AI Mode, GeminiYes, in a headless ChromiumGoogle, Vercel
ApplebotSpotlight, Siri, SafariYesApple, Vercel

The non-rendering crawlers do download scripts; they just never run them. Vercel found ChatGPT's crawler spent 11.50% of its fetches on JavaScript files and Claude's 23.84%, while ChatGPT's single largest share, 57.70%, went to HTML. The scripts arrive and sit unexecuted, so the content they would have built never exists for the crawler.

Vercel published this in December 2024, and neither OpenAI, Anthropic nor Perplexity documents rendering support on its crawler pages as of September 2026. Test your own pages rather than relying on any list.

What does an AI crawler see on a React or Vite single-page app?

It sees the HTML shell and nothing else. The default React template from Vite serves a body that holds one empty element and one script tag, and a crawler that does not run the script reads a page with no words on it. Every heading, price and paragraph your app renders is added later, by code the crawler never runs.

This is the whole index.html of Vite's React TypeScript template:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite + React + TS</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/src/main.tsx"></script>
  </body>
</html>

To GPTBot or ClaudeBot, that page's title is "Vite + React + TS" and its content is an empty <div id="root"></div>. Setting the title from JavaScript after load does not help, because the crawler has already read the one in the file. The same applies to Vue's template, which ships an empty <div id="app"></div>, and to any app built by an AI builder that outputs a client-rendered single-page app. The guide to client-side rendering and SEO covers the pattern across frameworks.

How do you test what an AI crawler sees?

Fetch the page without running JavaScript and search the result for a sentence you can see in the browser. If the sentence is there, the crawlers can read it. If the count is zero, the sentence is built by JavaScript and non-rendering crawlers never see it. The test takes one command per page.

  1. Pick a sentence from the body of the page, such as a line from your pricing table.
  2. Run: curl -s https://yoursite.com/pricing | grep -c "per seat per month". A result of 1 or more means the sentence is in the raw HTML; 0 means it is not.
  3. Repeat with an AI crawler's user agent, in case your server or CDN serves bots something different: curl -s -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" https://yoursite.com/pricing | grep -c "per seat per month".
  4. Check the page's metadata the same way: curl -s https://yoursite.com/pricing | grep -iE "<title>|name=\"description\"|application/ld\+json".
  5. Compare View Source with the browser's element inspector. View Source shows what the server sent; the inspector shows what JavaScript built. Anything only in the inspector is invisible to non-rendering crawlers.

Run it on the pages you most want cited: home, pricing, features, comparisons and documentation. Logged-in app screens do not matter here.

Which parts of the page must be in the raw HTML?

Everything an AI answer might quote or use to describe the page. Vercel's advice for being crawled is to server-render "main content (articles, product information, documentation), meta information (titles, descriptions, categories), and navigation structures." Structured data belongs in the same list, since a crawler that does not run scripts never sees JSON-LD injected by one.

ElementWhy a crawler needs it in the first responseHow to check
<title>Names the page in citations and search resultscurl -s URL | grep -i "<title>"
Meta descriptionSummary engines can use when describing the pagegrep -i 'name="description"'
Canonical and robots metaTells crawlers which URL to use and whether to index itgrep -iE 'rel="canonical"|name="robots"'
Main body copyThe passages an answer quotesgrep -c "a sentence from the page"
Navigation links as <a href>How crawlers find your other pagesgrep -o '<a href="[^"]*"' | head
JSON-LD structured dataTyped facts such as organisation, product and pricegrep -c "application/ld+json"
Open Graph tagsThe preview when your link is sharedgrep -i 'property="og:'

Links deserve a special mention. If your navigation is built by JavaScript, a non-rendering crawler that lands on your home page cannot find your pricing or docs at all, even if those pages are server-rendered.

How do you fix a client-rendered site for AI crawlers?

Send the content in the first HTML response. Three approaches do that: render each page on the server per request, generate pages as static HTML at build time, or prerender specific routes to HTML while the rest of the app stays client-side. For most product sites, prerendering the public marketing routes is the smallest change.

FixWhat it doesFits
Server-side renderingThe server builds each page's HTML per request; JavaScript hydrates it afterwardsPages whose content changes per request or often
Static generationPages are built to HTML at build time and served as filesMarketing pages, docs, blog posts
Prerendering selected routesA build step renders chosen routes of a single-page app to HTMLAn existing React or Vite app whose public pages are few

Whichever you pick, run the curl test again after deploying. Frameworks that support server rendering can still ship a page whose main content sits inside a component that only renders in the browser, and the raw HTML is the only honest check. If your site came from an AI app builder, the guide to Lovable SEO and the guide to an AI-built app that isn't indexed cover the builder-specific steps.

What else do AI crawlers struggle with?

Broken URLs and redirects, by a wide margin. The same Vercel study found ChatGPT's crawler spent 34.82% of its fetches on pages that returned 404, and Claude's 34.16%, against 8.22% for Googlebot. ChatGPT's crawler also spent 14.36% of its fetches following redirects. Every wasted fetch is one that did not reach a page you want quoted.

Three fixes cut that waste, and they are the same ones that help Google:

  1. Point internal links at the final URL, not at an address that redirects to it.
  2. Remove dead and redirected URLs from your XML sitemap, so it lists only pages that return 200.
  3. Return a real 404 or 410 for pages that are gone, instead of a 200 page that says "not found," so crawlers can drop them.

Single-page apps are prone to the third problem. A client-side router can serve the same 200 shell for every path, including paths that do not exist, and the "not found" message appears only after JavaScript runs, which a non-rendering crawler never sees.

Does Google's rendering mean you can skip this?

No. Google does render JavaScript, but it is one engine among several, and Google itself recommends not relying on it. Googlebot queues pages for rendering in a headless Chromium after crawling, so content built by JavaScript can be indexed later than content in the HTML, and none of that helps ChatGPT, Claude or Perplexity.

Google's JavaScript guide says "server-side or pre-rendering is still a great idea because it makes your website faster for users and crawlers, and not all bots can run JavaScript." Gemini is the one AI assistant that benefits from Google's rendering, because it retrieves through Google's index. For every other assistant, only the raw HTML counts. The guide to optimizing for AI search covers what to put in that HTML once it is there.

Check your raw HTML the way AI crawlers read it

Running curl on every page takes time, and a deploy can quietly move content back into the browser. Run the free scan on LaunchScaler: it takes a URL, needs no account and runs 156 checks across 6 of its 7 categories at no cost. It flags primary content that is missing from the raw HTML and only appears after JavaScript runs, for both search engines and AI crawlers, and it requests your page as ChatGPT-User and Claude-User to catch an empty client-rendered shell. Its search checks also read the title, meta description, canonical and structured data your server sends.

Questions, answered

What people ask about this

01

Do AI crawlers render JavaScript?

  • Most do not. Vercel's study of AI crawler traffic found none of the major AI crawlers render JavaScript, naming OpenAI's, Anthropic's, Meta's, ByteDance's and Perplexity's. The exceptions are Gemini, which uses Googlebot's rendering, and Applebot, which renders with a browser-based crawler.
02

Does ChatGPT render JavaScript?

  • Vercel's research lists OAI-SearchBot, ChatGPT-User and GPTBot among the crawlers that do not render JavaScript. ChatGPT's crawler did fetch JavaScript files, 11.50% of its requests, but did not execute them.
03

How can I see what an AI crawler sees on my page?

  • Fetch the raw HTML and search it for a sentence from the page: curl -s https://yoursite.com | grep -c 'a sentence from your page'. A count of 0 means the sentence only exists after JavaScript runs, so AI crawlers that read raw HTML cannot see it.
04

Is a React single-page app invisible to AI crawlers?

  • A client-rendered one is. The default Vite and React template serves an empty div with the id root and a script tag, so a crawler that does not run the script reads a page with no content. Server rendering or prerendering fixes it.
05

Does Google render JavaScript for AI Overviews?

  • Googlebot renders pages in a headless Chromium before indexing, and AI Overviews draw on Google's index. Google still recommends server-side or pre-rendering because it is faster and not all bots can run JavaScript.

Sources

  1. Vercel: The rise of the AI crawler (December 2024)vercel.com
  2. Google Search Central: Understand JavaScript SEO basicsdevelopers.google.com
  3. Vite: create-vite React TypeScript template (index.html)github.com
  4. Apple Support: About Applebotsupport.apple.com
  5. OpenAI: Overview of OpenAI crawlersdevelopers.openai.com
  6. Perplexity: Perplexity crawlersdocs.perplexity.ai

Newsletter

What launched, every Monday

Every Monday: what launched on LaunchScaler that week, what is launching next, and the reviews we published. Confirm your email once and you're in.

More from the blog

Guide

Does ChatGPT use Bing or Google for search?

ChatGPT search queries partner search providers, including Microsoft's Bing, and crawls with its own OAI-SearchBot. Here is what OpenAI documents.

LaunchScalerSep 28, 2026 · 7 min read
Guide

Entity SEO for a new brand: get Google and AI to recognise you

Entity SEO makes search engines and AI models treat your company as one known thing. A one-week plan: one name, schema, matching profiles, Wikidata.

LaunchScalerSep 28, 2026 · 7 min read
Guide

Is FAQ schema deprecated? What FAQPage markup still does

Google stopped showing FAQ rich results on May 7, 2026, after limiting them in 2023. FAQPage is still valid schema.org. What to keep, remove and write.

LaunchScalerSep 28, 2026 · 8 min read