Agent view — served from /javascript-and-ai-crawlers.md.

Guide · updated September 2026

Do AI crawlers execute JavaScript?

Most do not. AI crawlers typically fetch raw HTML and never run your JavaScript, so any content that appears only after the page hydrates is invisible to them. On a single-page React, Vue or Angular application this frequently means the crawler receives an empty shell where your product and pricing should be.

What does an AI crawler actually see on my site?

Whatever your server returns before any script executes. If you use server-side rendering or static generation, that is your full page and you are fine. If you render on the client, it is often a div with an id and nothing inside it.

what a client-rendered SPA returns
<!DOCTYPE html>
<html>
  <head><title>Acme</title></head>
  <body>
    <div id="root"></div>
    <script src="/static/js/main.8f2a1c.js"></script>
  </body>
</html>

There is no headline, no product description, no price. An assistant asked about your company falls back on whatever else it can find — usually a directory listing, a years-old press release, or a competitor’s comparison page that mentions you unfavourably.

How do I check what my page looks like without JavaScript?

Three ways, in ascending order of effort. Fetch the raw HTML and read it. Disable JavaScript in your browser and reload. Or use our Agent View tool, which shows the rendered page and the crawler’s view side by side.

the thirty-second version
$ curl -s https://yourdomain.com/pricing | wc -c
$ curl -s https://yourdomain.com/pricing | grep -o "<h1>.*</h1>"

If the byte count is small and the grep returns nothing, your H1 does not exist until JavaScript runs. That is the whole diagnosis.

Which frameworks are worst affected?

The framework matters less than the rendering mode you chose within it. Next.js and Nuxt render on the server by default and are usually fine; the same frameworks in a fully client-side configuration are not.

SetupDefault behaviourRisk
Create React App / Vite SPAClient-side onlyHigh
Angular without SSRClient-side onlyHigh
Vue SPA without NuxtClient-side onlyHigh
Next.js App RouterServer componentsLow
Nuxt 3 universalServer-renderedLow
Astro / Eleventy / HugoStatic HTMLNone
WordPress, Shopify, WebflowServer-renderedNone

A common false positive: a mostly server-rendered site with one critical component — pricing tables and product specifications are the usual suspects — loaded client-side after a data fetch. The page passes a casual check and still hides the fact that matters most.

How do I fix it?

Four options, roughly in order of how much work they are.

  1. Server-side rendering. The proper fix. Next.js, Nuxt or Angular Universal render the full page on the server. Typically one to three weeks on an existing SPA.
  2. Static generation. If your content does not change per request, pre-render at build time. Faster and cheaper than SSR, and better in every respect for pages like pricing and documentation.
  3. Prerendering for bots. A service renders the page and serves the HTML to crawlers. Quick to deploy, but you are maintaining a second rendering path and cloaking rules deserve care.
  4. Markdown mirrors. Publish a .md version of each page and advertise it. Does not fix the HTML, but gives any agent that looks a clean source. Cheapest partial mitigation.

If a full migration is not realistic this quarter, static-generate the ten pages that describe what you sell. That captures most of the benefit for a fraction of the work.

Does this affect Google differently from ChatGPT?

Yes, and this is where teams get caught out. Google has run a rendering pipeline that executes JavaScript for years, so a client-rendered site can rank in Google while being invisible to AI crawlers that do not render.

That is precisely why the problem goes undetected: Search Console looks healthy, rankings hold, and AI-sourced traffic quietly never arrives. Your SEO tooling is not lying to you, it is measuring a different crawler.

Where this is contested

Crawler capabilities are not published in detail and they change. Some AI crawlers may render JavaScript in some circumstances, and any absolute claim about a specific bot on a specific date should be treated cautiously — including ours.

What is not in dispute is the direction of the risk. Server-rendered content is readable by every crawler including the ones that render. Client-rendered content is readable only by some. There is no scenario where rendering client-side is the safer choice.

Questions

Frequently asked

Does ChatGPT render JavaScript when browsing?

Most AI crawlers fetch raw HTML without executing JavaScript. Capabilities are not published in detail and may change, but content that requires JavaScript to appear is at minimum at risk of being invisible, whereas server-rendered content is readable by every crawler.

Why does my site rank on Google but not appear in AI answers?

Google has executed JavaScript in its rendering pipeline for years. Many AI crawlers do not. A client-rendered site can therefore rank normally while returning an empty page to the crawlers that feed AI assistants.

Is server-side rendering necessary for AI visibility?

Not strictly, but it is the most reliable fix. Static generation works equally well for content that does not change per request. Prerendering for bots and markdown mirrors are partial mitigations.

How do I test if my content is visible without JavaScript?

Fetch the page with curl and check whether your headline and body copy are present in the returned HTML, or disable JavaScript in your browser and reload. If the page is empty, crawlers that do not render see the same thing.

Does this affect single-page applications only?

No. A mostly server-rendered site with one client-loaded component has the same problem for that component. Pricing tables and product specifications are the most common casualties, and they are usually the pages that matter most.

Related

Next

Content negotiation

Serve clean markdown and cut token cost by 90%.

Read →

AI crawlers & robots.txt

Block training, allow citations.

Read →

Agent View

See your page as a crawler does, side by side.

Read →

See how AI reads your site

Eight checks against your domain in about fifteen seconds. No email.