# Do AI Crawlers Execute JavaScript? Why Client-Side Content Is Invisible to Them

https://citaeotion.ai/do-ai-crawlers-execute-javascript/

Most major AI crawlers do not execute JavaScript. They fetch the raw HTML your server returns and never render the page, so anything built by client-side scripts is invisible to them.
AI crawlers do not execute JavaScript. GPTBot, OAI-SearchBot, ChatGPT-User, and ClaudeBot fetch the raw HTML from your server and stop there. They do not run scripts, so content that a browser builds after load is content they never see. This is also why Google Analytics misses them: analytics tags need JavaScript to run, and bots do not run it. To reach AI crawlers, put your content in server-rendered HTML, and to count them, read your server logs.
Quick answer: No, the major AI crawlers do not render JavaScript. A 2025 Vercel analysis of real crawler traffic found that none of the leading AI crawlers execute JavaScript, including OpenAI's GPTBot, OAI-SearchBot, and ChatGPT-User, and Anthropic's ClaudeBot. The study noted these crawlers do sometimes fetch JavaScript files (ChatGPT-related requests at about 11.5 percent and Claude-related requests at about 23.8 percent) but they treat those files as text and never execute them. The practical result: content injected into the page by client-side scripts is invisible to AI crawlers, and browser-tag analytics like Google Analytics cannot record bot visits because those tags also depend on JavaScript. Fixes are to server-side render your important content and to track crawlers with a server-log tool instead of a browser tag.
What the data actually shows
The clearest public evidence comes from Vercel's 2025 study of AI crawler behavior, which looked at real request traffic rather than guesses. Its finding was direct: none of the major AI crawlers currently render JavaScript. That list included OpenAI's GPTBot, OAI-SearchBot, and ChatGPT-User, along with Anthropic's ClaudeBot.
The study drew a sharp line between fetching a file and running it. The crawlers do sometimes request JavaScript files. In the sample, ChatGPT-related requests pulled JavaScript files about 11.5 percent of the time and Claude-related requests about 23.8 percent of the time. But pulling the file is not the same as executing it. The crawlers treat the JavaScript as inert text and never run it in a rendering engine. So a page that depends on that script to build its content stays empty from the crawler's point of view.
This matches how a training or search crawler is built. Running a full browser engine on billions of pages is slow and expensive. Reading raw HTML is fast and cheap. Given that trade-off, the big AI crawlers overwhelmingly choose to read what the server sends and skip rendering.
Why client-side content becomes invisible
Modern JavaScript frameworks often ship a nearly empty HTML shell and then build the visible page in the browser after load. If your product descriptions, article body, FAQ answers, or pricing are painted onto the page by client-side React, Vue, or similar, then the HTML your server first returns may contain almost none of that text.
A human never notices, because their browser runs the script and fills the page in milliseconds. An AI crawler notices, because it stops at the raw HTML. Here is the split:
What a browser sees: shell HTML + JavaScript runs -&gt; full content
What an AI crawler sees: shell HTML only -&gt; little or no content
The consequence is blunt. If GPTBot or ClaudeBot cannot see your content, it cannot enter training. If OAI-SearchBot or PerplexityBot cannot see it, you are far less likely to be cited in an AI answer. Your best material can be sitting on the page, perfectly visible to people, and still be a blank to the models that increasingly sit between your site and your audience.
Why browser analytics miss AI bots entirely
This is the trap that fools most teams. Open Google Analytics and you will see close to zero AI bot traffic, and it is tempting to conclude the bots are not visiting. That conclusion is wrong. GA reports zero because of the same JavaScript fact, not because the bots are absent.
Google Analytics works by running a JavaScript tag in the visitor's browser. The tag fires, collects data, and sends a hit. AI crawlers do not run JavaScript, so the tag never fires, so no hit is ever recorded. Every browser-tag analytics product shares this blind spot. The bots hit your pages hundreds or thousands of times, and your analytics show none of it, because the measurement itself depends on the one thing bots refuse to do.
Put plainly: browser analytics measure people, and AI crawlers are not people running browsers. If you want to know how often GPTBot, ClaudeBot, PerplexityBot, or OpenAI's search agent reads your site, GA is the wrong instrument. It was never built to see them. The reliable way to detect AI crawlers is to read the server log, where every request is written down.
What to do about it
There are two separate problems to fix: making your content visible to crawlers, and being able to measure them.
Make content visible. Deliver your important content in the HTML the server returns, not through client-side rendering alone. Server-side rendering (SSR), static site generation, or prerendering all put the real text in the first response, which is exactly what an AI crawler reads. On WordPress this is usually the default, since the theme renders HTML on the server, but heavy client-side blocks, tabbed content that loads on click, and script-injected sections can still hide text. Check by viewing the raw page source (not the rendered inspector) and confirming your key content is present before any script runs.
Measure with server logs, not a browser tag. Since the bots skip JavaScript, the only complete record of their visits is your web server access log, which writes down every request no matter what runs afterward. That is the data citAEOtion reads to track AI crawlers on WordPress. It reads real server traffic, classifies every hit by its actual user agent, and sorts crawlers into categories such as AI Training, AI Search, AI Assistant, and Data Scraper. You can see which bot hit which page, when, how often, and with what HTTP status, so you know for a fact whether GPTBot, ClaudeBot, or a search agent has read a given page. Think of it as the analytics layer built for the visitors GA cannot see. Reliable AI crawler tracking starts from that server-log record, and you can see every AI crawler hit on your site the moment it happens.
A single site is $34.99 a month, with agency plans and a Founders Club discount. See the options on the citAEOtion pricing page, or book a live demo to watch a live WordPress site classify AI crawler traffic that Google Analytics shows as zero.
The primary research behind the no-rendering finding is Vercel's own writeup, The rise of the AI crawler.
Frequently Asked Questions
Do any AI crawlers render JavaScript?
The major AI crawlers studied did not. Google can render JavaScript for its search index with Googlebot, but that is a search crawler. The dedicated AI crawlers such as GPTBot, ClaudeBot, and OpenAI's search agent read raw HTML and do not execute scripts.
If a crawler fetches my JavaScript file, does it read the content?
No. Fetching a JavaScript file is not the same as running it. The crawlers treat the file as text and never execute it, so content that only appears after the script runs stays invisible.
Why does Google Analytics show no AI bot visits?
Google Analytics runs a JavaScript tag in the visitor's browser. AI crawlers do not run JavaScript, so the tag never fires and no visit is recorded. The bots are visiting; GA simply cannot see them.
Does server-side rendering fix this?
Yes, for visibility. Server-side rendering, static generation, or prerendering put your real content in the HTML the server returns, which is exactly what AI crawlers read. It does not help you measure the bots, which still needs server-log tracking.
How can I tell if my content is visible to AI crawlers?
View the raw page source before any script runs and confirm your key text is there. To confirm the bots are actually reading it, check your server logs or use a log-based tracker like citAEOtion.
See the AI traffic Google Analytics hides. Book a free demo

---
Site: citAEOtion - https://citaeotion.ai/
LLM index: https://citaeotion.ai/llms.txt | Full text: https://citaeotion.ai/llms-full.txt
