- Free, no sign-up
- Raw vs rendered, side by side
- What AI crawlers get
Free Rendered HTML Checker
Google renders JavaScript; ChatGPT, Claude and Perplexity's crawlers read only the raw HTML. Paste a URL and compare the two: the title, robots and canonical tags, headings, main text, links and structured data before and after JavaScript runs, with a screenshot of the render. Each difference says who misses it and what to fix. No sign-up.
0.0 0 ratings
How useful was this tool?
Be the first to rate it.
How to use it
Compare, read the rules, fix the template
Paste one URL per template
A product, a category with a filter applied, an article and a URL that should be a 404. Templates break, not single pages. The raw HTML comes back at once; the rendered version takes 5 to 20 seconds while a stateless Chrome runs the page's JavaScript.
Read the differences that matter
Four tiles say how much depends on JavaScript, then the two versions line by line: what is only in the raw HTML, what JavaScript adds and what it changes. Every field is tagged with who misses it: Google (which renders, but applies its rules to the raw HTML first) or AI crawlers (which read the raw HTML only).
Fix the template
Indexing tags first (robots and canonical right in the raw HTML), then content and links: server-side rendering or static generation for the main text, real <a href> links, structured data in the first HTML. Then test the next template.
Built forReact and Next.jsHeadless ShopifyVue and NuxtAI visibility
Quick answer
What is the difference between raw and rendered HTML?
Raw HTML is what the server sends; rendered HTML is the page after a browser runs its JavaScript. Google crawls the raw HTML, renders every indexable page that returns 200 and indexes the rendered version, but it may skip rendering a page whose raw HTML says noindex, and it wants the canonical to be the same in both. Most AI crawlers do not run JavaScript, so text, links and structured data that appear only after rendering are invisible to them. This tool fetches both versions and lists every difference that matters, with who misses it and the fix.
What Google does with JavaScript
Crawl, render, index, with four rules
Googlebot fetches the raw HTML, queues every page that returns 200 for rendering in an evergreen Chromium, then indexes the rendered page and follows the links it finds there. On one large Next.js site, Vercel and MERJ measured a median of 10 seconds between crawl and render. The rules that catch JavaScript sites, from Google's own documentation and its December 2025 clarifications:
| Rule | What goes wrong |
|---|---|
| A page that does not return 200 may not be rendered | Links and content added by JavaScript on a 404 or a redirect are never seen |
| noindex in the raw HTML may stop rendering | An app that ships noindex and removes it once data loads can stay out of the index |
| One canonical, before and after rendering | A router that rewrites the canonical on a sort or filter gives Google two values |
| Only <a href> links are followed | Product cards with onclick, "Load more" buttons and #/ routes are not links |
| 2 MB per HTML, JavaScript or CSS file | Code past the cut never runs |
Google's renderer is stateless: it clears cookies and local storage between pages, so content behind a consent banner or a saved preference is not there for Google. Ours is stateless in the same way.
What AI crawlers get
The raw HTML, and nothing more
In the best public measurement (Vercel and MERJ, December 2024), GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot, Meta-ExternalAgent and Bytespider did not run JavaScript; OpenAI's and Anthropic's crawlers fetched JavaScript files and did not execute them. Applebot renders, and Gemini uses Google's infrastructure. So a client-rendered shop that ranks fine in Google can be close to empty for ChatGPT and Perplexity. The raw column of this tool is what those crawlers read; check that they may come in at all with the AI Crawler Checker.
Rendering approaches
CSR, SSR, static and dynamic rendering
| Approach | What the crawler gets | Risk |
|---|---|---|
| Client-side rendering only | An almost empty HTML shell | High: depends on rendering, other bots may see nothing |
| Server-side rendering with hydration | Full HTML on every request | Low, if hydration does not change the indexing tags |
| Static rendering | Full HTML built ahead of time | Lowest for content that does not change by the minute |
| Dynamic rendering | Pre-rendered HTML for bots only | Medium: Google calls it "a workaround and not a recommended solution" |
Most WordPress and standard Shopify themes send full HTML from the server. Their risk is smaller: a slider, tab or "read more" block that loads its text by JavaScript after a click. If the text matters, put it in the HTML and use CSS to show or hide it.
FAQ
Questions people ask
Does Google render JavaScript?
Yes: every indexable page that returns 200, in an evergreen Chromium, usually within seconds of the crawl. It applies its rules to the raw HTML first.
Can ChatGPT read JavaScript websites?
Its crawlers did not run JavaScript in the best public measurement; they read the raw HTML. One unconfirmed 2026 report saw GPTBot rendering on a few sites, so treat it as unknown and changing, and keep key content in the raw HTML.
How do I see the rendered HTML of a page?
Search Console's URL Inspection live test for your own site, the Rich Results Test for any public URL, Chrome DevTools' Elements panel, or this tool, which also compares it with the raw version.
Is client-side rendering bad for SEO?
It is risky: Google usually manages, but other search engines and AI crawlers may see an empty page. Server-side rendering or static generation is the safe choice.
Can noindex be added or removed by JavaScript?
Never remove it with JavaScript: Google may not render a page whose raw HTML says noindex. Adding it with JavaScript to an error view is fine.
Why does my canonical change after the page loads?
A client-side router rewrites the head when a sort, filter or page changes. Keep one value in the raw HTML and stop the router from changing it.
Why are my links not crawled?
They are click handlers or #/ routes, not <a href> links. Wrap each card or button that opens a page in a real link.
Is dynamic rendering still OK?
Google calls it a workaround. If you have it, it is not a crisis; plan server-side or static rendering at the next rebuild.
How long does Google take to render a page?
On nextjs.org, Vercel and MERJ measured a median of 10 seconds, the 90th percentile about 3 hours and the 99th about 18 hours.
Will the result match Google exactly?
Close, not exact: we render in a stateless Chrome with Googlebot's smartphone user agent, but Google's renderer has its own timeouts and caches. Confirm a finding in URL Inspection or the Rich Results Test before a big rebuild.
Keep going
More free tools and guides
- AI Crawler Checker: whether GPTBot, ClaudeBot and PerplexityBot may crawl the site at all.
- Canonical Tag Checker and Noindex Tag Checker: the indexing tags in detail.
- Schema Markup Validator: the structured data, raw or rendered.
- Mobile-Friendly Test: what Googlebot smartphone gets compared with desktop.
- Rendering and JavaScript SEO (Advanced, chapter 2) and technical access for AI crawlers (GEO, chapter 6).
Did this tool help you?
Tap a star. It takes a second, no sign-up.
–
0.0 0 ratingsNo ratings yet.
See what every crawler gets
Raw and rendered HTML compared, with who misses what. Free, no sign-up.