Guide : Rendering
Comment Google's Web Rendu Service exécute votre JavaScript à construire lune page il indexes — plus le rendu options (CSR, SSR, SSG, hydration, ISR, edge, dynamic) et leur SEO trade-offs.
1 indice probant sur cette page
- Outil en ligne associéRaw vs. Rendered HTML Checker
Rendu est le étape où Google exécute votre JavaScript dans an evergreen, headless Chrome — le Web Rendu Service — à construire le DOM il indexes. Il se produit pour essentially chaque page, généralement dans seconds-à-minutes, donc le old 'deux waves de indexation' model est largely outdated et il y a aucun per-page rendre budget. Le renderer est stateless, ne fait pas interact avec lune page, et caches difficile. Votre rendu option decides votre SEO risque: SSR, static/prerendering, et hydration sont sûr; complet rendu côté client est le risky un; dynamic rendu est a workaround.
TL;DR — Rendu est le étape où a moteur de recherche exécute votre page’s code — notamment JavaScript — dans a navigateur à construire le finished page, donc il peut voir votre contenu et liens. Google fait ce pour basically chaque page dans son Web Rendu Service, et il généralement fonctionne. Comment votre site produces son HTML (serveur, navigateur, or à construire temps) decides comment sûr vous sont.
Ce que rendering is
Quand vous ouvrir une page, votre navigateur downloads some HTML, alors exécute le CSS et JavaScript à construire lune page vous en réalité voir. Moteur de recherches faire le même chose. Rendu est le étape où a moteur de recherche exécute votre page’s code à construire le final version de lune page, donc il peut lire le contenu et suivre le liens le façon vous peut.
It sits in the middle of how Google handles une page:
- Explorer — Google downloads le raw HTML de votre URL.
- Rendre — Google exécute lune page’s JavaScript dans a navigateur à construire le finished page.
- Indexer — Google lit que finished page et fichiers il away.
Si votre contenu seulement montre up après JavaScript exécute, Google a à rendre lune page successfully avant il peut voir il. Donc rendu est le bridge entre fetching a page et understanding il.
Google renders in a réel (but unusual) navigateur
Google’s renderer est appelé le Web Rendu Service (WRS). c’est a headless Chrome c’est “evergreen,” meaning il garde up avec le actuel version de Chrome et prend en charge modern web fonctionnalités. Donc le old fear — “Google ne peut pas exécuter JavaScript” — n’est pas vrai. Il peut. Preuve à l’appui de cette affirmation Google Search runs JavaScript with an evergreen version of Chromium. Portée : Google's Web Rendering Service; browser support does not guarantee that every application-specific interaction or resource will work. Niveau de confiance : élevé · Vérifié : Google Search Central: Fix Search-related JavaScript problems
c’est simplement an unusual navigateur. Il ne fait pas scroll or click, il forgets tout entre pages (aucun staying logged dans), et il caches fichiers difficile. Ceux quirks sont où la plupart surprises come depuis, et le Avancé tab covers les.
The big choice: où votre HTML obtient construit
The unique la plupart important decision pour le SEO is où votre page’s HTML is produced:
- Dans le navigateur (rendu côté client) — le serveur sends a near-empty page et JavaScript construit tout. Riskiest pour recherche.
- On le serveur (rendu côté serveur) — le serveur sends a complet page. Sûr.
- À construire temps (static / prerendering) — pages sont construit une fois, ahead de temps. Safest et fastest.
La plupart modern frameworks mix ces. Le règle de thumb: si votre important contenu est dans le HTML avant quelconque JavaScript exécute (or arrives presque immédiatement), vous êtes dans bon shape.
Vouloir le deeper version — comment le Web Rendu Service en réalité behaves, si “two waves of indexing” est encore a chose, et a complet comparaison de chaque rendu option? Switch à le Avancé tab. Pour le practical JavaScript problèmes et corrections, voir JavaScript SEO.
TL;DR — Google renders votre JS dans an evergreen, headless Chromium — le Web Rendu Service — à construire le DOM il indexes. Il se produit pour essentially tout pages, généralement dans seconds-à-minutes, donc “two waves of indexing” est largely outdated et il y a aucun per-page rendre budget. Le WRS est stateless, declines permission prompts, ne fait pas interact avec lune page, et caches aggressively. Votre rendu option decides votre SEO risque: SSR / static / prerendering / hydration sont faible-risque; complet CSR est le risky un; dynamic rendu est a workaround Google advises contre. Pour le practical JS problèmes ce crée, voir JavaScript SEO.
Où rendering sits
Google est explicit que JavaScript apps déplacer via three phases: “Google processes JavaScript web apps dans three principal phases: 1. Exploration 2. Rendu 3. Indexation.” Preuve à l’appui de cette affirmation Google documents crawling, rendering, and indexing as the three main phases for processing JavaScript web apps. Portée : Google Search processing of JavaScript web applications; the phases can overlap operationally. Niveau de confiance : élevé · Vérifié : Google Search Central: Understand the JavaScript SEO basics Rendu est le bridge. Exploration récupère le raw HTML; rendu exécute le JavaScript à construire le finished DOM; indexation lit que rendu DOM, et quelconque nouveau liens le renderer trouve obtenir fed back dans exploration. Dans Google’s words: “During le explorer, Google renders lune page et exécute quelconque JavaScript il trouve en utilisant a recent version de Chrome, similaire à comment votre navigateur renders pages vous visit.”
Google explore une URL, renders son JavaScript à construire le DOM, et indexes le résultat. Four practical échec modes branch depuis rendu: parity quand le rendu DOM differs depuis expectations, interaction quand contenu exige a scroll or click, state quand contenu relies on cleared cookies or storage, et timing quand contenu est deferred behind lent JavaScript.
© Patrick Stox LLC · CC BY 4.0 ·
«## The Web Rendering Service » (Traduction) (Résumé en français de la section vingt-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«Google renders in the Web Rendering Service (WRS) — a headless Chrome that’s evergreen: “While Google Search runs JavaScript with an evergreen version of Chromium…” it tracks current Chrome, so modern JavaScript and CSS features work. » (Traduction) (Résumé en français de la section vingt-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«The catch is that the WRS is a peculiar browser, and its quirks cause most real problems: » (Traduction) (Résumé en français de la section vingt-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- 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 your content.
» (Traduction) (Résumé en français de la section vingt-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- It declines permissions. “Expect Googlebot to decline user permission
requests.” Content gated behind a geolocation, notification, or camera prompt won’t
render.
» (Traduction) (Résumé en français de la section vingt-six, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
«- It doesn’t interact. No scrolling, clicking, or hovering — so content that only
loads on one of those events is invisible by default. (This is the root of most
lazy-load and infinite-scroll bugs; the fixes live on the
JavaScript SEO page.)
» (Traduction) (Résumé en français de la section vingt-six, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«- It caches aggressively. “Googlebot caches aggressively in order to reduce
network requests and resource usage. WRS may ignore caching headers.” That means
Google can run an outdated version of your JS or CSS. Fix it with file
fingerprinting — version your filenames (app.4f2a9c.js) so a content change forces
a fresh fetch.
» (Traduction) (Résumé en français de la section vingt-six, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
A 2026 experiment: five seconds n’est pas a hard execution wall
A tiers WRS experiment reported dans July 2026 testé delayed JavaScript et network activity plutôt que assuming a five-deuxième timeout. Le observed renderer utilisé a virtual clock et completed delayed requêtes que took roughly 6–12 seconds de réel temps. Le utile résultat est narrow: il contradicts le courant audit règle que n’importe quoi occurring après exactly five seconds est automatiquement invisible à Google. Il fait pas prove que chaque delayed dependency va finish, que Google waits indefinitely, or que lent client-side delivery est sûr.
Lire le experiment et son methodology as tiers evidence alongside Google’s official statement que rendre-queue timing a aucun publié fixed delay. En pratique, tester le final DOM et requested resources. A manquant API réponse, interaction requirement, bloqué script, or state dependency remains a réel rendu échec même quand a stopwatch-based “five-second rule” n’est pas.
Is “two waves of indexing” encore a chose?
Pour années le mental model était “two waves of indexing”: Google voudrait indexer le raw HTML premier, alors come back days or weeks plus tard à rendre et indexer le JavaScript contenu. Que model est maintenant largely outdated. Martin Splitt a said le deux-waves idea plays moins et moins de a role, que nombreux pages go via le rendre phase même quand ils ne pas rely on JavaScript, et que exploration, rendu, et indexation sont converging over temps.
«In practice, rendering happens for essentially every page, and it’s usually fast. Google’s current documentation says a crawled page “may stay on this queue for a few seconds, but it can take longer than that” — there’s no published fixed delay or timeout. Preuve à l’appui de cette affirmation Google says a crawled page may stay on the rendering queue for a few seconds, but it can take longer than that. Portée : 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. Niveau de confiance : élevé · Vérifié : Google Search Central: rendering-queue duration Étaye : A page may remain on the rendering queue for a few seconds or longer. As a historical data point, Google staff (Martin Splitt and Tom Greenaway) once put the figure at a median of about five seconds, with the 90th percentile in minutes — not the “weeks” the old fear implied. I cite that figure in my JavaScript SEO guide, but treat it as a dated conference data point rather than a current published metric — Google hasn’t republished it as an ongoing number, and the queue-timing quote above is the current official framing. » (Traduction) (Résumé en français de la section trente-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«And there’s no render budget in the way people imagine. Google doesn’t track a per-page “how expensive was this to render” score you need to conserve. Rendering is cheap at Google’s scale — optimize for your users and performance, not a phantom render budget. » (Traduction) (Résumé en français de la section trente-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
The rendering options
“Où est le HTML built?” est le question que decides votre SEO risque. Le complet menu:
Static generation produces HTML at construire temps. Rendu côté serveur produces it per requête. Rendu côté client relies on navigateur 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) exécute JavaScript à construire tout. Ce est “le la plupart problematic un … complet rendu côté client où tout de le rendu se produit dans le navigateur.” Il peut fonctionner, mais vous êtes betting tout on le rendre succeeding, et c’est le slowest à obtenir indexé.
- Rendu côté serveur (SSR). Le serveur construit le complet HTML pour chaque requête. Contenu est dans le raw HTML, donc c’est faible-risque pour recherche.
- Static site generation (SSG) / prerendering. HTML est construit une fois à deploy temps. Lowest risque — contenu est dans le raw HTML et c’est rapide.
- Hydration (isomorphic / universal). Vous SSR or SSG le premier paint, alors JavaScript “hydrates” il dans le navigateur à ajouter interactivity. Ce est ce que la plupart modern frameworks faire, et c’est faible-risque pour contenu — simplement watch pour hydration mismatches que blank out or remplacer contenu.
- Incremental Static Regeneration (ISR). Static pages regenerated on a schedule or on demand. Comme SSG, avec fresher contenu — bon pour grand catalogs.
- Edge rendu. SSR exécuter à CDN edge nodes — même faible risque as SSR, avec faster time-à-premier-byte pour a mondial public.
- Streaming SSR. HTML streamed à le navigateur dans chunks as c’est ready. Faible-risque, mais assurez-vous indexable contenu n’est pas trapped seulement dans a late or deferred chunk.
Mon bottom line depuis mon JavaScript SEO guide: “Quelconque kind de SSR, static rendu, et prerendering setup est going à être fine pour moteur de recherches. Gatsby, Suivant, Nuxt, etc., sont tout great.” Le framework matters moins que le rendu mode vous ship — le même Suivant.js app est sûr or risky selon si vous servir SSR/SSG or complet CSR.
Dynamic rendering — a workaround, pas a strategy
Dynamic rendu signifie detecting bots et diffusion les a prerendered, JavaScript-gratuit version pendant que utilisateurs obtenir le client-side version. Google est maintenant blunt à propos de il: “Dynamic rendu était a workaround et pas a à long terme solution pour problèmes avec JavaScript-generated contenu dans moteur de recherches,” et “Dynamic rendu est a workaround et pas a recommended solution, parce que il crée additional complexities et resource requirements.” Preuve à l’appui de cette affirmation Google describes dynamic rendering as a workaround and does not recommend it as a long-term solution. Portée : Google Search guidance for JavaScript-generated content; server-side rendering, static rendering, or hydration are the recommended alternatives. Niveau de confiance : élevé · Vérifié : Google Search Central: Dynamic rendering as a workaround Je agree, et Je toujours ont — à être honest Je jamais recommended il, et Je’m glad Google maintenant recommends contre il aussi. c’est diffusion différent contenu à bots et utilisateurs, qui est awfully fermer à cloaking. Reach pour SSR, static, or hydration à la place.
«One wrinkle: Bing still suggests dynamic rendering. Microsoft says “bingbot is generally able to render JavaScript” but that doing it at scale is hard, so “we recommend dynamic rendering as a great alternative for websites relying heavily on JavaScript.” The practical takeaway: SSR/SSG keeps both engines happy and sidesteps the whole debate. » (Traduction) (Résumé en français de la section quarante et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Ce que cela signifie pour votre content
Rendu decides si Google ever voit votre JavaScript contenu — mais seeing il est
seulement half le job. Une fois lune page est rendu, le practical concerns sont réel <a href>
liens, champ-spécifique parity entre raw et rendu HTML, robots-directive stage order, lazy
contenu, infinite scroll, et soft-404s. Ceux tout actif on le
JavaScript SEO page, avec le testing
workflow (Inspection d’URL’s rendu HTML, screenshot, et console).
Ce est le rendu stage de le recherche pipeline. Pour le stages autour il, voir exploration (comment pages obtenir récupéré) et indexation (ce que se produit à le rendu page suivant), or le Comment Recherche Fonctionne hub pour le entier journey.
Un audit règle est worth keeping ici: rendu est a state, pas a universal winner.
Pour corps contenu et crawlable liens, le rendu DOM montre ce que successful JavaScript
ajouté or supprimé. Pour titles et descriptions, il montre additional inputs, pendant que Google
peut encore generate a titre lien or extrait depuis autre sources. Pour robots directives, a
raw noindex peut empêcher rendu, donc JavaScript removal est asymmetric. Pour canonical,
Google advises en utilisant un source or un JavaScript-set valeur plutôt que modification an
existing valeur. Et JavaScript ne peut pas modifier le HTTP réponse status déjà reçu.
Garder ceux columns séparé dans evidence et utiliser Google’s actuel JavaScript SEO
guidance
pour le champ-spécifique behavior.
AI summary
A condensed prendre on the Avancé version:
«- Rendering = the bridge from crawling to indexing. Google runs your JS in an evergreen, headless Chromium — the Web Rendering Service — to build the DOM it indexes. Three phases: crawl → render → index. » (Traduction) (Résumé en français de la section cinquante, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- “Two waves of indexing” is largely outdated (Splitt). Rendering happens for essentially all pages, usually fast. Google’s current docs say a page “may stay on this queue for a few seconds, but it can take longer than that” — no fixed delay is published. (A ~5s median/minutes-90th-percentile figure exists, but it’s a dated conference data point, not a current metric.) There is no per-page render budget. » (Traduction) (Résumé en français de la section cinquante, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- The WRS is a weird browser: stateless (localStorage/cookies cleared between loads), declines permission prompts, does not scroll/click/hover, and caches JS/CSS aggressively (may ignore cache headers) → fingerprint your filenames. » (Traduction) (Résumé en français de la section cinquante, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- Rendering options, by SEO risk: SSG/prerender (lowest) ≈ SSR ≈ hydration ≈ ISR ≈ edge/streaming (low) ≪ full CSR (highest). Patrick: “SSR, static rendering, and prerendering … are all great”; full CSR is “the most problematic one.” » (Traduction) (Résumé en français de la section cinquante, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.) «- Dynamic rendering is a workaround, Google advises against it (close to cloaking). Bing still recommends it — but SSR/SSG satisfies both. » (Traduction) (Résumé en français de la section cinquante, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.) «- The framework doesn’t decide risk — the rendering mode does. The same app is safe or risky depending on whether you ship SSR/SSG or full CSR. » (Traduction) (Résumé en français de la section cinquante, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.) «- Rendering is half the job — the practical JS problems (links, parity, lazy content, infinite scroll, soft-404s, testing) are covered on the JavaScript SEO page. » (Traduction) (Résumé en français de la section cinquante, sous-partie sept : le texte source est conservé pour vérification lors de la relecture francophone.)
«## Official documentation » (Traduction) (Résumé en français de la section cinquante-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«Primary-source documentation from the search engines. » (Traduction) (Résumé en français de la section cinquante-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«Google » (Traduction) (Résumé en français de la section cinquante-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- Understand the JavaScript SEO basics — the three phases (crawl → render → index) and the evergreen Chromium renderer. » (Traduction) (Résumé en français de la section cinquante-cinq, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- Fix Search-related JavaScript problems — the WRS constraints: stateless storage/cookies, declined permissions, aggressive caching. » (Traduction) (Résumé en français de la section cinquante-cinq, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- Dynamic rendering as a workaround — why dynamic rendering is a workaround, not a recommended long-term solution. » (Traduction) (Résumé en français de la section cinquante-cinq, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.) «- In-Depth Guide to How Google Search Works — where rendering sits in crawl → index → serve. » (Traduction) (Résumé en français de la section cinquante-cinq, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.)
«Bing / Microsoft » (Traduction) (Résumé en français de la section cinquante-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- bingbot Series: JavaScript, Dynamic Rendering, and Cloaking. Oh My! — Bing’s stance that it can render JS but recommends dynamic rendering at scale. » (Traduction) (Résumé en français de la section cinquante-six, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- The new evergreen Bingbot — Bingbot rendering on Chromium-based Microsoft Edge. » (Traduction) (Résumé en français de la section cinquante-six, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«## Quotes from the source » (Traduction) (Résumé en français de la section cinquante-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
On-le-record statements depuis Google et Bing (plus a quelques depuis mon propre writing). Chaque recherche-moteur lien est a deep lien que jumps à le quoted passage on le page source.
Google — the render pipeline
«- “Google processes JavaScript web apps in three main phases: 1. Crawling 2. Rendering 3. Indexing.” Jump to quote » (Traduction) (Résumé en français de la section soixante-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- “During the crawl, Google renders the page and runs any JavaScript it finds using a recent version of Chrome, similar to how your browser renders pages you visit.” Jump to quote » (Traduction) (Résumé en français de la section soixante-deux, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- “While Google Search runs JavaScript with an evergreen version of Chromium…” Jump to quote » (Traduction) (Résumé en français de la section soixante-deux, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- “The page may stay on this queue for a few seconds, but it can take longer than that.” — the current official framing on render-queue timing; no fixed delay is published. Jump to quote » (Traduction) (Résumé en français de la section soixante-deux, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
Google — le Web Rendu Service
«- “Local Storage and Session Storage data are cleared across page loads.” Jump to quote » (Traduction) (Résumé en français de la section soixante-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- “HTTP Cookies are cleared across page loads.” Jump to quote » (Traduction) (Résumé en français de la section soixante-quatre, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- “Expect Googlebot to decline user permission requests.” Jump to quote » (Traduction) (Résumé en français de la section soixante-quatre, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- “Googlebot caches aggressively in order to reduce network requests and resource usage. WRS may ignore caching headers.” Jump to quote » (Traduction) (Résumé en français de la section soixante-quatre, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
Google — dynamic rendering
«- “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines.” Jump to quote » (Traduction) (Résumé en français de la section soixante-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- “Dynamic rendering is a workaround and not a recommended solution, because it creates additional complexities and resource requirements.” Jump to quote » (Traduction) (Résumé en français de la section soixante-six, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
Microsoft Bing
«- “bingbot is generally able to render JavaScript…” Jump to quote » (Traduction) (Résumé en français de la section soixante-huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- “we recommend dynamic rendering as a great alternative for websites relying heavily on JavaScript.” Jump to quote » (Traduction) (Résumé en français de la section soixante-huit, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
«Martin Splitt, Google (relayed via Onely’s transcript of a 2019 Webmaster Central hangout) » (Traduction) (Résumé en français de la section soixante-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- On the two-waves model: Splitt has said it plays less and less of a role, that many sites go through the render phase even without JavaScript, and that crawling, rendering, and indexing are converging. Read the coverage » (Traduction) (Résumé en français de la section soixante-dix, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«Patrick Stox (my own work — JavaScript SEO: A Definitive Guide) » (Traduction) (Résumé en français de la section soixante-onze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- “Google loads each page stateless like it’s a fresh load.” » (Traduction) (Résumé en français de la section soixante-douze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- “pages went to the renderer at a median time of five seconds” (90th percentile in minutes) — a dated conference-era data point, not a current published metric; see the current official queue-timing quote above. » (Traduction) (Résumé en français de la section soixante-douze, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- “The most problematic one is going to be full client-side rendering where all of the rendering happens in the browser.” » (Traduction) (Résumé en français de la section soixante-douze, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- “Any kind of SSR, static rendering, and prerendering setup is going to be fine for search engines. Gatsby, Next, Nuxt, etc., are all great.” » (Traduction) (Résumé en français de la section soixante-douze, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
«Note: the Bing JavaScript/dynamic-rendering blog and the relayed Martin Splitt hangout quotes were verified against the brief’s 2026-06-23 research, but a couple of secondary-coverage pages render via JavaScript or resisted automated re-checking. Confirm against the live pages before treating any relayed quote as final. The Splitt “two waves” point is paraphrased from a transcript, not a verbatim Google doc. » (Traduction) (Résumé en français de la section soixante-treize, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«## The mental models » (Traduction) (Résumé en français de la section soixante-seize, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
1. Explorer → rendre → indexer. Rendu est le bridge. Exploration récupère le raw HTML; rendu exécute le JS à construire le DOM; indexation lit que DOM. Quand JS contenu goes manquant, demander qui étape failed — était il récupéré? rendu? a fait le rendu DOM contenir le contenu?
2. Le renderer est a réel navigateur avec amnesia. Evergreen Chrome, mais stateless (forgets cookies/storage entre pages), aucun interaction (ne va pas scroll or click), et cache-happy (peut exécuter stale JS/CSS). Design as si chaque visit est a fresh, untouched, premier charger.
3. Rendu mode decides votre risque, pas votre framework. SSR, static, prerender, et hydration tout put contenu dans (or quickly dans) le DOM — faible risque. Complet CSR bets tout on le rendre — highest risque. Le même Suivant.js app est sûr or risky selon qui mode vous ship.
4. “Deux waves” est le old map. ne pas plan autour a deferred deuxième wave de rendu days plus tard. Rendu se produit pour essentially tout pages, généralement dans seconds-à-minutes — et il y a aucun rendre budget à ration.
5. Dynamic rendu est a smell, pas a stratégie. Diffusion bots différent HTML que utilisateurs est a workaround Google advises contre (et est fermer à cloaking). Si vous êtes reaching pour il, le réel corriger est généralement SSR/SSG.
6. Obtenir contenu dans le DOM, alors vérifier. Pick a mode que puts contenu dans le rendu DOM quickly, alors confirmer avec URL Inspection’s rendu HTML. Votre navigateur n’est pas Googlebot.
Rendering options — SEO trade-offs
| Option | Où le HTML est construit | SEO risque | Reach pour il quand |
|---|---|---|---|
| CSR (client-side) | Navigateur/WRS exécute JS; serveur sends a shell | Highest — dépend on rendre success; slowest à indexer | App-like, gated, or faible-SEO-valeur views |
| SSR (serveur-side) | Serveur, per requête | Faible — contenu dans raw HTML | Dynamic / personalized / rapide-changing contenu |
| SSG / static / prerender | À deploy temps | Lowest — dans raw HTML et rapide | Contenu sites, docs, blogs, marketing |
| Hydration (isomorphic/universal) | SSR/SSG paint, alors JS hydrates | Faible — watch hydration mismatches | La plupart modern frameworks |
| ISR (incremental static regen) | Static, regenerated on schedule/on-demand | Faible — fresher SSG | Grand catalogs needing periodic freshness |
| Edge rendu | SSR à CDN edge | Faible — faster TTFB | Mondial, latency-sensitive SSR |
| Streaming SSR | HTML streamed dans chunks | Faible — garder indexable contenu out de late chunks | Performance-critical SSR apps |
| Dynamic rendu | Bots obtenir prerender, utilisateurs obtenir CSR | Workaround seulement — Google advises contre | Dernier resort pour legacy CSR |
Web Rendering Service — rapide facts
| Behavior | Ce que cela signifie pour vous |
|---|---|
| Evergreen headless Chromium | Modern JS/CSS fonctionne; aucun besoin to transpile pour an old engine |
| Stateless (storage + cookies cleared) | Don’t rely on persisted client state to serve content |
| Declines permission prompts | Content behind geolocation/notifications/camera won’t render |
| Doesn’t scroll, click, or hover | Charger content on viewport, pas on interaction |
| Caches JS/CSS aggressively | Fingerprint filenames (app.4f2a9c.js) so changements are picked up |
| Renders pour ~tout pages, usually in seconds-to-minutes | Aucun “two waves,” aucun render budget to ration |
Render-readiness audit checklist
A réussir to confirmer votre important content en réalité survives rendering:
«- [ ] Primary content and main navigation links are present in the raw HTML
response (view source, not DevTools’ inspected DOM) — not injected only
after JavaScript runs.
» (Traduction) (Résumé en français de la section quatre-vingt-treize, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] Every internal link a reader needs to follow is a real <a href="..."> —
not a <div onclick>, a hash-only route (#/page), or a button that
pushes state client-side with no matching link.
» (Traduction) (Résumé en français de la section quatre-vingt-treize, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] No critical JS or CSS files are blocked in robots.txt (a blocked bundle
can leave the WRS unable to build the page it needs to render).
» (Traduction) (Résumé en français de la section quatre-vingt-treize, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] Content that loads on scroll, hover, or click also has a path that
renders without any interaction — the WRS doesn’t scroll, click, or
hover.
» (Traduction) (Résumé en français de la section quatre-vingt-treize, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] Nothing important depends on localStorage, sessionStorage, or cookies
persisting between requests — the WRS is stateless and clears all of
that between page loads.
» (Traduction) (Résumé en français de la section quatre-vingt-treize, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] Nothing important sits behind a geolocation, notification, or camera
permission prompt — the WRS declines those by default.
» (Traduction) (Résumé en français de la section quatre-vingt-treize, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] JS/CSS filenames are fingerprinted (app.4f2a9c.js) so a content change
forces a fresh fetch instead of getting served from the WRS’s aggressive
cache.
» (Traduction) (Résumé en français de la section quatre-vingt-treize, sous-partie sept : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] URL Inspection’s rendered HTML/screenshot in Google Search Console shows
the same content and links you see in your own browser.
» (Traduction) (Résumé en français de la section quatre-vingt-treize, sous-partie huit : le texte source est conservé pour vérification lors de la relecture francophone.)
«- [ ] The site isn’t using dynamic rendering as its answer to a CSR problem —
the fix is SSR, static rendering, or hydration, not serving bots a
different version of the page.
» (Traduction) (Résumé en français de la section quatre-vingt-treize, sous-partie neuf : le texte source est conservé pour vérification lors de la relecture francophone.)
Rendering mistakes que en réalité bite
Blocking le JS or CSS lune page nécessite à rendre, dans robots.txt.
Si le WRS ne peut pas récupérer a script or stylesheet lune page dépend on, il ne peut pas
construire an précis rendu DOM — vous obtenir a broken or vide rendre au lieu de
lune page vous prévu. Faire à la place: autoriser exploration de votre JS/CSS assets;
robots.txt devrait garder bots out de faible-valeur spaces, pas le resources votre
propre pages besoin.
Shipping contenu-critical pages as complet rendu côté client (CSR) avec aucun fallback. CSR est “le la plupart problematic un … complet rendu côté client où tout de le rendu se produit dans le navigateur” — il bets votre entier page on le rendre succeeding, et c’est le slowest option à obtenir indexé. Faire à la place: reach pour SSR, static generation/prerendering, or hydration donc contenu est dans (or very quickly dans) le raw HTML.
Relying on hash-based routes (#/product/123) as votre seulement navigation.
Le WRS suit réel <a href> liens; a hash fragment que seulement changements
client-side state, avec aucun serveur-rendu equivalent URL, donne le renderer
rien à explorer onward à. Faire à la place: utiliser réel paths le serveur peut respond
à directement (/product/123), même dans a client-heavy app.
«Lazy-loading content with no non-interactive path to it. Because the WRS “doesn’t scroll, click, or hover,” content that only appears after one of those events is invisible to it by default. Do instead: load above-the-fold and reasonably-near-viewport content without requiring an interaction, and reserve true lazy-loading for content genuinely below the fold with a proper non-JS fallback. » (Traduction) (Résumé en français de la section cent, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Treating dynamic rendu as a à long terme corriger au lieu de a workaround. Google est explicit que “dynamic rendu est a workaround et pas a recommended solution, parce que il crée additional complexities et resource requirements” — et diffusion bots différent contenu que utilisateurs sits uncomfortably fermer à cloaking. Faire à la place: corriger le rendu mode itself (SSR/static/hydration) plutôt que building a bot-detection couche autour a CSR problème.
Validation tests
Réussir/échouer checks to confirmer a rendering fix en réalité took effect — run ces après vous ship the modifier, pas as an ongoing health metric.
Tester: content now apparaît in the rendered DOM
- Tester à exécuter — Submit l’URL à Recherche Google Console’s URL Inspection outil et utiliser “Test Actif URL,” alors ouvrir le rendu HTML tab (or exécuter lune page via le Rendre Gap outil à diff raw vs. rendu HTML directement).
- Attendu résultat — Le contenu vous ajouté or fixed apparaît dans le rendu HTML/DOM view, pas simplement dans votre propre navigateur’s dev outils.
- Échec interpretation — Si c’est encore manquant depuis le rendu HTML mais présent quand vous view lune page normally, le WRS encore ne peut pas construire il — vérifier pour a bloqué JS/CSS resource, an interaction-seulement charger, or a client-storage dependency avant assuming le corriger worked.
- Monitoring window — Immediate; Inspection d’URL’s actif tester reflects le actuel state de l’URL correct away.
- Rollback trigger — Le rendu HTML encore ne fait pas contenir le contenu après le corriger, or le actif tester throws a nouveau explorer/rendre erreur il n’a pas throw avant.
Tester: important liens survive the render
- Tester à exécuter — Vérifier le rendu HTML (Inspection d’URL or Rendre Gap)
pour réel
<a href>balises autour chaque lien a lecteur nécessite à suivre, pas simplement visible clickable elements. - Attendu résultat — Chaque lien dans le rendu DOM a a resolvable
hrefpointing à a réel, crawlable URL. - Échec interpretation — A manquant or vide
hrefon ce que semble comme a fonctionnement lien généralement signifie c’est a<div>/<button>avec a client-side click handler et aucun serveur-renderable chemin — le WRS ne peut pas suivre il. - Monitoring window — Immediate.
- Rollback trigger — Liens que mattered avant le modifier sont manquant
hrefattributs or point à a hash-seulement fragment dans le rendu sortie.
Tester: le corriger ne fait pas quietly regress on le suivant deploy
- Tester à exécuter — Re-exécuter le rendu-HTML vérifier (Inspection d’URL actif tester or Rendre Gap) après votre suivant deploy que touches ce page’s templates or construire pipeline.
- Attendu résultat — Le même contenu et liens sont encore présent dans le rendu DOM as quand vous premier confirmed le corriger.
- Échec interpretation — Si contenu que était présent disappears à nouveau, a plus tard modifier probable reintroduced a client-seulement dependency or broke a serveur-rendu chemin.
- Monitoring window — Re-vérifier après chaque deploy que touches le affected templates; pas a un-time vérifier.
- Rollback trigger — Contenu or liens que étaient confirmed présent drop out de le rendu DOM à nouveau.
Ressources utiles
Mon connexe writing
- JavaScript SEO: A Definitive Guide — mon complet guide à rendu, rendu modes, DOM parity, infinite scroll, et le deux-pages-as-un problème.
- Le Beginner’s Guide à SEO technique — où rendu fits entre exploration et indexation.
Mon speaking
- Comment Recherche Fonctionne (SlideShare) — mon walkthrough de exploration, rendu (le WRS, stateless charge, aucun interaction), indexation, et classement. (Mon standing disclaimer s’applique: “This is my understanding of systems… not going to be 100% complete or accurate.”)
«From others » (Traduction) (Résumé en français de la section cent dix-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- web.dev — Rendering on the Web — the canonical explainer of CSR / SSR / SSG / hydration trade-offs from the Chrome team. » (Traduction) (Résumé en français de la section cent dix-sept, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- Onely — Google’s Two Waves of Indexing — transcript-based coverage of Martin Splitt’s office-hours session explaining why the two-waves model is fading; cited in the article body. » (Traduction) (Résumé en français de la section cent dix-sept, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- Search Engine Roundtable — Google: No Per-Page Search Cost — Google rep clarifying there is no per-page crawl/render/index cost to ration. » (Traduction) (Résumé en français de la section cent dix-sept, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.) «- Search Engine Journal — JavaScript SEO — industry coverage of JS SEO best practices, testing workflows, and framework considerations. » (Traduction) (Résumé en français de la section cent dix-sept, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.) «- Vercel — Rendering Strategies — Next.js/edge rendering docs; useful when choosing between CSR, SSR, SSG, ISR, and streaming SSR for a real project. » (Traduction) (Résumé en français de la section cent dix-sept, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.) «- r/TechSEO — the community for debugging render/index problems. » (Traduction) (Résumé en français de la section cent dix-sept, sous-partie sept : le texte source est conservé pour vérification lors de la relecture francophone.)
Videos
- Recherche Google Central (YouTube) — Martin Splitt’s JavaScript SEO series et le rendu explainers sont le meilleur official video walkthroughs de comment le Web Rendu Service handles votre JS. Channel
Stats worth citing
«- Current official framing: no fixed delay. Google’s documentation says a crawled page “may stay on this queue for a few seconds, but it can take longer than that” — there’s no published fixed delay or timeout for the render queue. » (Traduction) (Résumé en français de la section cent vingt-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- Historical data point (dated) — ~5 second median render delay. In earlier conference remarks, Google staff (Martin Splitt and Tom Greenaway) put pages reaching the renderer at a median of ~5 seconds, with the 90th percentile in minutes — not the “weeks” the old two-waves fear implied. I cite this in my JavaScript SEO guide, but treat it as a historical data point, not a current published metric — Google hasn’t republished it as an ongoing figure. » (Traduction) (Résumé en français de la section cent vingt-cinq, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- Two waves of indexing is fading. Per Martin Splitt, the two-waves model plays less and less of a role as crawling, rendering, and indexing converge — rendering now happens for essentially all pages. Coverage » (Traduction) (Résumé en français de la section cent vingt-cinq, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- No per-page render budget. Google has indicated it doesn’t track how expensive an individual page is to crawl, render, index, or serve — so there’s no “render budget” to conserve the way crawl budget gets discussed. Coverage » (Traduction) (Résumé en français de la section cent vingt-cinq, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
Le ~5s median figure et le Splitt “deux waves” framing come depuis conference talks et relayed transcripts; treat les as précis-à-le-source mais confirmer le exact wording contre le actif talk si vous citation les verbatim.Testez vos connaissances: Rendering
Five rapide questions on how Google renders pages. Pick an réponse pour chaque, alors vérifier.
Journal des modifications
Mis à jour le 28 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
Mis à jour le 18 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
Mis à jour le 17 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.