Verant · Verified, not guessed

Rendered HTML (vs. source HTML)

Last reviewed: 2026-06-21

Rendered HTML is the final state of a web page after the browser has parsed the source markup, run its JavaScript, and built the live DOM — the document a visitor actually sees. Source HTML is the raw markup the server first sends, before any scripts run. On a JavaScript-driven site the two can differ dramatically.

How the two differ

When a browser requests a page, the server returns source HTML — the initial document. On a traditional server-rendered site, that document already contains the visible text, and the rendered result is close to the source. On a single-page application (built with React, Vue, Svelte, Angular, or similar), the source HTML is often little more than an empty shell — a `<div id="root"></div>` and some script tags. The browser then executes the JavaScript, which fetches data and constructs the headline, body copy, navigation, and footer in the DOM. The rendered HTML is the result of that process; "View source" shows the source, while the browser's "Inspect" / Elements panel shows the rendered DOM.

The gap matters because anything that only reads source HTML — a raw HTTP fetch, "View source", or a tool that does not execute JavaScript — sees the shell, not the content. It will report almost no text on a page that, to a human, is full of words.

Why it matters for website copy

If you want to check the copy a visitor reads, you have to read the rendered HTML, not the source. A spell or grammar checker that parses raw source on a single-page app will check an almost-empty document and pronounce it clean, because the real copy was never in the bytes it read. The errors live in the rendered output it never produced. The same is true for search engines that do not fully render JavaScript: they may index a far thinner page than the one users see.

Verant addresses this by rendering each page in a headless browser before it proofreads — it waits for the content to load and scrolls so lazy-loaded sections appear, then reads the visible copy from the live DOM. That way a client-rendered React or Vue page is checked the same way as a static one, for the same six kinds of copy issue. Reading the rendered page is purely to access the copy; Verant proofreads that copy and does not test the JavaScript, performance, hydration, or SEO behavior of the page, which are separate concerns with their own tools.

Common mistakes

The most common mistake is using "View source" to audit copy on a single-page app and concluding the page is empty or clean when it is neither. A related mistake is assuming a static crawler that does not execute JavaScript can proofread a modern framework site — it reads the shell and misses the words. The fix is to check the page after the JavaScript runs: open the live URL in a browser and read what is on screen, or use a tool that renders the page before reading it.

Related terms & reading

Related reading: proofread a JavaScript-rendered site.

Frequently asked questions

Why does "View source" sometimes show almost no text?

On a single-page app the source HTML is often just an empty shell with script tags. The visible text is built by JavaScript after the page loads, so it appears in the rendered DOM (the browser’s "Inspect" view) but not in "View source", which shows only the raw markup the server first sent.

How do you proofread copy that JavaScript builds?

You have to read the rendered page rather than the source. Open the live URL in a real browser and check the text on screen, or use a tool that loads each page in a headless browser, waits for the content to render, and reads the visible copy from the live DOM.

Try it on your site →