SEO & Web

JavaScript Rendering Test

JS SEO

Test how a page renders without JavaScript

We'll load the page twice in headless Chrome — once with JavaScript disabled, once enabled — and compare the content, links and SEO tags a crawler can read in each.

Try:
nextjs.org
excalidraw.com
wikipedia.org
Load as
Google indexes the mobile version of a page, so Mobile is the default

Tool features

Real-browser rendering comparison for JavaScript SEO
6 checks

Two real browser passes

Loads the page in headless Chrome with JavaScript off and on, and runs the same extractor on both so the comparison is like for like.

Text and links compared

Counts visible words and links in each version and lists the paragraphs and URLs that only exist after JavaScript runs.

SEO tags checked for drift

Compares title, meta description, canonical, robots meta, H1, hreflang and JSON-LD between the served HTML and the render.

Side-by-side screenshots

Shows what the page looks like with and without JavaScript, as a mobile or desktop browser or as Googlebot.

robots.txt render check

Tests the scripts, stylesheets and API calls the page loads against robots.txt, since Google obeys it while rendering.

Errors and payload

Reports uncaught JavaScript errors, failed requests, and the script weight a crawler has to download to see the page.

Why JavaScript rendering matters for SEO

What crawlers see before and after scripts run

Many modern sites send a nearly empty HTML document and build the page in the browser with JavaScript. A person never notices. Crawlers do: Google renders JavaScript, but in a separate, deferred pass with a limited budget, and Bing, AI crawlers and the bots that build link previews mostly read only the HTML the server returns.

This test loads your page twice in a real Chrome browser, once with JavaScript disabled and once enabled, and compares what a crawler can read in each: visible text, links, the <title>, meta description, canonical, robots directives, headings and structured data. The percentage in the result is how much of the rendered text was already in the served HTML.

Client-side rendering is not automatically a problem. Widgets, personalised panels and anything you do not need indexed can safely wait for JavaScript. What should be in the server response is the main content, internal links, and every tag that tells search engines how to treat the page, especially noindex and the canonical.

Server-side rendering (SSR)
The server returns complete HTML for each request, so the content is readable before any JavaScript runs.
Client-side rendering (CSR)
The server sends an app shell and JavaScript builds the page in the browser. Crawlers that do not render see the shell.
Rendering queue
Google crawls the HTML first and renders JavaScript later. Content that only exists after rendering is indexed on that second pass.
Hydration
JavaScript attaching to server-rendered HTML to make it interactive. The content is already there, so crawlers can read it.

How to use this tool

Test JavaScript rendering in four steps
1
Enter a page URL
Type the full URL of the page, e.g. example.com/products/widget. A bare domain tests the home page.
2
Pick how to load it
Choose a mobile or desktop browser, or Googlebot Smartphone. Google indexes the mobile version, so Mobile is the default.
3
Compare the two versions
Check how much text and how many links are in the HTML without JavaScript, and whether any SEO tag changes once scripts run.
4
Fix and re-test
Move critical content and tags into the server response, then run the test again to confirm the served HTML carries them.

Frequently asked questions

Common questions about JavaScript rendering and SEO
8 Q&A

Yes. Googlebot renders pages with an evergreen version of Chrome. But rendering happens in a second pass after the HTML is crawled, it has a budget, and anything that fails, times out or is blocked by robots.txt during rendering is not indexed. Content in the served HTML is indexed on the first pass and does not depend on any of that.

Bing renders some JavaScript but less reliably than Google. Most AI crawlers and the bots that build link previews for Slack, WhatsApp, Facebook, LinkedIn and X read only the served HTML. If your title, description, Open Graph tags or main content are added by JavaScript, those services do not see them.

For pages you want to rank, as close to 100% of the main content as possible. The number drops for pages with client-side comments, reviews or recommendations, and that is often fine. Below about 80% it is worth checking what is missing; below 30% the page is effectively a client-side rendered app shell.

Google reads the robots meta tag in the served HTML before deciding whether to render. If that HTML says noindex, Google does not render the page at all, so the script that removes the tag never runs and the page is never indexed. Serve the robots directive you want in the HTML itself.

Google no longer recommends it. Serving pre-rendered HTML to bots and a JavaScript app to users is a workaround with its own maintenance costs. Server-side rendering, static generation or hybrid rendering, which every major framework supports, gives everyone the same HTML.

Sites often serve different markup per user agent: a mobile template, a bot-specific prerender, or a firewall that challenges unknown bots. A Googlebot result that differs sharply from Mobile usually means bot-specific handling. Note that this test is not Google, so a firewall that verifies real Googlebot IPs may block it.

Rotating content, ads, dates, A/B tests and lazy-loaded sections change between loads. Small differences are normal. What matters is the gap between the JavaScript-off and JavaScript-on versions in the same run.

No. The page is loaded in a fresh, isolated browser context that is discarded after the test. The screenshots are returned to your browser only and are not included in shared result links.