← Answers

Do AI crawlers run JavaScript when reading a page?

Short answer: Mostly no. As of 2026 the major AI crawlers — GPTBot, ClaudeBot, PerplexityBot and the rest — fetch your raw HTML and never execute JavaScript. The one exception is Google’s Gemini. So if your content only appears after JavaScript runs, most AI engines simply can’t see it.

Which crawlers skip JavaScript?

Nearly all of them. GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Meta-ExternalAgent and Bytespider all fetch the raw HTML response and extract text from the initial markup. They don’t run scripts, wait for rendering, or retry.

How do we know?

A Vercel and MERJ analysis of over 500 million GPTBot fetches recorded zero JavaScript execution. Even when GPTBot downloaded JavaScript files — about 11.5% of the time — it never ran them.

Is there any exception?

One: Google Gemini. It leverages Googlebot’s Web Rendering Service, so it can execute JavaScript, with the same timing and rendering-queue caveats that apply to Googlebot. Every other major AI crawler does not.

Why don’t they render it?

Speed and cost. AI crawlers impose tight timeouts — often one to five seconds — and rendering JavaScript at the scale they crawl would be enormously expensive in compute. Skipping it keeps retrieval fast and cheap.

What this means for you

If your important content is injected by JavaScript — a client-rendered single-page app, say — most AI engines see an empty shell. Serve your main content in the initial HTML, via server-side rendering, static generation, or pre-rendering, so it’s visible before any script runs.

CrawlerExecutes JavaScript?
GPTBot / OAI-SearchBotNo
ClaudeBot / Claude-SearchBotNo
PerplexityBotNo
Google Gemini (via Googlebot)Yes

FAQ

Does ChatGPT see JavaScript-rendered content?
No — GPTBot and OAI-SearchBot read raw HTML and don't run scripts.
Which AI crawler can render JavaScript?
Only Google Gemini, through Googlebot's rendering service.
How do I make JS content visible to AI?
Server-render or pre-render it so the content sits in the initial HTML.
Does downloading a JS file mean it ran?
No — GPTBot downloaded JS about 11.5% of the time but never executed it.