Web Rendering Service

Also known as: WRS

On this page 7

The Web Rendering Service (WRS) is the component of Google Search that renders crawled pages in a headless Chromium browser, executing JavaScript and applying CSS so that Google can index the content a user would actually see. In technical SEO, WRS explains why a page that looks complete in a browser may still be indexed incompletely: indexing is based on the rendered result produced by WRS, not on what a visitor’s browser shows.

WRS sits between crawling and indexing. Googlebot fetches the raw HTML, the page enters a render queue, WRS loads the page together with its scripts, styles and API responses, and the resulting DOM is passed on for link extraction and indexing. Other engines run comparable systems, but the name refers specifically to Google’s implementation.

How the Web Rendering Service processes a page

Rendering happens in a two-phase model. In the first phase, the crawler fetches the HTML and extracts whatever content and links it already contains. In the second phase, WRS executes the page in Chromium, and Google processes the rendered DOM, which can add content, links, structured data and meta tags generated by JavaScript.

StepWhat happensSEO implication
FetchGooglebot downloads the initial HTMLContent in raw HTML is seen immediately
QueueThe URL waits for rendering capacityDelay is usually short but not zero
Resource loadingScripts, styles and API calls are fetchedBlocked resources break rendering
ExecutionJavaScript runs and builds the DOMErrors can leave content missing
SnapshotThe rendered HTML is passed to indexingOnly this snapshot counts for indexing
Steps from crawl to indexed rendered content

Since 2019, WRS has used an evergreen Chromium engine that is updated regularly, so modern JavaScript features are generally supported without polyfills. Compatibility problems today come less from syntax support and more from how pages load data and react to user actions.

How WRS differs from a user’s browser

WRS uses the same engine as Chrome but behaves differently from a person browsing. These differences explain most JavaScript SEO failures, because content that depends on interaction, persistent state or permissions may never appear in the rendered snapshot.

AspectTypical user browserWeb Rendering Service
InteractionClicks, scrolls and tapsNo clicks or real scrolling
StateCookies and storage persistStateless; storage cleared between loads
PermissionsPrompts can be acceptedPermission requests are declined
ViewportDevice screen sizeVery tall viewport to expose lazy content
CachingFollows cache headersAggressive caching, may ignore headers
Time budgetWaits as long as the user doesLimited time and resources per page
Behavior of WRS compared with a typical browser session

Content loaded on scroll can still be rendered if it is triggered by the IntersectionObserver API or by elements entering the tall viewport, but content loaded only after a click, such as tabs that fetch text on demand or a “load more” button, is usually invisible to WRS. Google does not publish exact time limits, so pages that depend on slow API calls are at risk of incomplete snapshots.

Resource cost also matters. Every script, font and API call that WRS must fetch consumes crawl and rendering capacity, so very heavy pages on large sites can slow how quickly new URLs are processed.

Rendering strategies and their relation to WRS

The way a site produces HTML determines how much it depends on WRS. The less critical content relies on client-side execution, the more robust indexing becomes.

Rendering approachContent in initial HTMLDependence on WRS
Server-side renderingFull contentLow; WRS mainly confirms it
Static site generationFull contentLow
Hydration of server HTMLFull content, enhanced laterLow to moderate
Client-side renderingEmpty shell and scriptsHigh; content exists only after rendering
Dynamic renderingPrerendered HTML for botsLow, but now a discouraged workaround
Rendering approaches and their dependence on WRS

Google describes dynamic rendering as a workaround rather than a recommended solution, and it adds maintenance cost and the risk of serving different content to users and bots. For new projects, server-side or static rendering is the dependable default.

Testing what WRS actually sees

Because indexing uses the rendered snapshot, testing must look at the rendered HTML, not the source code. The URL Inspection tool in Search Console shows the rendered HTML, a screenshot, loaded resources and JavaScript console messages from Google’s own infrastructure.

  • Compare raw and rendered HTML to see which content and links depend on JavaScript.
  • Check blocked resources; scripts or API endpoints disallowed in robots.txt cannot be loaded by WRS.
  • Search for key sentences of the page in the rendered HTML to confirm they are present.
  • Inspect JavaScript errors, which can stop execution before content is inserted.
  • Test several templates, not only the homepage, because frameworks often behave differently per route.

Local tools complement these checks. Rendering a page in headless Chrome with JavaScript enabled and comparing it with a crawl that has JavaScript disabled reveals dependencies at scale, across thousands of URLs. Differences in titles, canonical tags or internal link counts between the two crawls point to the templates that need server-side output first.

Common pitfalls and misconceptions

Most WRS problems stem from assumptions carried over from browser testing. The following are especially frequent.

  • Links must be real anchors. WRS follows a elements with an href; click handlers on other elements are not crawled as links.
  • Meta tags changed by JavaScript are risky. A noindex in raw HTML can stop rendering entirely, so removing it later with JavaScript does not work reliably.
  • Hash-based routes are not separate pages. Fragments after # are generally ignored for indexing.
  • Rendering is not instant everywhere. Queue delays are usually short, but critical content in raw HTML is indexed with more certainty.
  • Other engines may render less. Bing renders JavaScript too, but many AI crawlers fetch only the raw HTML.

Explained without jargon

Many modern websites arrive as a set of instructions rather than a finished page, and the browser builds the page by following them. The Web Rendering Service is Google’s own robot browser that follows those instructions to see the finished page.

The robot does not click buttons, accept pop-ups or wait forever. Anything that only appears after a click or a long wait may stay invisible to Google, so important text should be present without any interaction.

A typical use case

A travel company rebuilds its destination guides as a single-page application. After launch, rankings for guide pages fall, although the pages look complete in every browser. The URL Inspection tool shows that the rendered HTML contains the header and footer but no guide text.

The cause is an API endpoint for guide content that was disallowed in robots.txt, so WRS could not load it. A second issue appears on long guides, where sections load only after a “read more” click. The team unblocks the endpoint, moves guide text into server-side rendered HTML and replaces the click-loaded sections with expanded content. After recrawling, the rendered snapshot matches the visible page, and guide rankings recover over the following weeks.