Guides

Why ChatGPT and Perplexity can't read your JavaScript site

You built your site with Lovable, Bolt.new, Replit, or plain React and Vite. It looks great in a browser. But when you ask ChatGPT or Perplexity about your product, they describe it vaguely, get it wrong, or say they can't find anything. Link previews in chat apps show a blank card.

The most common reason is simple: the AI crawler downloaded your page and found almost nothing in it.

What an AI crawler receives from a single-page app

A client-side rendered app sends the same nearly empty HTML for every URL:

<title>Vite + React</title>
<div id="root"></div>
<script type="module" src="/assets/index-abc123.js"></script>

Your browser runs that JavaScript and builds the real page. A crawler that doesn't run JavaScript stops at the empty root div. It sees no headline, no pricing, no product description, and often a generic title.

Google renders JavaScript in a delayed second step, which is why some SPAs eventually show up in Google. Many AI crawlers don't render at all. A widely cited 2024 analysis by Vercel of crawler traffic found that OpenAI's, Anthropic's, and Perplexity's crawlers fetched JavaScript files but did not execute them, while Google's crawler did. Crawler behavior changes over time, so test your own site rather than relying on any list.

Which bots matter

These are the user agents you'll most often see in your logs from AI products:

If any of these get an empty shell, that product has little to say about you.

Check what they see in two minutes

1. Fetch your page without JavaScript. This is roughly what a non-rendering crawler gets:

curl -s -A "GPTBot" https://www.yourdomain.com/ | grep -i -E "<title>|<h1|<meta name=\"description\"|id=\"root\""

If you see your real <h1> and description, you're in good shape. If you only see id="root" and a default title, AI crawlers are reading a blank page.

2. Check robots.txt. Open https://www.yourdomain.com/robots.txt. Make sure you aren't blocking GPTBot, ClaudeBot, or PerplexityBot by accident, and that the file is real text, not your app's HTML (a common SPA fallback bug).

3. Run a side-by-side. What Googlebot Sees shows the raw HTML a crawler downloads next to the rendered page, free and with no signup. The free SEO checker also flags a missing title, description, canonical, social tags, robots.txt, and sitemap.

How to fix it

Option 1: Prerender for bots at the edge (no rewrite). A prerendering layer sits in front of your site. When a crawler visits, it gets fully rendered HTML; people still get your normal app. This works for Google, AI crawlers, and link previewers at once. With CrawlFixer, you point your www CNAME at customers.crawlfixer.com and keep your current host. See Connecting your domain.

Option 2: Build-time prerendering. Tools that snapshot each route to static HTML during the build. Good for a handful of marketing pages; harder for pages driven by live data.

Option 3: Move to server-side rendering. Next.js, Remix, or Astro send real HTML from the server. It's the most thorough fix and usually the most work. If you're weighing this, read Lovable vs Next.js for SEO first.

Whichever route you pick, make sure each page's HTML includes a unique title, meta description, canonical link, and Open Graph tags, and that robots.txt and sitemap.xml return real text and XML.

Will this get me cited by ChatGPT?

Nobody can promise that. AI products decide what to cite on their own, and they also weigh how well known and linked-to your site is. What you can control is whether they can read your page at all. An empty shell guarantees you're invisible; real HTML gives you a fair shot.

See your site the way a crawler does

Run What Googlebot Sees on your homepage. If crawlers are getting an empty root div, start a free 7-day trial with no card. After that it's $12/month per site, or $49/month for up to 10 sites on the agency plan.

Related: React SPA SEO without Next.js · Lovable site not indexed by Google · Why your Bolt.new site isn't on Google · Replit app SEO

CrawlFixer is not affiliated with OpenAI, Anthropic, Perplexity, or Google.

See it for your own site: What Googlebot Sees shows the raw HTML Google downloads next to the rendered page, free. Or run the free SEO checker, or start a free 7-day trial.