JavaScript rendering

Turn on Render pages with Chromium in the configuration. The first run downloads a headless Chromium (about 100 MB).

What happens per page

  1. The raw HTML is fetched as usual and extracted.
  2. The page is opened in Chromium with your cookies, headers and user agent. Images, fonts and media are blocked by default to keep it fast; turn that off if layout-dependent scripts need them.
  3. Sitemoth waits for the network to go idle, then the settle time you configured, runs your custom script if any, scrolls to trigger lazy loading, and captures the DOM.
  4. The rendered DOM is extracted and compared with the raw HTML.

The JavaScript tab

Lists pages where rendering changed something that matters: noindex, canonical, title, description or H1 that differ between raw and rendered, content and links that only exist after JavaScript, console errors, failed resource requests, render timeouts, and client-side redirects. Links that only exist after rendering are tagged JS in the inlinks and outlinks lists.

When rendering looks wrong

Single-page apps that never settle hit the render timeout; raise it or reduce long-polling. Content behind load-more buttons needs a custom script, for example document.querySelector('.load-more')?.click(). Consent walls can usually be bypassed by injecting the consent cookie. If a page renders blank, report it: rendering edge cases are the most common fix we ship.