Free SEO tools

JS Rendering Gap Checker

ChatGPT, Claude and Perplexity's live fetchers don't run JavaScript. On a client rendered page they get the nav, the footer and the cookie banner, and nothing you wrote. Google renders fine, so the page ranks, and your own browser renders fine, so nothing looks wrong. This reads your URL twice, once as a fetcher and once in a real browser, and shows you the difference. The background here.

Check one page, not a domain. A marketing page and an app route can behave completely differently.

How does this work?

It reads your URL twice. The first read is a plain request carrying ChatGPT-User's own user agent, so the HTML that comes back is exactly what the fetcher receives, JavaScript unexecuted. The second read runs the same URL in a headless browser and takes the DOM after JavaScript has finished. Both sides then go through the same text extractor, which is the part that matters: comparing one tool's markdown against another tool's HTML parse would measure the two converters rather than the two renderers.

The score is the share of the rendered page's body copy that the raw fetch never sees, measured in characters rather than blocks, because one missing article body matters more than nine present nav links. Blocks under 25 characters are left out of the score entirely, since Home, Sign up and Accept all match by coincidence on every site and would flatter every result. Above 70% the page is effectively a shell, above 30% most of it is gone, above 8% some of it is, and below that you're server rendering.

Why the box matters more than the number

A percentage tells you how much went missing. It can't tell you that the 6,000 characters which did arrive are a navigation menu and a language picker. Printing the raw fetch does, so the number and the evidence are both on the page and you can disagree with the number.

Why there's a daily limit

The second read runs your page in a real browser on a rendering service, and that costs money on every single check. There's no key for you to bring and no sign up, so the bill is this site's. A handful of checks a day per visitor keeps it free for everyone rather than fast for whoever scripts it first. If you need more than that, the thing you're building probably wants the measurement in your own CI rather than a web form.

What it can't tell you

One fetch of one URL from one vantage, at one moment. A page that assembles itself from an API can read differently on the next load, so re-run a borderline number before acting on it. It measures ChatGPT-User specifically. Claude-User and Perplexity-User behave the same way today, and Gemini and Copilot don't have this problem at all because they ride Google's and Bing's renderers.

Rendering is the third door. Check the first two