Skip to content
Answer Engine Optimization

Can AI Crawlers Read JavaScript? Rendering for AEO Explained

Most AI crawlers fetch your HTML and stop there. If your content only appears after JavaScript runs, ChatGPT, Claude and Perplexity may never see it. Here is how to check and fix it.

Can AI Crawlers Read JavaScript? Rendering for AEO Explained
On this page
  1. Key takeaways
  2. What the research found
  3. How to test your own site in ten minutes
  4. The fixes, from best to quickest
  5. What to fix first
  6. A worked example
  7. A checklist for development teams
  8. Frequently asked questions
  9. Sources

Last updated: 30 October 2026

Quick answer: Mostly no. A December 2024 study by Vercel and MERJ found that none of the major AI crawlers from OpenAI, Anthropic and Perplexity executed JavaScript: they read the HTML your server sends and stop. Google’s crawler renders JavaScript, so a site can rank in Google and still be close to blank for ChatGPT or Claude. Server-side rendering or static generation fixes it.

Modern websites built with React, Vue, Angular or similar frameworks often send the browser an almost empty page and fill it in with JavaScript. People never notice. Googlebot has handled this for years. Many AI crawlers do not, and that gap explains a lot of “we rank fine but AI never mentions us” conversations.

Key takeaways

  • OpenAI, Anthropic and Perplexity crawlers read the initial HTML and do not run your scripts.
  • Googlebot and Applebot do render JavaScript, which is why the problem hides behind good Google rankings.
  • Test with JavaScript switched off or with curl: what you see is roughly what AI crawlers see.
  • Server-side rendering, static generation or prerendering puts content back in the HTML.
  • Key facts, prices, FAQs and product details matter most. Fix those pages first.

What the research found

Vercel and MERJ analysed crawler traffic across Vercel’s network and reported that GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot and PerplexityBot fetched JavaScript files but did not execute them. Content that was already in the initial HTML, including JSON data embedded in the page, could still be read. Gemini, which uses Google’s infrastructure, and Applebot did render JavaScript.

Crawler Renders JavaScript? What it sees
Googlebot (Search, AI Overviews, Gemini) Yes The rendered page
Applebot Yes The rendered page
GPTBot, OAI-SearchBot, ChatGPT-User No Initial HTML only
ClaudeBot and other Anthropic crawlers No Initial HTML only
PerplexityBot No Initial HTML only

Crawlers change, so treat this as the safe assumption rather than a permanent rule: if a fact matters, it should be in the HTML.

How to test your own site in ten minutes

  1. View the source, not the page. Open a key page, choose View Page Source and search for a sentence from your main content. If it is missing, it is being added by JavaScript.
  2. Turn JavaScript off. In Chrome DevTools, open the command menu, choose Disable JavaScript and reload. What remains is close to what AI crawlers receive.
  3. Fetch it like a bot. Run curl -A "OAI-SearchBot" https://www.example.com/page/ and read the response.
  4. Check the important parts. Headings, the answer paragraph, prices, product specifications, FAQs, author names and internal links should all be there.

The fixes, from best to quickest

Approach How it works Good for
Server-side rendering (SSR) The server builds the full HTML for each request Apps with changing content, such as Next.js or Nuxt sites
Static site generation (SSG) Pages are built to HTML ahead of time Marketing sites, blogs, documentation
Prerendering A service renders pages and serves the HTML to bots Older single page apps you cannot rebuild yet
Progressive enhancement Core content in HTML, JavaScript adds extras Any site, as a design rule going forward

Avoid serving bots content that differs from what users see. Prerendering should return the same content, just already rendered.

What to fix first

You rarely need to rebuild everything. Start with the pages AI engines are most likely to cite: service and product pages, pricing, comparison pages, FAQs, your About page and your best guides. Tabs, accordions and “load more” buttons deserve special attention, because their content is often injected only after a click.

A worked example

Picture a software company whose pricing page is built as a single page app. In the browser, visitors see three plans with prices, limits and a comparison table. In the raw HTML, there is a page title, an empty <div id="root"> and a list of script files. Google renders the scripts and indexes the plans. A crawler that does not run JavaScript sees no prices at all.

When a buyer asks ChatGPT “How much does this tool cost?”, the assistant has nothing from the official page to work with. It may quote a two year old review, a competitor’s comparison page or a forum guess. The company then wonders why AI keeps getting its pricing wrong.

The fix in this case is usually small: render the pricing page on the server, or generate it as static HTML at build time. The design does not change. The difference is that the plans are in the first response every crawler receives.

A checklist for development teams

  • Main heading, opening answer and body text present in the initial HTML.
  • Navigation links as real <a href> elements, not click handlers.
  • FAQ answers and accordion content in the HTML, hidden with CSS if needed rather than loaded on click.
  • Structured data printed by the server, not injected later by a tag manager.
  • Product and pricing data rendered on the server or at build time.
  • Canonical, title and meta description present before any script runs.
  • Pagination and “load more” lists available as crawlable URLs.

Adding these checks to your release process prevents the problem returning with the next redesign.

Frequently asked questions

Does Google still render JavaScript for AI Overviews?

Yes. AI Overviews and AI Mode use Google’s normal indexing, which renders JavaScript. The risk is mainly with other AI crawlers.

Is WordPress affected?

Usually not. Standard WordPress themes send full HTML. Problems appear with heavy page builders that load content by script, or with headless setups that render on the client.

Will structured data in JavaScript be read?

Only if it is in the initial HTML. JSON-LD injected after load by a tag manager may be missed by crawlers that do not run scripts.

Is this the same as cloaking?

No, as long as bots and people get the same content. Rendering on the server simply delivers that content in a form every crawler can read.

Sources

Product details, prices and features are checked at the time of writing and can change. Sources are linked in the text so you can check them yourself.

Written by

Ketan Parmar

Ketan Parmar has spent more than 15 years in digital marketing, helping brands grow through SEO, Google Ads, Meta Ads, content strategy and social media. Today he focuses on AI search visibility: how businesses get found and recommended in ChatGPT, Gemini, Perplexity and Google's AI answers.

How does your brand appear in AI answers?

We test the questions your buyers ask across the major AI assistants and search engines, then show you what to fix first.

Get an AI Visibility Audit

Your brand deserves to be in the answer.

We look at how search engines and AI assistants describe your business today, then build a practical plan to improve it.