Dynamic rendering is a web delivery technique that serves different versions of a page depending on the type of visitor requesting it.
A website may provide a fully rendered HTML version to search engine crawlers or other automated clients, while regular users receive a JavaScript-heavy version that is rendered in the browser.
This approach is commonly used on websites where important content depends heavily on client-side JavaScript.
Also known as: Prerendering for crawlers, crawler-specific rendering.
Dynamic rendering identifies the requester and decides which version of the page should be delivered.
A typical process works like this:
The pre-rendered version is usually generated by a rendering service or headless browser.
Client-side rendering (CSR) sends a lightweight HTML page to the browser and relies on JavaScript to generate much of the visible content.
Dynamic rendering keeps the client-side experience for regular users but provides a pre-rendered version to selected crawlers.
In simple terms:
Server-side rendering (SSR) generates the HTML on the server for every request or page load.
Dynamic rendering usually applies server-rendered or pre-rendered content only to specific request types, such as crawlers.
In simple terms:
SSR is generally a more consistent architecture, while dynamic rendering is often used as a compatibility solution for JavaScript-heavy websites.
Prerendering generates HTML snapshots of pages before they are requested.
Dynamic rendering may use prerendered pages as part of its workflow but adds request-based logic to decide when those versions should be served.
Prerendering is therefore a rendering technique, while dynamic rendering is a delivery strategy.
Dynamic rendering can affect web scraping because the HTML returned to a scraper may depend on how the website classifies the request.
A basic HTTP scraper may receive:
For JavaScript-heavy sites, browser automation may still be required when the desired information is only available after scripts execute.
Scraping systems may therefore compare raw HTML with the rendered page to determine where the required data is available.
Suppose an e-commerce website is built as a client-side JavaScript application.
When a regular user visits a product page, the browser receives the application shell and loads product information through JavaScript.
When a search engine crawler requests the same URL, the server detects the crawler and returns a fully rendered HTML page containing the product name, description, price, and other important content.
Both visitors access the same URL, but the rendering method differs depending on the requester.
Dynamic rendering is a delivery strategy that serves different rendered versions of a webpage depending on the requester.
It is commonly used to make JavaScript-heavy websites easier for crawlers to process while preserving the client-side experience for users. However, it adds infrastructure and maintenance complexity, so server-side rendering or hybrid approaches may be preferable for newer applications.