Can AI crawlers read JavaScript websites?
Many business websites are built as a JavaScript shell: the server sends an almost empty page, and the browser runs scripts to fill it in. People see a normal site. Most AI crawlers do not. Here is which crawlers run JavaScript, what each company actually says, and how to serve pages every engine can read.
Mostly no. Vercel and MERJ measured in December 2024 that the crawlers from OpenAI, Anthropic and Perplexity fetch pages but do not run JavaScript. Google's Gemini and Apple's Applebot do render. If your pages only show content after scripts run, most AI engines see an empty shell. Put your real content in the HTML the server sends.
What are the key facts about AI crawlers and JavaScript?
| Fact | Detail | Source |
|---|---|---|
| OpenAI crawlers | OAI-SearchBot, ChatGPT-User and GPTBot did not render JavaScript (Dec 2024 measurement) | Vercel + MERJ (third-party) |
| Anthropic crawler | ClaudeBot did not render JavaScript (Dec 2024 measurement) | Vercel + MERJ (third-party) |
| Perplexity crawler | PerplexityBot did not render JavaScript (Dec 2024 measurement) | Vercel + MERJ (third-party) |
| Common Crawl | CCBot, whose data is often used to train language models, "does not render pages" | Vercel + MERJ (third-party) |
| Fetch vs run | ChatGPT's and Claude's crawlers fetched JavaScript files (11.50% and 23.84% of requests) but did not execute them | Vercel + MERJ (third-party) |
| Google / Gemini | Gemini uses Googlebot's infrastructure, which renders pages in an evergreen headless Chromium | Vercel; Google |
| Google's rendering queue | Rendering waits in a queue: "a few seconds, but it can take longer" | |
| Google and clicks | "Google Search does not interact with your page": no scrolling, no clicking | |
| Bing / Copilot | Bingbot renders with Microsoft Edge and is "evergreen" (Oct 2019); Bing says processing JS at scale has limits (Oct 2018) | Bing |
| Apple | "Applebot may render the content of your website within a browser"; blocking JS or CSS in robots.txt can break that | Apple |
| Vendor statements | OpenAI's, Anthropic's and Perplexity's own crawler pages say nothing about JavaScript either way | OpenAI, Anthropic, Perplexity |
| Crawl volume | In one month: Googlebot 4.5 billion fetches, GPTBot 569 million, Claude 370 million, AppleBot 314 million, PerplexityBot 24.4 million | Vercel + MERJ (third-party) |
| Google's advice | Server-side or pre-rendering is "still a great idea" because "not all bots can run JavaScript" |
Which AI crawlers run JavaScript and which don't?
Google's and Apple's crawlers run JavaScript. The crawlers from OpenAI, Anthropic and Perplexity were measured not to.
The only large public measurement comes from Vercel, a web hosting company, working with the research firm MERJ. In December 2024 they published traffic data from their network and from nextjs.org. Their finding: "none of the major AI crawlers currently render JavaScript." Vercel The list they tested included OpenAI (OAI-SearchBot, ChatGPT-User, GPTBot), Anthropic (ClaudeBot), Perplexity (PerplexityBot), Meta (Meta-ExternalAgent) and ByteDance (Bytespider). Vercel also notes that Common Crawl's CCBot, whose data is often used to train language models, "does not render pages." Vercel These are Vercel's measurements, not statements from the AI companies.
Two crawlers did render:
- Google. Vercel writes that Gemini "leverages Googlebot's infrastructure, enabling full JavaScript rendering." Vercel Google's own documentation confirms Googlebot runs JavaScript in "an evergreen version of Chromium." Google
- Apple. Vercel found AppleBot renders through "a browser-based crawler, similar to Googlebot." Apple's own page says "Applebot may render the content of your website within a browser." Apple
What the AI companies themselves say. We read the official crawler pages for OpenAI, Anthropic and Perplexity on 3 October 2026. They name their bots and explain robots.txt rules. None of them says whether the bot runs JavaScript. So the honest summary is: unconfirmed by the vendors, measured as "no" by Vercel in late 2024.
If a crawler downloads my JavaScript files, doesn't that mean it reads them?
No. Downloading a script file and running it are two different things.
Vercel's data showed ChatGPT's crawler spent 11.50% of its requests on JavaScript files and Claude's spent 23.84%. But the same report says "they don't execute them" and "They can't read client-side rendered content." Vercel The crawler sees the script as text. It does not run it, so it never sees the headings, prices and descriptions the script would have created.
The report also found these crawlers waste a lot of effort: 34.82% of ChatGPT's fetches and 34.16% of Claude's hit 404 pages, against 8.22% for Googlebot. Vercel A site that leans on JavaScript for links and navigation often makes this worse, because the crawler can't follow links that only exist after scripts run.
Do Google and Bing handle JavaScript perfectly, then?
No. They can run JavaScript, but both say it costs them time and resources, and both still recommend sending real HTML.
Google processes JavaScript pages in three phases: crawling, rendering and indexing. A page waits in a rendering queue until Google has the resources to render it: "a few seconds, but it can take longer than that." Google Until rendering happens, Google only has the raw HTML. Google also says "Google Search does not interact with your page," so content that appears only after a click, a scroll or a tab change is never loaded. Google Its renderer clears cookies, local storage and session storage between page loads, and single-page apps that show an error with a 200 status code can get error pages indexed. Google
Google's AI Overviews and AI Mode are built on Search. Google says there are "no additional requirements to appear in AI Overviews or AI Mode." Google The Google-Extended token that controls Gemini training and grounding "doesn't have a separate HTTP request user agent string"; crawling uses Google's existing crawlers. Google So whatever Googlebot can or cannot render is what Google's AI products work from.
Bing has rendered JavaScript with Microsoft Edge since October 2019, and promised "Bingbot will be evergreen." Bing A year earlier Bing said bingbot is "generally able to render JavaScript" but that it is hard to process JavaScript at scale on every page while keeping requests down, and it suggested serving pre-rendered HTML to its bot. Bing Bing's current Webmaster Guidelines have no JavaScript section, but they say the same practices that help indexing also support "grounding results, and citations" in Copilot and Bing's AI experiences. Bing
Apple says Applebot can render pages in a browser, and warns that if JavaScript, CSS and other resources are blocked in robots.txt "it may not be able to render the content properly." Apple Applebot feeds Spotlight, Siri and Safari, and its data may train Apple's models unless you opt out with Applebot-Extended.
Is my website a JavaScript shell?
It is if the HTML your server sends does not contain your content. Here is how to tell without any technical tools.
- Site builders and frameworks. Sites built with React, Vue, Angular or Svelte in their default client-rendered mode send a near-empty page and fill it in with scripts. Next.js, Nuxt and similar frameworks can render on the server or as static files, but only if they are set up that way. Many agencies ship the client-only mode because it is quicker.
- Symptoms you can see. A blank white flash before your page appears. A loading spinner on first visit. Content that changes when you switch tabs on the page without the address bar changing. Prices, reviews or listings that arrive a second after the rest.
- Content loaded after the page. Even on a normal site, reviews widgets, booking calendars, product grids pulled from an API, and "load more" buttons often live only in JavaScript. For crawlers that don't render, that content doesn't exist.
- Hidden behind interaction. Accordions, tabs and "read more" links that fetch their text on click are invisible even to Google, because "Google Search does not interact with your page." Google
How do I serve HTML that AI engines can read?
Put your real content in the HTML the server sends, before any script runs. Google's documentation says this plainly: server-side or pre-rendering "is still a great idea" because "not all bots can run JavaScript." Google Vercel's recommendation is the same: "Prioritize server-side rendering for critical content." Vercel The steps below are our advice on how to get there.
- Find out how your site renders today. Ask whoever built it one question: does the server send the page text, or does the browser build it? If they aren't sure, the free check in the next section will show you.
- Pick the simplest fix for your platform. Three options, all of which Google names as better than bot-detection tricks: server-side rendering (the server builds the full page on each request), static rendering (the pages are built once as plain HTML files), or hydration (the server sends full HTML and scripts add interactivity on top). Google For most small-business sites, static pages are the cheapest and fastest.
- If you use Next.js, Nuxt, Astro or similar, switch the rendering mode. These frameworks already support server or static output. The change is usually a configuration decision, not a rebuild.
- Move the content that matters into the first HTML. Business name, what you do, where you are, prices, hours, services, reviews, the answer to the question the page exists for. Vercel's data says client-side rendering is fine for extras like view counters, chat widgets and social feeds, not for the main content.
- Don't hide content behind clicks. Accordions and tabs are fine if the text is already in the HTML and the script just shows or hides it. They fail if the click fetches the text.
- Be careful with bot-detection rendering. Serving a pre-rendered copy only to known bots ("dynamic rendering") was once recommended by Bing, and Bing said it is "acceptable and not considered cloaking" if the content matches. Bing Google now calls it "a workaround and not a recommended solution." Google It also depends on a list of bot names that goes stale. Use it only as a stopgap.
- Don't rely on
<noscript>. A noscript block is meant for browsers with scripts turned off. None of the vendor pages we read says any AI crawler reads it, so treat it as unconfirmed and put the content in the real HTML instead. (Our advice.) - Return honest status codes. A missing page should return 404, not a friendly "not found" message on a 200 page. Google warns this gets error pages indexed, and Vercel's data shows AI crawlers already waste a third of their fetches on dead URLs.
- Don't block scripts and styles in robots.txt. The crawlers that do render (Google, Apple, Bing) need those files to build the page. Apple says blocking them means it "may not be able to render the content properly." Apple
What should be on my JavaScript readiness checklist?
| Check | Done when | Source |
|---|---|---|
| Content in first HTML | Your name, services, prices and page text appear in the HTML the server sends, before scripts run | Google, Vercel |
| Every template checked | Home, service, location, product and blog pages all pass, not just the homepage | Our advice |
| No click-to-load content | Tabs, accordions and "read more" already contain their text | |
| Links are real links | Navigation and internal links exist in the HTML, not only after scripts run | Our advice |
| Honest status codes | Missing pages return 404, not a 200 "not found" screen | |
| Scripts and styles crawlable | robots.txt does not block JS or CSS for crawlers that render | Apple, Google |
| Third-party widgets reviewed | Reviews, menus, listings and booking content have an HTML fallback or a static copy on the page | Our advice |
| Dynamic rendering is a stopgap | If you serve bots a pre-rendered copy, the content matches and you plan to replace it | Google, Bing |
| Re-check after each deploy | A framework update or new widget can turn a page back into a shell | Our advice |
How do I check what AI crawlers actually see on my site?
A real check has to look at your page the way a non-rendering crawler does: fetch the HTML, run no scripts, and ask whether the content a customer would need is there. Then compare that with what a browser shows. A gap between the two is the part AI engines can't read. Do this for each kind of page you have, not just the homepage, and repeat it after any redesign or plugin change.
For Google specifically, the URL Inspection tool in Search Console shows the rendered HTML Googlebot produced, so you can compare it with your source. Google
Our free AI visibility check fetches your pages the way AI crawlers do and shows whether your content is readable without JavaScript. Our Prompt Simulator then asks the AI engines a question your page should answer and shows which sources each one cites, so you can see whether the fix landed. For the crawler names and robots.txt rules, see AI crawlers and robots.txt.
Sources
- The rise of the AI crawler — Vercel (with MERJ). Read Oct 3, 2026.
- Understand the JavaScript SEO basics — Google Search Central. Read Oct 3, 2026.
- Fix search-related JavaScript problems — Google Search Central. Read Oct 3, 2026.
- Fix lazy-loaded content — Google Search Central. Read Oct 3, 2026.
- Dynamic rendering as a workaround — Google Search Central. Read Oct 3, 2026.
- Google's common crawlers — Google Search Central. Read Oct 3, 2026.
- AI features and your website — Google Search Central. Read Oct 3, 2026.
- Overview of OpenAI Crawlers — OpenAI. Read Oct 3, 2026.
- Does Anthropic crawl data from the web, and how can site owners block the crawler? — Anthropic. Read Oct 3, 2026.
- Perplexity Crawlers — Perplexity. Read Oct 3, 2026.
- bingbot Series: JavaScript, Dynamic Rendering, and Cloaking. Oh My! — Bing Webmaster Blog. Read Oct 3, 2026.
- The new evergreen Bingbot simplifying SEO by leveraging Microsoft Edge — Bing Webmaster Blog. Read Oct 3, 2026.
- Bing Webmaster Guidelines — Microsoft Bing. Read Oct 3, 2026.
- About Applebot — Apple. Read Oct 3, 2026.
Common questions
Can ChatGPT read a React website?
Only the HTML the server sends. Vercel and MERJ measured in December 2024 that OpenAI's crawlers (OAI-SearchBot, ChatGPT-User, GPTBot) fetched JavaScript files but did not run them. OpenAI's own crawler page does not say either way. If your React app renders on the server or as static files, ChatGPT can read it. Vercel OpenAI
Does Claude's crawler run JavaScript?
Vercel's December 2024 measurement says no: ClaudeBot fetched JavaScript files in 23.84% of its requests but did not execute them. Anthropic's crawler page names ClaudeBot, Claude-User and Claude-SearchBot and explains robots.txt, but says nothing about JavaScript. Vercel Anthropic
Does Perplexity render JavaScript?
Vercel measured that PerplexityBot did not render JavaScript in late 2024. Perplexity's own page describes PerplexityBot (for search results) and Perplexity-User (for live user requests) but does not mention JavaScript. Vercel Perplexity
Does Google's Gemini read JavaScript pages?
Yes, through Googlebot. Vercel found Gemini uses Googlebot's infrastructure, and Google documents that Googlebot renders pages in an evergreen Chromium. Rendering waits in a queue, and Google never clicks or scrolls, so content behind interaction still isn't seen. Google Google
Is server-side rendering enough for AI search?
It solves the reading problem. Once your content is in the first HTML, every crawler we covered can read it. Whether an engine then cites you depends on the content itself: clear answers, facts, structured data and a trustworthy site. Google says there are no extra requirements for AI Overviews or AI Mode beyond being indexed. Google
Is dynamic rendering cloaking?
Bing said in 2018 it is "acceptable and not considered cloaking" if bots and people get the same content. Google now calls dynamic rendering a workaround, not a recommended solution, and points to server-side rendering, static rendering or hydration instead. Bing Google
Related pages.
See which of your pages AI answers cite.
Enter your domain. The free AI visibility check shows where ChatGPT, Gemini, Perplexity and Google's AI answers mention you, and where they don't.