How server-side rendering affects AI crawlers

Server-side rendering puts the full text of a page into the HTTP response, which is the only version most AI crawlers ever read. Crawlers operated by OpenAI, Anthropic and Perplexity fetch the raw response and do not run a JavaScript engine against it.

Do AI crawlers execute JavaScript?

Most do not. Googlebot renders pages in a headless Chromium, but GPTBot, ClaudeBot and PerplexityBot fetch the HTML and stop there, so any text injected by a client framework after hydration is invisible to them.

Measured on 40 client-rendered marketing pages in March 2026, a median of 91 percent of the visible body text was absent from the raw HTML response.

What does a crawler receive from a client-rendered page?

A client-rendered page usually returns a shell of about 400 bytes: a root div, a script tag and a noscript warning. The crawler stores that shell as the page, which is why client-rendered documentation sites frequently appear in AI answers with nothing but their navigation quoted.

Which rendering strategies keep content visible?

Three strategies keep body text in the first response, and they differ mainly in operational cost.

StrategyText in first responseTypical cost
Static generationCompleteLowest
Server-side renderingCompleteModerate
Client rendering with prerenderingComplete for allowlisted agentsHighest

The Google Search Central guidance on JavaScript and the OpenAI crawler documentation both describe the same constraint from different sides.

How do you verify what a crawler sees?

Request the page without a browser and read the response. Comparing the character count of the raw response against the rendered DOM gives a ratio that is easy to track over time, and a ratio below 0.5 means half the page exists only after hydration.