Home About Support Blog Ask AI
Dashboards +
On-Page SEO +
Technical SEO +
SERP & Content +
Local SEO +
Get the Chrome Extension
Free GEO Tool

JavaScript SEO: JS vs No-JS Comparison

Diff one page rendered against raw, or read every page of a sitemap as raw HTML. That second view is what GPTBot and ClaudeBot actually get.

Last updated: September 2026

Why JavaScript rendering matters for SEO

The real JavaScript SEO problem isn't Google. Google queues the page and renders it; its own docs describe that wait as "a few seconds, but it can take longer than that". The crawlers that never render are where content actually goes missing. Vercel measured OpenAI's and Anthropic's bots in December 2024: both download your JavaScript files and neither one executes them. So if your React or Vue app builds its content in the browser, those bots see an empty <div id="app"> and move on. Your content exists. It's just invisible to every crawler that doesn't run a browser.

This JavaScript rendering checker fetches your page two ways: raw HTML and full browser render. It diffs the headings, links, and full text between both versions, so you can see exactly what disappears without JS. If your main content only shows up after client-side rendering, you have an indexing problem. Now you can prove it.

One page at a time is the right depth for a diagnosis and the wrong shape for an audit. Switch to Whole site and it reads every URL in your sitemap as raw HTML and reports what a crawler that never runs JavaScript receives on each one: how many words, whether there is an H1, whether any JSON-LD survives, and whether the page is an empty framework container with the content still in a JSON payload.

How does Google render JavaScript?

Google does render JavaScript, but not in one pass. Googlebot crawls a URL, puts it in a render queue, and a headless Chromium executes the JavaScript once Google's resources allow. Google's own wording for that wait is "a few seconds, but it can take longer than that" — no hours, no days, and no published worst case, whatever the SEO posts repeat. Bing renders too, on the evergreen Chromium engine behind Microsoft Edge, though it warns that processing JavaScript at scale on every page of every site is hard. The crawlers that skip JavaScript outright are the AI ones. Client-side rendering works for Google. It's the rest of the field that loses.

SSR vs. CSR for SEO

Server-side rendering wins on SEO, full stop. SSR means your server returns fully-rendered HTML to the browser and every crawler, whether or not they execute JavaScript. CSR builds the HTML in the browser, which means anything before the JS runs is a blank shell. SSR is more work for your developers, but it's also the only way to guarantee AI crawlers see your actual content.

Common JavaScript SEO problems

The same patterns show up in every JS SEO audit. Content that only exists in useEffect hooks and never renders for bots. Client-side routing that doesn't update meta tags or the canonical URL. Infinite scroll without a fallback that loads all content at once. Loading states that return a spinner as the visible text. Buttons that trigger a route change without a real href. Each of these is invisible to AI crawlers and makes your page hard for Google to index properly.

What a whole-site scan can and can't tell you

The site mode reads raw HTML only. No browser, no rendering, one unmetered request per page, so the scan of this site (130 pages) took 12 seconds when I measured it on 17 September 2026. A rendered fetch of a single page through the same worker took two to three seconds, so rendering every page would run into minutes.

That trade buys precision on one question and gives up another. It tells you exactly what a non-rendering crawler receives, because that is literally the bytes it fetched. It cannot tell you what JavaScript would have added, because it never ran any. A page reading 40 words might be a broken React shell or it might be a contact form that genuinely has 40 words.

So the verdict is deliberately narrow. Shell means there is framework evidence and almost no text: an empty #root or #__next container, or a hydration payload sitting next to under 150 words. Thin means little text and no framework at all, which is a content observation and not a rendering bug. When a row looks wrong, open that URL in Compare and render it.

Explore more tools

FAQ

What does JS vs No-JS mean?+
JS refers to the fully rendered page with JavaScript executed. No-JS is the raw HTML source before any JavaScript runs. Comparing both reveals content that depends on client-side rendering.
Can I check every page at once?+
Yes, in Whole site mode. It finds your sitemap through the Sitemap line in robots.txt, falls back to /sitemap.xml, and reads up to 300 URLs as raw HTML. Each row shows the word count, H1 count, heading and link counts and JSON-LD count a non-rendering crawler receives, sortable, with a CSV export. It does not render, so it reports what the crawler gets rather than what JavaScript would have added.
Why does content disappear without JavaScript?+
Single-page applications built with React, Vue, or Angular render content in the browser using JavaScript. Without JS execution, the HTML may contain only an empty container element.
How do AI crawlers handle JavaScript?+
They don't run it. Vercel measured OpenAI's and Anthropic's crawlers in December 2024: both fetch JavaScript files and neither executes them. If your content relies on client-side rendering, those crawlers see an incomplete or empty page. Gemini is the exception, because it reads through Googlebot's infrastructure, which does render.
Which search engines render JavaScript?+
Google renders it, queued rather than immediately. Bing renders it too, on the Chromium engine behind Microsoft Edge, but says it can't do that reliably at scale on every page. Most AI crawlers don't render at all, which is why server-side rendering decides what those bots can read.
Why is this important for SEO?+
If key content like headings, links, or text only appears after JavaScript runs, crawlers that skip JS will miss it. This can hurt your indexing, rankings, and visibility in AI-powered search.
JS comparison on every page

Lumina compares JS vs No-JS content automatically and highlights the differences.

Add Lumina to Chrome — Free