JavaScript SEO for AI Crawlers: What ChatGPT, Claude and Perplexity Never See
JavaScript SEO used to mean one question: can Googlebot render my page? For AI search there is a second one, and the answer is worse. Googlebot runs your scripts, so Google Search, AI Overviews, AI Mode and Gemini can see text your page builds in the browser. The crawlers behind ChatGPT, Claude and Perplexity do not run your scripts. Vercel and MERJ measured it: ChatGPT's crawler spent 11.50% of its requests on JavaScript files and Claude's 23.84%, and "they don't execute them. They can't read client-side rendered content" (The rise of the AI crawler, Vercel, 17 December 2024).
If your price or product names only appear after a script runs, those crawlers read a page without them. Here is what was measured, which crawler does what, how to test a page, and the fix.
What was measured, and how old it is
Vercel and the consultancy MERJ watched crawler traffic on nextjs.org and the Vercel network, and checked the result on two job boards, one built with Next.js and one on a custom framework. Their finding: "none of the major AI crawlers currently render JavaScript", naming OpenAI's OAI-SearchBot, ChatGPT-User and GPTBot, Anthropic's ClaudeBot, Meta-ExternalAgent, ByteDance's Bytespider and PerplexityBot. Gemini "leverages Googlebot's infrastructure, enabling full JavaScript rendering", and AppleBot renders through a browser-based crawler.
Read it with three limits in mind:
- It is a snapshot from late 2024, and still the most specific published measurement we know of.
- The vendors say nothing. On 22 October 2026 we read OpenAI's crawler page, Anthropic's and Perplexity's. None of the three mentions JavaScript or rendering. Newer agents such as Claude-SearchBot are not in the study, so their behaviour is unmeasured.
- Vercel sells server rendering. The incentive is real. The finding has not been contradicted, and it matches what Google itself says: "not all bots can run JavaScript" (Understand the JavaScript SEO basics, Google, last updated 4 March 2026).
One nuance from the same study: content that sits in the initial HTML response as data, "like JSON data or delayed React Server Components, may still be indexed since AI models can interpret non-HTML content." A Next.js page that ships its props in the HTML is not in the same position as an empty app shell that fetches everything after load.
Which crawler runs JavaScript
| Crawler | Surfaces it feeds | Runs JavaScript? | Source |
|---|---|---|---|
| Googlebot | Google Search, AI Overviews, AI Mode, Gemini | Yes, after a rendering queue | Google; Vercel |
| Applebot | Apple | Yes | Vercel |
| OAI-SearchBot, ChatGPT-User, GPTBot | ChatGPT search, ChatGPT page visits, OpenAI training | No | Vercel |
| ClaudeBot | Anthropic training | No | Vercel |
| Claude-SearchBot, Claude-User | Claude search and page visits | Unmeasured | Not in the study; Anthropic does not say |
| PerplexityBot | Perplexity search index | No | Vercel |
| Meta-ExternalAgent, Bytespider | Meta and ByteDance AI | No | Vercel |
| CCBot (Common Crawl) | Datasets used in model training | No | Vercel |
| Microsoft Copilot | Copilot | Unmeasured | Excluded from the study: no unique user agent |
Google renders, but not instantly. Its documentation says "Googlebot queues pages for both crawling and rendering" and that "it is not immediately obvious when a page is waiting for crawling and when it is waiting for rendering." Google does not say how long a page waits in that queue. Which crawler serves which product is set out in our AI crawler list, and the OpenAI split in GPTBot vs OAI-SearchBot.
What goes missing
The losses are rarely whole pages. They are the facts a buyer asks about:
- Prices and plan tables loaded from a pricing API, or switched by a monthly/annual toggle that renders only one set.
- Product specs, stock and variants filled in by a storefront script.
- Reviews, ratings and testimonials from a third-party widget.
- FAQ answers and tab contents fetched only when someone clicks.
- Single-page apps whose server sends an empty
<div id="root">.
Our inference, not a measured effect: when a crawler reads your pricing page without the price, the engine still has to answer "how much is it?" from somewhere. That somewhere may be a review site, a reseller or an old cached page. That is one way a wrong price ends up in an answer; we cover correcting those in how to fix AI hallucinations about your brand.
How to test a page in five minutes
- Pick the facts. Write down the three to five facts on the page you would want an AI answer to get right: the price, the plan names, what the product does, where you operate.
- View the source, not the inspector. Press Ctrl+U (Cmd+Option+U on a Mac). This is the HTML your server sent before any script ran. The Elements panel in DevTools shows the page after scripts ran, which is the wrong view for this test.
- Search the source for each fact. Use Ctrl+F for the exact price or phrase. Found means a crawler that does not run JavaScript gets it. Missing means it does not.
- Request the page as a crawler. Run
curl -A "OAI-SearchBot/1.4; +https://openai.com/searchbot" https://yoursite.com/pricingand search the output. This catches a server or CDN that sends crawlers different HTML from browsers, and a firewall that blocks them outright. - Load the page with JavaScript off. In Chrome DevTools, open the command menu, run "Disable JavaScript" and reload. What you see is roughly what a non-rendering crawler gets. Turn it back on when you are done.
We ran step 4 on our own pricing page on 22 October 2026: a 200 to the OAI-SearchBot user agent, with $49 and $149 both in the raw HTML. Test your pricing, product and about pages first; they carry the facts AI answers get wrong.
The fix: put the facts in the HTML
- Render load-bearing content on the server, or build it statically. Server-side rendering, static generation and incremental regeneration all send the text in the first response. Next.js, Nuxt, SvelteKit, Astro and Remix all do this; a plain React or Vue single-page app does not by default.
- Keep client-side code for the extras. Vercel's own advice is to keep it for "non-essential dynamic elements like view counters, interactive UI enhancements, live chat widgets, and social media feeds."
- Tabs and accordions are fine if the text is in the source. Hidden with CSS is still in the HTML. Fetched on click is not.
- Treat dynamic rendering as a stopgap. Serving crawlers a prerendered copy works, but Google calls it "a workaround and not a recommended solution, because it creates additional complexities and resource requirements" and recommends server-side rendering, static rendering or hydration instead (Dynamic rendering as a workaround, Google, last updated 10 December 2025).
Be clear about what this fix does. It makes your facts exist for crawlers that do not run scripts. It does not make an engine more likely to choose you over another source: nobody has published a before-and-after showing that moving content to server rendering changes AI citations, so that effect is unmeasured. Google's guide to generative AI search (last updated 10 July 2026) says you need no AI text files, special markup or special writing style. Rendering is a gate, not a lever, like the other gates: robots.txt, your firewall and snippet controls such as nosnippet, covered in 5 signs your brand is invisible to AI.
Our free AI crawler checker covers the gates around this one: it reads your robots.txt for each AI crawler and requests your page under each crawler's name to catch a firewall block. It runs no scripts, so it cannot tell you what JavaScript adds; the five steps above do.
FAQ
Does ChatGPT read JavaScript?
Its crawlers download JavaScript files but did not run them in Vercel's measurement, which named OAI-SearchBot, ChatGPT-User and GPTBot. Text your page builds in the browser was not visible to them. OpenAI's own crawler documentation does not mention JavaScript either way.
Does Googlebot render JavaScript?
Yes. Google processes JavaScript pages in three phases, crawling, rendering and indexing, and queues pages for rendering. Because Gemini, AI Overviews and AI Mode draw on Google's infrastructure, a client-rendered page can reach Google's AI features and still be invisible to ChatGPT, Claude and Perplexity.
Will server-side rendering get me cited by AI?
Not by itself. It removes a reason you cannot be cited: the crawler gets your facts. Whether an engine then cites you depends on things a publisher does not control, and no study has measured citation before and after a move to server rendering.
Do I need to rebuild my React app?
Not necessarily. Most frameworks can server-render or prerender only the routes that carry facts, while the rest stays client-side. Start with the pages that fail the five-minute test.
Is llms.txt a workaround for JavaScript pages?
No. Google says its search, generative AI features included, does not use AI text files, and our llms.txt guide covers what the file does and does not do. Putting the facts in your HTML is the documented route.
See whether AI crawlers can reach your site. Run a free AI visibility audit, crawler-access check included: no credit card.
Can AI crawlers reach your site?
Your free audit requests your site as each AI crawler, reads robots.txt bot by bot, and shows every place your firewall disagrees with it.
Start for Free2 of 3 retrieval crawlers can reach you
robots.txt allows 1 crawler your firewall blocks
Related Articles
AI Crawler List (October 2026): Every Major Bot, What It Does, and How to Control It
Every major AI crawler as of October 2026, from the vendors' own pages: what each bot does (training, search or a user-triggered fetch), whether it follows robots.txt, whether its IP ranges are published, and how to decide what to allow.
GPTBot vs OAI-SearchBot vs ChatGPT-User: Which OpenAI Crawler to Allow
GPTBot collects training data. OAI-SearchBot decides whether ChatGPT search can show your site. ChatGPT-User fetches pages live, and robots.txt may not apply to it. What OpenAI says each one does, a decision table by goal, and the firewall rule robots.txt cannot fix.
Brand Visibility in AI Search: 5 Signs You're Invisible
Five signs AI search is skipping or misdescribing your brand, the check behind each one, and the three mistakes that cause most of them.


