Why AI crawlers see an empty page (and how to fix it)

Why ChatGPT, Perplexity, and other AI bots miss SPA and client-rendered sites, how to confirm it, and how SSR, SSG, or pre-rendering fixes it.

By Sumit JhaUpdated October 16, 20268 min readFor: Developers shipping React, Next.js client apps, and AI builders

Short answer

Most AI search crawlers do not run JavaScript. If your HTML is an empty root div plus script tags, they see almost no text—the same view free URL checkers see. Fix it with server-side rendering, static generation, or a pre-render step, then verify with view-source and a server-HTML checker.

Paste your live URL into the website checker or AI crawler checker. If server HTML has almost no words, AI search will struggle too.

The problem

Many React, Vue, and AI-builder sites ship a shell like <div id="root"></div> and fill the page only after JavaScript runs. Humans with Chrome see a full site. Crawlers that do not run JS see titles, maybe a generic meta description, and almost no body text—so they cannot quote or cite you.

How to confirm it

  1. Open view-source:https://yourdomain.com (or “View page source”). Look for your real headings and paragraphs in the raw HTML.
  2. Disable JavaScript and reload. If the page goes blank, crawlers that skip JS see the same blank.
  3. Run a server-HTML checker. Shipcheck warns when the body has under roughly 150 words of text in the response.

How to fix it

  • SSR or SSG: Next.js, Nuxt, Astro, and similar frameworks that render HTML on the server or at build time.
  • Pre-render: Generate static HTML for marketing routes even if the app is a SPA.
  • Keep critical copy in HTML: Hero headline, product explanation, and FAQ answers should exist without waiting for client fetch.

For builder-specific launch issues, see the launch checklist for AI-built sites.

Robots and firewalls

Even perfect HTML fails if you block AI search crawlers in robots.txt or at the CDN. Allow search bots such as OAI-SearchBot and PerplexityBot if you want citations; decide separately on training bots. Full rules: robots.txt for AI crawlers.

Re-check after you ship

After you enable SSR or pre-render, re-run the website checker and confirm the “Content is in the server HTML” style pass. Then ask ChatGPT or Perplexity a question your page should answer and see whether they can read it. For the broader GEO playbook, read how to get cited by AI search.

Questions

Do all AI crawlers skip JavaScript?

Most AI search and training crawlers fetch raw HTML and do not execute JavaScript like Chrome does. Treat “no JS” as the default. Googlebot is more capable at rendering, but AI answer bots often are not.

Why does a free URL checker say my page is empty when it looks fine in Chrome?

Paste-URL tools (including Shipcheck’s website checker) read the HTML the server sends, without running your app’s JavaScript—the same class of view many AI crawlers get. The Chrome extension checks the rendered tab.

Is Next.js always safe?

App Router and Pages with SSR or static generation put content in the first HTML response. A client-only SPA (or a builder that ships an empty shell) does not. Check view-source, not only the DevTools Elements panel.

Will llms.txt fix an empty shell?

No. llms.txt helps agents find important URLs. Those URLs still need readable HTML (or the assistant has nothing to cite).

Tools for this guide