Do AI crawlers render JavaScript?
As a working assumption: no. A network-scale analysis by Vercel and MERJ (Dec 2024) found no evidence of JavaScript execution across hundreds of millions of GPTBot requests. The crawlers often download JS files—GPTBot fetched them in ~11.5% of requests, ClaudeBot in ~23.8%—but they don’t run them. The same non-rendering behavior held for ClaudeBot, PerplexityBot, Meta’s crawler, and ByteSpider. For scale, that study saw GPTBot generate ~569M requests and ClaudeBot ~370M in a single month.
Two exceptions: Google’s Gemini reuses Googlebot’s rendering pipeline, and Applebot renders pages—so ‘AI crawlers don’t render JS’ is true of OpenAI/Anthropic/Perplexity/Meta today, not a permanent law. Treat it as a present-state finding and re-verify.
The important nuance is fetch versus execute. Non-rendering crawlers receive your server’s initial HTML response and parse it as text—but never run the bundle, so any DOM your JavaScript would build never materializes for them. (Googlebot, by contrast, crawls, then renders with headless Chromium, then indexes—but even it queues rendering.)
Design for the lowest common denominator: if your important content isn’t in the raw HTML response, treat it as invisible to AI.
Sources & further reading
- The rise of the AI crawler — Vercel + MERJ (Dec 2024) — Primary empirical evidence that major AI crawlers fetch but don’t execute JS.
- Understand JavaScript SEO basics — Google Search Central — Google’s crawl → render → index pipeline (the exception AI crawlers aren’t).
