πŸ”„

CSR/SSR

Performance Auditor

Detects if website uses Client-Side or Server-Side Rendering

SEOPerformance
30 credits
Per check
~30 seconds
Average runtime
Active
Status

Run this auditor

3 of 3 free audits left today

See what CSR/SSR finds on your site. No sign-up needed.

How it works

  1. Render with JavaScript β€” loads the audited URL as 37AuditsBot in a headless Chromium with JavaScript enabled, waits for the network to go idle plus a short grace period, and keeps the rendered HTML. A blocked navigation (HTTP 403, HTTP 429 or a Cloudflare challenge) ends the audit with 590; no response, or an HTTP status of 400 or more, ends it with 500. A browser error, after one relaunch on a crash, ends it with 501.

  2. Render without JavaScript β€” loads the same URL in a second context with JavaScript disabled and keeps that HTML too.

  3. Compare β€” computes the size difference ratio |sizeWithJs βˆ’ sizeWithoutJs| / max(sizeWithJs, sizeWithoutJs) (two empty documents count as no difference).

  4. Rules β€” a ratio above 20% warns (300): the content is built in the browser. A ratio of 20% or less is SUCCESS (200): the content is delivered by the server. The message of either outcome gives both sizes and the ratio.

What this auditor validates

Every row maps to one checkRule* method and one CheckCode, in the order the auditor runs them. CheckCode suffixes use status ranges: 200 success, 300–399 warning, 500–599 error.

CheckCodeStatusWhen it firesRecommendationWhy it matters
37A-CsrSsrAuditor-300WARNINGThe documents rendered with and without JavaScript differ in size by more than 20%.Serve the content of {url} in the HTML itself (server-side rendering, static generation or pre-rendering in your framework) so the page delivered without JavaScript carries more than {sizeWithoutJs} characters of the {sizeWithJs} characters rendered with it and the difference drops below 20.0%.Crawlers, AI assistants and social previews that do not run JavaScript see a nearly empty page, so client-rendered content is indexed late or not at all, and every visitor waits for the scripts to download and run before seeing anything.
37A-CsrSsrAuditor-200SUCCESSThe documents rendered with and without JavaScript differ in size by 20% or less. Message gives both sizes and the ratio, for example {url} renders 48,210 characters with JavaScript and 47,902 characters without, a 0.6% difference within the 20.0% threshold, so its content appears to be server-side rendered (SSR).β€”β€”
37A-CsrSsrAuditor-500ERRORThe JavaScript-enabled navigation got no response from the browser, or answered with an HTTP status of 400 or more (other than a block).Make sure {url} answers with HTTP 2xx, then run the audit again. Last error: {error}.β€”
37A-CsrSsrAuditor-501ERRORThe headless browser failed to render the page, after one relaunch on a crash.Make sure {url} loads in a headless Chromium browser, then run the audit again. Last error: {error}.β€”
37A-CsrSsrAuditor-590ERRORThe audited page answered HTTP 403, HTTP 429 or a Cloudflare challenge, so 37AuditsBot was blocked before it could read the page.Allow 37AuditsBot in your firewall or bot protection: allowlist its user agent, or verify its Web Bot Auth signature. See https://www.37audits.com/bot.While 37AuditsBot is blocked this audit cannot look at the site, so problems on it go unreported.

Output Documentation

StatusDescriptionTest logic
SUCCESSThe content is delivered by the serverSize difference ratio of 20% or less between the renders with and without JavaScript (200).
WARNINGThe content is built in the browserSize difference ratio above 20% (300).
ERRORThe auditor could not render the pageNo response or HTTP status of 400 or more on the JavaScript-enabled render (500); browser render failure (501); site blocked 37AuditsBot (590).

Every SUCCESS and WARNING check carries the measured values in data: sizeWithJs, sizeWithoutJs, sizeDifference (characters), ratio, threshold (0.2) and isCsr.

Risks and Considerations

Why rendering strategy matters

  • Search engines do render JavaScript, but later and with a smaller budget than plain HTML; client-rendered pages are often indexed days after server-rendered ones, or with missing content when a script fails.

  • Many AI crawlers, link unfurlers (chat apps, social networks) and accessibility tools read the raw HTML only. A client-rendered page gives them an empty shell.

  • Visitors on slow networks or devices wait for every script before the first content appears, which raises Largest Contentful Paint and bounce rates.

A size heuristic, not a framework detector

  • The auditor compares the size of the two rendered documents, nothing else. A page whose scripts add a cookie banner, a chat widget or large tracking markup can cross the 20% threshold while its main content is server-rendered; a client-rendered page that replaces a large placeholder with content of a similar size can stay under it.

  • The threshold is a fixed constant (20%) and is not configurable.

  • Both renders wait for the network to go idle plus 1.5 seconds; content loaded after that, on scroll or on interaction, is not counted.

Changes from the previous version of this auditor

  • A page whose JavaScript-enabled navigation answers with an HTTP status of 400 or more is no longer rendered and compared as if it were the site: the audit ends with ERROR 500.

  • A browser failure that survives the one relaunch is reported as ERROR 501 with that code, instead of an error check without a code.

  • The verdict thresholds are unchanged: a size difference above 20% still warns, 20% or less still succeeds.

What this auditor does not check

  • Whether the server-rendered HTML is also correct, complete or hydrated without errors.

  • Pages beyond the audited URL; a site can mix strategies per route.

  • Which framework or rendering mode (SSR, SSG, ISR, streaming) the site uses.

This documentation is built and hosted on Mintlify, a developer documentation platform.

Source: docs.37audits.com

Ready to start auditing?

Add this auditor to your monitoring setup and start identifying issues on your websites today.

Β© 2026 37 Audits. All rights reserved. Audit your websites with confidence.

Supported by

Made with ❀️ in Floripa