GPTBot and PerplexityBot read your raw HTML and skip your JavaScript entirely. Beacon renders your page in a real headless browser and shows you exactly the content — and keywords — AI engines never see.
This is what Beacon shows for a client-rendered page — Example · sample data
A real render, a real diff — the precise gap between what bots fetch and what users see.
See your raw HTML side by side with the fully JavaScript-rendered DOM — exactly the difference between what GPTBot fetches and what a browser shows.
A single number: how much of your visible text exists only after JavaScript runs, and is therefore invisible to non-rendering AI crawlers.
The specific terms — product names, prices, FAQ answers, key copy — that appear in the rendered DOM but are absent from the static HTML.
Beacon labels each page server-rendered, hybrid, or client-rendered so you instantly know how exposed you are.
We load your page in an actual headless browser, run its JavaScript, and diff the result — no heuristics, no guessing what a crawler sees.
Concrete next steps: server-side rendering, static generation, or dynamic prerendering for AI bots — mapped to your stack.
Enter a URL for an instant AI-readiness score. The full static-vs-rendered diff — word gap, render mode and the keywords bots miss — runs inside Beacon.
AI crawlers like GPTBot (OpenAI / ChatGPT), PerplexityBot, ClaudeBot and Amazonbot request your URL and parse the raw HTML that comes back — the same bytes you’d see with “View Source.” They don’t launch a browser engine or run your scripts. So a single-page app that ships an almost empty <div id="root"></div> and injects all its real content (headlines, prices, FAQ answers) with JavaScript looks complete to a human and blank to a bot. You can rank in Google, look perfect to visitors, and still be invisible to the AI engines your buyers ask for recommendations.
Beacon doesn’t guess. We fetch your page’s static HTML the way a non-rendering crawler does, load the same URL in a real headless browser to capture the rendered DOM, then diff the two — reporting the percentage of content that exists only after JavaScript runs, the exact keywords missing from the static version, and your render mode (server-rendered, hybrid, or client-rendered) so you know instantly how exposed you are.
The fix is always the same principle: get your important content into the HTML the server sends, before any JavaScript runs — via server-side rendering, static generation, or dynamic rendering for bots. Render Gap pairs with the rest of Beacon: the free AI Visibility Checker, AI Search Visibility, a full SEO Audit, then a free account to track your render gap over time.
Almost none of them do. GPTBot (ChatGPT/OpenAI), PerplexityBot, ClaudeBot, Amazonbot and most other AI crawlers fetch your raw HTML and parse it as-is. They do not spin up a browser engine to run your JavaScript, so any content injected by JS after load is effectively invisible to them.
A render gap is the difference between your static HTML (what AI crawlers download) and your JavaScript-rendered DOM (what a human in a browser sees). Beacon expresses it as the percentage of visible content and the set of keywords that only exist after JavaScript executes. A large render gap means AI engines are reading a near-empty page.
It depends on how you render. A pure client-side React app (e.g. Vite SPA or create-react-app) ships an almost empty HTML shell and builds everything with JS — that is a maximal render gap. Next.js, Remix, Astro and similar frameworks can server-render or statically generate pages, which closes the gap — but only for the routes you actually configure that way. Beacon checks the real output rather than assuming.
Move your important content into the HTML the server sends. The main options are server-side rendering (SSR), static site generation (SSG / prerendering at build time), and dynamic rendering, where you serve a prerendered HTML snapshot to bots. At minimum, make sure headings, body copy, prices, and FAQ answers are present in the static HTML rather than fetched and injected by client JavaScript.
Mostly yes — Googlebot runs a modern rendering engine and will execute your JavaScript in a second pass, so client-rendered content can still rank (though rendering is slower and can be deferred). The critical difference is AI search: GPTBot, PerplexityBot and most LLM crawlers do not render JavaScript at all. So you can pass a Google JS-SEO check and still be invisible to ChatGPT and Perplexity.
Free account — render-mode classification, the keywords bots miss, and how to close the gap.