Start a Project
AEO & GEO

Do AI Crawlers Read JavaScript: What Web25 Clients Should Know

9 min read
Adam Khaled

Adam Khaled

Founder, Web25

Do AI Crawlers Read JavaScript: What Web25 Clients Should Know

Quick answer: Do AI crawlers read JavaScript? No, not the dedicated ones. Vercel’s analysis of its own network traffic found that GPTBot, ClaudeBot, PerplexityBot, and the other major AI crawlers fetch a page’s raw HTML and never execute the JavaScript on it. Googlebot is the exception. If your content only appears after the page runs its JavaScript, every AI crawler except Google’s sees an empty shell.

Key takeaways

  • None of the major dedicated AI crawlers execute JavaScript: not GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, or PerplexityBot, per Vercel’s analysis of its own network traffic.
  • They do sometimes fetch JavaScript files as plain text without running them: about 11.5 percent of ChatGPT’s requests and 23.8 percent of Claude’s, per the same data.
  • Googlebot is the one major exception. It runs a full rendering step and can index content that only appears after client-side JavaScript executes.
  • Web25 builds this site itself on server-side rendering for exactly this reason: content has to exist in the raw HTML, not just after the page finishes running its scripts.

Table of contents

This comes up constantly with client sites built as a single-page app, a page that loads a blank shell first and fills in the actual content with JavaScript a second later. It works fine for a person, since their browser runs the script. It doesn’t work the same way for most AI crawlers, and the gap is bigger than people expect.

Do AI crawlers read JavaScript? Why it matters more than it sounds

A page can rank normally in classic Google search while being functionally invisible to ChatGPT, Claude, and Perplexity, because Google is the one search system that actually renders the page the way a browser does. The others read the raw response your server sends back, and if that response is a near-empty HTML shell with a loading spinner, that’s all they see.

This isn’t a hypothetical edge case. It’s the default behavior of a lot of modern JavaScript frameworks running in client-side rendering mode, which was the standard approach for years before AI crawlers existed to worry about.

What actually happens when an AI crawler hits a JavaScript-heavy page

According to Vercel’s own analysis of its network traffic, none of the major AI crawlers currently render JavaScript, including OpenAI’s GPTBot, OAI-SearchBot, and ChatGPT-User, and Anthropic’s ClaudeBot. In the same dataset, GPTBot generated 569 million requests across Vercel’s network in a single month, and Claude generated 370 million, so this isn’t a small edge case affecting a handful of crawls.

They do sometimes download the JavaScript files themselves, just as plain text, without ever running them: about 11.5 percent of ChatGPT’s requests and 23.8 percent of Claude’s, per the same analysis. That’s consistent with fetching a file to see what’s there, not executing it to render a page.

Crawler Renders JavaScript Fetches JS files as text
Googlebot Yes Yes
GPTBot / OAI-SearchBot / ChatGPT-User No ~11.5% of requests
ClaudeBot No ~23.8% of requests
PerplexityBot No Not separately broken out

Why Googlebot is the exception

Google built a full rendering service for Googlebot years ago, specifically because so much of the web moved to JavaScript-heavy frameworks. It queues a page, runs the JavaScript roughly the way a browser would, then indexes what actually shows up. None of the AI crawlers have built or documented an equivalent system.

That gap is why a client-side-rendered page can genuinely rank in classic Google search while returning nothing useful to an AI tool asking the same question. The two systems aren’t reading the same version of the page.

How to check whether your own site has this problem

  • View the page’s raw HTML source (not the browser’s rendered DOM, but the actual server response) and check whether your main content is there or whether it’s an empty container waiting for JavaScript to fill it in.
  • If your framework supports server-side rendering (SSR) or static site generation (SSG), check whether it’s actually turned on for your important pages, not just the marketing homepage.
  • Test with a tool that fetches raw HTML without executing scripts, since that’s the closest simulation of what these crawlers actually see.

Web25 builds its own site on Next.js with server-side rendering for exactly this reason, so the content in this article exists in the raw HTML response, not just after the page finishes running its scripts.

How Web25 helps

For a client on a client-side-rendered framework, the fix is usually adding SSR or SSG for the pages that matter for AI visibility, not a full rebuild. Web25 is our own agency, so this is also where we’d point you toward our own service. See the full approach on Web25’s AEO and GEO service page, or start with the broader guide to optimizing content for LLMs.

FAQ


No. GPTBot, OAI-SearchBot, and ChatGPT-User fetch a page’s raw HTML and don’t execute its JavaScript, per Vercel’s analysis of its own crawler traffic. If your content only appears after the page finishes running its scripts, these crawlers see an empty or near-empty page instead.


No, because AI Overviews draw from Google’s existing search index, which Googlebot builds using a full JavaScript rendering step. Google is the exception among major search and AI crawlers, so a client-side-rendered page has a real chance in Google’s ecosystem while being invisible to ChatGPT, Claude, and Perplexity.


Usually not a full rebuild. Most modern frameworks, including React and Vue-based ones, support server-side rendering or static generation as a configuration choice, not a rewrite. The fix is often turning that setting on for the pages that matter, rather than replacing the whole site.


Vercel’s data shows it happening on a real but minority share of requests, about 11.5 percent for ChatGPT and 23.8 percent for Claude, consistent with a crawler fetching a linked file to see what it contains rather than running it as code. It’s a data point, not evidence that execution is happening.


View the page’s raw source, not the rendered DOM in your browser’s inspector, which already ran the JavaScript for you. If your main text and headings are missing from that raw source and only appear after the page loads, an AI crawler is very likely seeing the same empty version.

What to do next

Right-click your homepage, view the page source, and search for a sentence you know is on the page. If you can’t find it in that raw source, that’s your answer, and the fix is turning on server-side rendering or static generation for that page. For the fuller technical checklist, see Web25’s guide to optimizing content for LLMs, or book a discovery call to talk through your own site.


Written by Adam Khaled, Founder, Web25. Last updated September 2026.

Back to all articlesSee Our Work

More from the blog