Why AI crawlers can’t read JavaScript websites

TL;DR

  • AI crawlers for ChatGPT, Claude, and Perplexity fetch only raw HTML and do not execute JavaScript at all.
  • Passionfruit analyzed 500 million GPTBot fetches and found zero evidence of JavaScript execution. Client-rendered pages look like empty shells to the crawler.
  • The diagnostic is View Source (not Inspect Element): if your headline and body are missing from the raw HTML, AI engines cannot see them either.
  • Google AI Overviews is the exception because Googlebot executes JavaScript, so a client-rendered page can surface in AI Overviews but stay invisible to ChatGPT and Perplexity.
  • Fix without a rebuild by switching to server-side rendering (Next.js, Nuxt, Angular Universal) or a pre-rendering service that serves static snapshots to bots.

The site looked finished from the screen: clean design, fast feel, smooth animations, a modern template from a popular builder.

A year of publishing, and AI tools never cited it. Older, uglier competitors got mentioned all the time.

Open the page in a browser and right-click “View Source.” That is where the raw HTML lives — the version of the page a machine sees before any JavaScript runs.

It was almost empty.

A handful of script tags. A loading spinner. A placeholder div. The article — the thing human readers see on screen — was nowhere in the raw HTML. It was being built by JavaScript in the browser, after the page loaded.

To a human visitor, the site looked finished. To an AI crawler, it looked like a window with the curtain still drawn.

That curtain is the problem.

Why does my modern-looking website get ignored by AI?

Most AI crawlers — including the ones behind ChatGPT, Claude, and Perplexity — fetch raw HTML only. They do not run JavaScript. If your site builds its main content with JavaScript in the browser, the crawler sees an empty shell. No product names. No prices. No article body. Just a blank frame where the content should be.

A Passionfruit analysis of more than 500 million GPTBot fetches found zero evidence of JavaScript execution. Not “some.” Not “a few skipped it.” Zero.

This is not a bug OpenAI plans to fix in the near term. GPTBot traffic grew 305% year over year, and AI bots now represent about 4.2% of all HTML page requests on the web. They are getting busier, not smarter about JavaScript.

Googlebot is the exception. It runs a full headless Chrome browser and executes JavaScript before deciding what to index. So a page can rank fine on Google and still be invisible everywhere else.

That split is what creates the confusion. You look at your rankings, you see green, you assume AI can read you too. Most of the time, it cannot.

How do I check if AI engines can read my site?

Right-click on your page and choose View Source — not Inspect Element. That shows you the raw HTML the crawler sees. If your main headline, body copy, and prices are in that raw HTML, you are fine. If the text you see on screen is missing from View Source, the AI crawlers are missing it too.

Here is the step-by-step.

Open your homepage in a browser. Scroll down to make sure the page looks the way you expect. Right-click on empty space and choose “View Page Source.” A new tab opens with text that looks like code.

Now use the browser’s find function — Ctrl-F or Cmd-F — and search for the first five words of your headline. If those words are in the raw HTML, the crawler sees them.

If the search finds nothing, the crawler sees nothing either.

Repeat for your main body paragraph. Repeat for your product names if you have a shop. The test takes three minutes per page. That same raw HTML is what how AI engines find content describes the engines pulling from in the first place.

Which website builders have this problem?

It depends less on the platform name and more on how it renders pages. React, Vue, and Angular apps that generate content in the browser are the most exposed. Many Wix and Squarespace sites render server-side and are fine. Some modern page builders and app-style templates render client-side and are not. Platform name does not predict risk — check.

This surprises people. “I use Squarespace, so I should be safe” is not quite true, and “I use React, so I am invisible” is not quite true either.

The question is where the content gets assembled. If the server sends a fully-written page to the visitor, the crawler gets the same page. If the server sends a skeleton and the browser fills in the words, the crawler gets the skeleton.

The View Source test is the only honest answer. Your builder’s marketing page cannot tell you. Your developer might not have thought to check. The raw HTML does not lie.

Does this mean AI will never cite my site?

Not necessarily. Google AI Overviews draws from Google’s search index, and Googlebot does execute JavaScript. So a client-rendered page can still show inside AI Overviews if Google has indexed it. ChatGPT and Perplexity are stricter — they read only raw HTML directly. One engine may cite you. Three others may never see you.

That uneven picture is what catches people out.

A business might appear in an AI Overviews card on google.com and take that as proof “AI can find me.” They stop worrying. But if the same question is asked inside ChatGPT, or Perplexity, or Google’s AI Mode tab, the site is silent. Rendering is one invisibility cause. The four doors blocking crawlers is another route to the same blackout.

One surface out of four. Worth something — but not what most owners think they are seeing.

For businesses that depend on conversational AI tools rather than Google specifically, the JavaScript problem is closer to a full blackout.

How do I fix it without rebuilding everything?

Two practical routes. Switch the site to server-side rendering — the content is baked into the raw HTML before it reaches the crawler. Or use a pre-rendering service, which creates a static HTML snapshot for crawlers while normal visitors still see the live site. Both cost less than a full rebuild and usually take days, not weeks.

Server-side rendering is the cleaner long-term answer. For React sites, that usually means Next.js. For Vue, Nuxt. For Angular, Angular Universal. These frameworks render the page on the server first, so the crawler receives the finished HTML. The visitor’s browser then takes over.

Pre-rendering is the gentler first step. A service runs your site on a schedule and captures a static HTML version of each page. That snapshot gets served to bots, while regular visitors still get the fully interactive one. No rebuild required. Most services cost under $100 a month for a small site.

If your site is Wix or Squarespace on a standard template, you probably do not need either of these. Those templates already render server-side for most pages. Check with View Source to confirm, then move on.

If your site is a custom build, a React storefront, or a page-builder template that loads content in the browser, you have work to do. This is the fix to ask about.

Other questions worth answering

Does ClaudeBot treat JavaScript pages any differently than OpenAI’s bots?

No. The 2026 Writesonic study of 60-plus webpage elements across six major AI platforms confirmed ClaudeBot fetches raw HTML only — exactly like OpenAI’s crawlers.

The difference is volume, not capability. ClaudeBot roughly doubled its crawl rate between Q3 2025 and Q1 2026. More pages get fetched, but the same JavaScript-blind rule applies to every fetch.

Once I move to server-side rendering, how quickly do bots pick up the change?

Perplexity moves fastest — its 2026 documentation says new content can be discovered and cited within 1 to 2 weeks. ChatGPT depends on OAI-SearchBot’s recrawl schedule, which OpenAI does not publish a number for. Google AI Overviews waits for Googlebot to re-fetch and re-index, which can be days for high-priority pages or weeks for the rest.

What kinds of content remain hidden from bots even after a server-side rewrite?

Three kinds slip through even on a server-rendered site:

  • content behind a login wall or paywall
  • content loaded only when a user clicks (modals, accordions, infinite-scroll items)
  • pages blocked by a CDN bot rule (Cloudflare and AWS WAF often block AI crawlers by default in 2026)

Each one looks fine in a normal browser, but the engines behind ChatGPT, Claude, and Perplexity never see it.

Are bots from ChatGPT and Claude visiting my pages more often than Googlebot?

Yes, by a wide margin. Alli AI’s 2026 study of 24.4 million proxy requests across 69 websites found ChatGPT-User alone made 3.6 times more requests than Googlebot.

Counted together, the bot population collectively made the same 3.6x multiple. Your pages are fetched more often by these bots than by Google’s.

How should you check whether AI crawlers can see your site?

Spend five minutes on the View Source test for your three most important pages. If the content is in the raw HTML, you are not the person this article is for. If it is missing, write down what is missing. Take that list to your developer or site builder. Fixing this is a technical job, not a content job.

Three pages to test first.

Your homepage. The page most people land on.

Your top-earning page. Your best product, your most-booked service, your most-read article.

Your About page. The page AI engines reach for when they want to know who you are.

If all three pass the test, you have a content problem or a discoverability problem, not a rendering problem. That is a different kind of good news.

If one fails, or all three fail, do not start writing better headlines. The headlines you already wrote are fine. The crawlers just cannot see them.

You are not doing worse content than your competitors. You are sitting behind a curtain they are not. The moment you open it, the same content starts showing up in the same answers.

If you want a calm second pair of eyes on whether your site has the curtain problem, you can contact me. I will tell you what a realistic fix looks like for your budget. No pitch. Just a clear read on what AI can and cannot see on your pages today.

Similar Posts