JavaScript rendering (raw HTML vs rendered HTML)

Many pages get an HTML skeleton from the server, and the content, title, canonical or meta robots are added later by JavaScript in the browser. Google renders JavaScript, but in a second step and not always completely. When the raw HTML and the rendered version disagree — for example a different canonical or a noindex in only one of them — the result can be unpredictable.

How Google processes JavaScript pages

  1. Crawling — Googlebot fetches the raw HTML and reads links and directives from it.
  2. Rendering — in a separate step it runs JavaScript and sees the page like a browser.
  3. Indexing — based on the rendered version.

If the raw HTML contains noindex, Google may never get to rendering — removing the noindex with JavaScript won't help.

Raw HTML vs rendered version

ElementRisk when it differs after rendering
titleGoogle may show the title from the raw HTML
canonicalconflicting signals, Google chooses itself
meta robotsa noindex in raw HTML excludes the page before rendering
H1 and contentempty in HTML — risk of soft 404 or "crawled – currently not indexed"
linksavailable only after a click — the crawler won't find them

Good practice

  • keep key SEO elements (title, canonical, meta robots, H1, links) in the raw HTML,
  • server-side rendering (SSR) or static generation for pages that should rank,
  • don't block JavaScript and CSS files in robots.txt,
  • the same values in the HTML and after rendering.

How IndexRise checks JavaScript pages

For every project we compare the title, H1 and canonical in the raw HTML and after rendering in a browser. If a site swaps content in the browser, we monitor the rendered version — the one Google sees after rendering — rather than the empty template.

Frequently asked questions

Can Google see content loaded with JavaScript?

Usually yes — Googlebot renders pages with a current version of Chrome. But rendering happens later than the HTML fetch and can fail, for example when scripts are blocked in robots.txt or take too long to load.

What's the riskiest part of JavaScript sites?

Conflicting signals: a noindex in the raw HTML removed by JavaScript (Google may never get to rendering), a different canonical before and after rendering, links available only after a click.

How do I see what Google sees?

In Search Console, URL Inspection → View crawled page shows the rendered HTML and a screenshot. Compare it with the page source (Ctrl+U).

Updated: 2026-10-20