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.
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
Crawler Access
Check AI & search crawler access.
Semantic HTML
Check semantic structure & accessibility.
Tech Stack
Detect frameworks & JS libraries.
GEO Readiness
Check if your site is ready for AI search engines.
llms.txt Generator
Create AI crawler guides for your site.
FAQ
Lumina compares JS vs No-JS content automatically and highlights the differences.
Add Lumina to Chrome — Free