Guide : Rendering

How Google's Web Rendering Service runs votre JavaScript to construire lune page it indexes — plus the rendering options (CSR, SSR, SSG, hydration, ISR, edge, dynamic) and leur SEO trade-offs.

Première publication : 23 juin 2026 · Dernière mise à jour : 3 août 2026 · Advanced
Langues
1 indice probant sur cette page

Rendering is the step où Google runs votre JavaScript in an evergreen, headless Chrome — the Web Rendering Service — to construire the DOM it indexes. It se produit pour essentially every page, usually dans seconds-to-minutes, so the old 'two waves of indexation' model is largely outdated and there's aucun per-page render budget. The renderer is stateless, doesn't interact with lune page, and caches hard. Votre rendering option decides votre SEO risk: SSR, static/prerendering, and hydration are safe; complet rendu côté client is the risky un; dynamic rendering is a workaround.

TL;DR — Google renders votre JS in an evergreen, headless Chromium — the Web Rendering Service — to construire the DOM it indexes. It se produit pour essentially tout pages, usually dans seconds-to-minutes, so “two waves of indexing” is largely outdated and there’s aucun per-page render budget. The WRS is stateless, declines permission prompts, doesn’t interact with lune page, and caches aggressively. Votre rendering option decides votre SEO risk: SSR / static / prerendering / hydration are low-risk; complet CSR is the risky un; dynamic rendering is a workaround Google advises contre. Pour the practical JS problems ce creates, voir JavaScript SEO.

Où rendering sits

Google is explicit que JavaScript apps déplacer via three phases: “Google processes JavaScript web apps in three principal phases: 1. Exploration 2. Rendering 3. Indexation.” Evidence for this claim Google documents crawling, rendering, and indexing as the three main phases for processing JavaScript web apps. Scope: Google Search processing of JavaScript web applications; the phases can overlap operationally. Confidence: high · Verified: Google Search Central: Understand the JavaScript SEO basics Rendering is the bridge. Exploration récupère the raw HTML; rendering runs the JavaScript to construire the finished DOM; indexation reads que rendered DOM, and quelconque nouveau liens the renderer trouve obtenir fed back into exploration. In Google’s words: “During the explorer, Google renders lune page and runs quelconque JavaScript it trouve en utilisant a recent version of Chrome, similaire to how votre navigateur renders pages vous visit.”

Rendering is the bridge between fetching a URL and indexing its finished DOM; parity, interaction, state, and timing can break that bridge. Source : JavaScript SEO

Google crawls a URL, renders its JavaScript to build the DOM, and indexes the result. Four practical failure modes branch from rendering: parity when the rendered DOM differs from expectations, interaction when content requires a scroll or click, state when content relies on cleared cookies or storage, and timing when content is deferred behind slow JavaScript.

© Patrick Stox LLC · CC BY 4.0 ·

The Web Rendering Service

Google renders in the Web Rendering Service (WRS) — a headless Chrome that’s evergreen: “Pendant que Recherche Google runs JavaScript with an evergreen version of Chromium…” it tracks current Chrome, so modern JavaScript and CSS fonctionnalités fonctionner.

The catch is que the WRS is a peculiar navigateur, and its quirks causer la plupart réel problems:

  • It’s stateless. As I put it in my JavaScript SEO guide, “Google loads each page stateless like it’s a fresh load.” Google’s docs spell out the pieces: “Local Storage and Session Storage data are cleared across page loads” and “HTTP Cookies are cleared across page loads.” Don’t rely on anything persisted client-side to serve votre content.
  • It declines permissions. “Expect Googlebot to decline utilisateur permission requêtes.” Content gated behind a geolocation, notification, or camera prompt won’t render.
  • It doesn’t interact. Aucun scrolling, clicking, or hovering — so content que seulement loads on un of ceux events is invisible by par défaut. (Ce is the root of la plupart lazy-load and infinite-scroll bugs; the fixes live on the JavaScript SEO page.)
  • It caches aggressively. “Googlebot caches aggressively in order to reduce network requêtes and resource usage. WRS may ignore mise en cache headers.” Que signifie Google peut run an outdated version of votre JS or CSS. Fix it with fichier fingerprinting — version votre filenames (app.4f2a9c.js) so a content modifier forces a fresh récupérer.

A 2026 experiment: five seconds n’est pas a hard execution wall

A third-party WRS experiment reported in July 2026 testé delayed JavaScript and network activity plutôt que assuming a five-second timeout. The observed renderer utilisé a virtual clock and completed delayed requêtes que took roughly 6–12 seconds of réel temps. The utile result is narrow: it contradicts the courant audit rule que anything occurring après exactly five seconds is automatically invisible to Google. It fait pas prove que every delayed dependency va finish, que Google waits indefinitely, or que slow client-side delivery is safe.

Lire the experiment and its methodology as third-party evidence alongside Google’s official statement que render-queue timing has aucun publié fixed delay. En pratique, tester the final DOM and requested resources. A manquant API réponse, interaction requirement, blocked script, or state dependency remains a réel rendering échec même quand a stopwatch-based “five-second rule” n’est pas.

Is “two waves of indexing” encore a chose?

Pour années the mental model was “two waves of indexing”: Google voudrait index the raw HTML premier, alors come back days or weeks plus tard to render and index the JavaScript content. Que model is now largely outdated. Martin Splitt has said the two-waves idea plays moins and moins of a role, que nombreux pages go via the render phase même quand ils don’t rely on JavaScript, and que exploration, rendering, and indexation are converging over temps.

En pratique, rendering se produit pour essentially every page, and it’s usually fast. Google’s current documentation dit a crawled page “may stay on ce queue pour a few seconds, but it peut prendre plus long que que” — there’s aucun publié fixed delay or timeout. Evidence for this claim Google says a crawled page may stay on the rendering queue for a few seconds, but it can take longer than that. Scope: Google's rendering queue for a page that returns a 200 status and is eligible for rendering. The source gives a variable duration, not a fixed timeout or service-level guarantee. Confidence: high · Verified: Google Search Central: rendering-queue duration Supports: A page may remain on the rendering queue for a few seconds or longer. As a historical données point, Google staff (Martin Splitt and Tom Greenaway) une fois put the figure at a median of à propos de five seconds, with the 90th percentile in minutes — pas the “weeks” the old fear implied. I cite que figure in my JavaScript SEO guide, but treat it as a dated conference données point plutôt que a current publié metric — Google hasn’t republished it as an ongoing number, and the queue-timing quote ci-dessus is the current official framing.

And there’s aucun render budget in the façon personnes imagine. Google doesn’t track a per-page “how expensive was this to render” score vous devez conserve. Rendering is cheap at Google’s scale — optimize pour votre utilisateurs and performances, pas a phantom render budget.

The rendering options

“Where is the HTML built?” is the question que decides votre SEO risk. The complet menu:

The useful distinction is where initial HTML is produced and what work remains for the browser. Source : Rendering

Static generation produces HTML at build time. Server-side rendering produces it per request. Client-side rendering relies on browser JavaScript. Hydration attaches client behavior to server or static HTML. Dynamic rendering varies output by requester and is treated as a workaround.

© Patrick Stox LLC · CC BY 4.0 ·

  • Rendu côté client (CSR). Le serveur sends a near-empty shell; le navigateur (or WRS) runs JavaScript to construire everything. Ce is “the la plupart problematic un … complet rendu côté client où tout of the rendering se produit in le navigateur.” It peut fonctionner, but you’re betting everything on the render succeeding, and it’s the slowest to obtenir indexé.
  • Rendu côté serveur (SSR). Le serveur builds the complet HTML pour chaque requête. Content is in the raw HTML, so it’s low-risk pour search.
  • Static site generation (SSG) / prerendering. HTML is construit une fois at deploy temps. Lowest risk — content is in the raw HTML and it’s fast.
  • Hydration (isomorphic / universal). Vous SSR or SSG the premier paint, alors JavaScript “hydrates” it in le navigateur to ajouter interactivity. Ce is ce que la plupart modern frameworks do, and it’s low-risk pour content — simplement watch pour hydration mismatches que blank out or replace content.
  • Incremental Static Regeneration (ISR). Static pages regenerated on a schedule or on demand. Comme SSG, with fresher content — bon pour grand catalogs.
  • Edge rendering. SSR run at CDN edge nodes — même low risk as SSR, with faster time-to-first-byte pour a global audience.
  • Streaming SSR. HTML streamed to le navigateur in chunks as it’s ready. Low-risk, but assurez-vous indexable content isn’t trapped seulement in a late or deferred chunk.

My bottom line from my JavaScript SEO guide: “Quelconque kind of SSR, static rendering, and prerendering setup is going to be fine pour moteur de recherches. Gatsby, Suivant, Nuxt, etc., are tout great.” The framework matters moins que the rendering mode vous ship — the même Suivant.js app is safe or risky selon si vous serve SSR/SSG or complet CSR.

Dynamic rendering — a workaround, pas a strategy

Dynamic rendering signifie detecting bots and serving les a prerendered, JavaScript-free version pendant que utilisateurs obtenir the client-side version. Google is now blunt à propos de it: “Dynamic rendering was a workaround and pas a long-term solution pour problems with JavaScript-generated content in moteur de recherches,” and “Dynamic rendering is a workaround and pas a recommended solution, parce que it creates additional complexities and resource requirements.” Evidence for this claim Google describes dynamic rendering as a workaround and does not recommend it as a long-term solution. Scope: Google Search guidance for JavaScript-generated content; server-side rendering, static rendering, or hydration are the recommended alternatives. Confidence: high · Verified: Google Search Central: Dynamic rendering as a workaround I agree, and I toujours have — to be honest I jamais recommended it, and I’m glad Google now recommends contre it aussi. It’s serving différent content to bots and utilisateurs, qui is awfully fermer to cloaking. Reach pour SSR, static, or hydration à la place.

Un wrinkle: Bing encore suggests dynamic rendering. Microsoft dit “bingbot is généralement able to render JavaScript” but that doing it at scale is hard, so “we recommend dynamic rendering as a great alternative pour websites relying heavily on JavaScript.” The practical takeaway: SSR/SSG garde les deux engines happy and sidesteps the whole debate.

Ce que cela signifie pour votre content

Rendering decides si Google ever sees votre JavaScript content — but seeing it is seulement half the job. Une fois lune page is rendered, the practical concerns are réel <a href> liens, field-specific parity entre raw and rendered HTML, robots-directive stage order, lazy content, infinite scroll, and soft-404s. Ceux tout live on the JavaScript SEO page, with the testing workflow (Inspection d’URL’s rendered HTML, screenshot, and console).

Ce is the rendering stage of the search pipeline. Pour the stages autour it, voir exploration (how pages obtenir récupéré) and indexation (ce que se produit to the rendered page suivant), or the How Search Fonctionne hub pour the whole journey.

Un audit rule is worth keeping ici: rendered is a state, pas a universal winner. Pour corps content and crawlable liens, the rendered DOM montre ce que successful JavaScript ajouté or supprimé. Pour titles and descriptions, it montre additional inputs, pendant que Google may encore generate a title lien or snippet from autre sources. Pour robots directives, a raw noindex may prevent rendering, so JavaScript removal is asymmetric. Pour canonical, Google advises en utilisant un source or un JavaScript-set valeur plutôt que modification an existing valeur. And JavaScript ne peut pas modifier the HTTP réponse status déjà reçu. Garder ceux columns separate in evidence and utiliser Google’s current JavaScript SEO guidance pour the field-specific behavior.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.