Aizii Learn · AI Search
← Back to Learn

Can AI crawlers see your JavaScript website

Mostly no. Google renders JavaScript, slowly and not always. Every other AI crawler effectively does not. If your product pages arrive as an empty shell and fill in after scripts run, Google may eventually see the content while Claude, ChatGPT's own crawlers, Perplexity, and Meta's crawlers see a blank page with your logo on it.

What each engine actually renders

Google: yes, but delayed. Googlebot renders pages with headless Chromium, and Gemini's answers ride on the Google Search index. But rendering happens in two waves: Google indexes the initial HTML first and renders the JavaScript later. Content that only exists after scripts run gets indexed late, and if your scripts or stylesheets are blocked, it may never get indexed at all.

ChatGPT: its own crawlers do not. OpenAI's docs make no claim that GPTBot or OAI-SearchBot render JavaScript, and independent tests with methodology, including a December 2024 study of 569 million GPTBot fetches and an October 2026 test, found no JavaScript execution. The nuance: ChatGPT also retrieves through partner indexes, and Google's and Bing's indexes are rendered, so rendered content can still reach ChatGPT through those paths. JavaScript matters less for ChatGPT than the tests alone suggest, but its own crawlers see the raw HTML.

Claude: no. Anthropic's older fetch documentation stated plainly that its fetcher could not render pages; that sentence has since been removed from the current page, so the quote is stale. But an independent October 2026 test with methodology found Claude still saw only the title and footer on a JavaScript-rendered page. Treat Claude as unable to render until Anthropic says otherwise.

Perplexity: undocumented, assume no. Perplexity publishes no statement on JavaScript rendering. The best available evidence is the December 2024 traffic study that found no major AI crawler executing JavaScript, and that evidence is now dated. The practical rule stands: if it is not in the initial HTML, Perplexity cannot rely on it.

Meta's crawlers: no. Meta's own crawlers do not execute JavaScript, confirmed by network analysis and an October 2026 controlled test page. The nuance, same as ChatGPT: Meta AI routes some queries through Google and Bing supplier indexes, both rendered, so rendered content can reach Meta AI that way. JavaScript matters less for Meta AI than for Claude.

Copilot and Bing: partial. Bing supports JavaScript with limits, and third-party summaries of Bing's webmaster guidelines say dynamic rendering is recommended for large sites. Treat Bing as better than the AI-only crawlers and worse than Google.

The pattern is simple: the only crawler you can count on to run your scripts is Google's. Everyone else reads the HTML your server sends.

Fix it in this order

1. Look at what the crawlers see

Fetch a product page the way a crawler does, with no JavaScript, replacing yourdomain.com with your actual domain:

curl -s https://[yourdomain.com]/products/your-product | head -c 2000

Read the raw HTML. If the product name, price, and availability are not in there, no AI crawler except Google's sees them. The browser version of the same check: open view-source:https://[yourdomain.com]/products/your-product and search for the price. What you find in view-source is what Claude sees.

2. Server-side render the critical facts

The fix is to put the facts that matter for a buying answer into the initial HTML: product name, price, currency, availability, and the product description. This usually means server-side rendering the product template, or pre-rendering product pages at build time. You do not need to server-render the whole interactive experience; the cart drawer and the image zoom can stay client-side. What has to be in the first HTML response is the information an engine would quote.

3. Keep the product schema in the initial HTML too

The JSON-LD product markup has the same requirement: it must be in the server-rendered HTML, not injected by a script after load. A script tag in the head or body of the initial response works; a tag your JavaScript framework adds at runtime does not. The full reference is in our product schema guide for AI search.

4. Do not block your scripts and stylesheets for Googlebot

Google needs your JavaScript and CSS files to render the page. Check your robots.txt for disallow rules on script or asset directories. Blocking them does not keep anything secret; it just guarantees Google renders a broken page.

The fundamentals

These mechanics are shared across every engine and covered in full in their own guides:

A hypothetical example

Say you run a furniture store on a headless React storefront. The product pages look beautiful in a browser. You run the curl test from step 1 and the raw HTML is an empty div and a bundle script tag; the $1,299 price appears nowhere. Google indexes the page weeks late after rendering. Claude sees an empty shell and never mentions the product. ChatGPT's own crawlers see the same shell, though a query can occasionally surface the product through Google's rendered index. You move the product template to server-side rendering so the name, price, and availability ship in the first response, and the next crawl shows every engine the same facts.

What this guide does not cover

This guide tells you what crawlers see, not how to rebuild your frontend. The choice between server-side rendering, static generation, and dynamic rendering is an engineering decision with real tradeoffs, and it is outside this guide's scope. It also does not cover monitoring: frameworks update, templates regress, and a page that server-rendered last quarter can silently go client-side again. And visibility is not purchase: once engines can read your pages, the transaction layer is what lets an agent complete the checkout.

Frequently Asked Questions

Do AI search engines render client-side JavaScript like Googlebot does?
Most do not. While Googlebot renders JavaScript in a headless browser, crawlers like ClaudeBot, GPTBot, and PerplexityBot fetch raw HTML without executing scripts.
How can I check what an AI crawler sees on my single-page application?
Run a curl request with the crawler user-agent or disable JavaScript in your browser developer tools. What loads initially in the source HTML is all the crawler can read.
What is the recommended fix for a JavaScript-heavy ecommerce store?
Implement Server-Side Rendering or dynamic pre-rendering for product and informational pages. This delivers fully rendered HTML to bots on their initial request.

Check your own brand now

Run the free scan. It takes seconds, no signup, and shows what AI crawlers actually see on your product pages: aizii.ai/aeo-scan

Run the free scan