To make your site readable to AI crawlers, serve your real content in the raw HTML response, because GPTBot, OAI-SearchBot, ClaudeBot, and PerplexityBot do not execute JavaScript. If your pages arrive as an empty shell that JavaScript fills in later, these bots see the shell: no product descriptions, no pricing, no articles, nothing to cite.
This is the most common silent failure in AI visibility. The site looks perfect in a browser, ranks fine in Google because Googlebot does render JavaScript, and is simultaneously a blank page to every AI chat crawler.
Test what the bots actually receive
Three checks take fifteen minutes. First, fetch a key page with JavaScript disabled: run curl against the URL, or use your browser with JavaScript turned off, and see whether your headline, body copy, and pricing appear in the response. If you see a nearly empty div and a bundle of script tags, you have the problem. Second, check robots.txt for accidental blocks on GPTBot, OAI-SearchBot, ClaudeBot, or PerplexityBot; teams sometimes block everything during a redesign and forget.
Third, grep your server logs for those user agents. Their presence tells you AI systems are trying to read you; their absence on a content-heavy site suggests they cannot get anything useful or are blocked.
Fix rendering in order of effort
You do not necessarily need a rewrite. Options from lightest to heaviest:
- Enable the rendering mode your framework already supports: Next.js, Nuxt, and SvelteKit all offer server-side rendering or static generation that most teams simply have not switched on for every route
- Pre-render or statically generate your money pages: product, pricing, comparisons, and top articles, even if the app shell stays client-side
- Serve critical facts in initial HTML: at minimum, get headlines, descriptions, prices, and schema into the server response before hydration
- Migrate the marketing site off the SPA: separating www from the app lets content go static without touching product code
Decide your robots.txt policy deliberately
Readable and permitted are different questions. GPTBot gathers training data, OAI-SearchBot powers ChatGPT search citations, ClaudeBot serves Anthropic, and PerplexityBot feeds Perplexity's live answers. Blocking training bots while allowing search bots is a defensible middle path for publishers, but for brands that want AI visibility, blocking any of them trades exposure for a principle you should price consciously. The full roster and trade-offs are covered in what AI crawlers are and how they work.
Whatever you choose, choose it explicitly. The worst position is an accidental block left over from a staging config.
Verify from the outside, then recheck after deploys
Rendering regressions ship silently: a refactor moves content behind hydration and nobody notices because the browser view never changes. Make an external check part of your routine. The free scan includes an AI-crawler readability check showing which bots can read your site, alongside whether the five major providers actually mention your brand, so you catch both the technical gate and its downstream effect in one pass.
Find out which AI bots can read your site
The free scan includes an AI-crawler readability check for your domain plus your brand's visibility across five providers, so you see the technical problem and its cost together.
Frequently asked questions
Which AI crawlers should I care about?
The main four: GPTBot (OpenAI training), OAI-SearchBot (ChatGPT search), ClaudeBot (Anthropic), and PerplexityBot (Perplexity). All fetch raw HTML and none execute JavaScript, so they share one requirement: your content must be present in the server's HTML response.
How do I check if AI bots can read my website?
Fetch a key page with curl or with JavaScript disabled in your browser and confirm the actual content appears in the response, not just an empty app shell. Also check robots.txt for blocks on the AI user agents and look for their hits in server logs.
My site is a React single-page app. Am I invisible to AI?
Quite possibly, if content only appears after client-side rendering. AI chat crawlers do not run JavaScript, so they see the empty shell. Fixes include enabling server-side rendering, statically generating key pages, or moving the marketing site to a pre-rendered setup.
Why does my site rank in Google but never get cited by AI?
Often because Googlebot renders JavaScript and AI crawlers do not. A client-side-rendered site can look complete to Google while serving empty HTML to GPTBot and PerplexityBot, which makes it uncitable in AI answers despite healthy rankings.
Related answers