Why AI Crawlers Can't Read Your JavaScript Site (and How to Fix It)
Your website looks perfect in a browser. But when ChatGPT, Claude, or Perplexity visit, they may see almost nothing. The reason is almost always the same: your content is drawn by JavaScript, and AI crawlers usually don’t run it.
How AI crawlers differ from your browser
A web browser downloads your HTML and then runs JavaScript to build the final page. AI crawlers and their indexing bots usually stop at the first step: they read the raw HTML your server sends and move on. They typically don’t wait for JavaScript, and they don’t click or scroll.
So the question that decides your AI visibility is simple: is your content already in the HTML, or does JavaScript have to build it?
What a JavaScript-only page looks like to AI
Many single-page apps (built with a framework in client-only mode) send an almost-empty shell like this:
<body>
<div id="root"></div>
<script src="/app.js"></script>
</body>
A browser runs app.js and fills #root with your content. An AI crawler reads the HTML above and sees an empty <div>. Your articles, product details, and prices only exist after JavaScript runs — so to AI, they don’t exist at all.
How to check your own site
- View source. Right-click the page and choose “View Page Source” (not “Inspect”). View Source shows the raw HTML the server sent. If your main text isn’t there, AI can’t see it either.
- Turn JavaScript off and reload. If the page goes blank, that is roughly what AI gets.
- Run a scan with this tool. The “What the AI actually sees” panel shows the exact text a crawler can read from your page.
How to fix it
The fix is to send the content in the HTML instead of building it in the browser.
- Server-side rendering (SSR). Frameworks such as Next.js, Nuxt, SvelteKit, and Astro can render pages on the server so the HTML arrives complete.
- Static generation (SSG). Pre-build pages to static HTML at deploy time — ideal for blogs, docs, and marketing pages.
- Prerendering. If you must keep a client-only app, prerender your key pages to static HTML.
- Progressive enhancement. Put the core content in the HTML first, then use JavaScript to enhance it — not to create it.
You don’t have to abandon JavaScript. You just need the important words to be in the HTML before any script runs.
The bottom line
JavaScript rendering is the single most common reason a site is invisible to AI, and it’s the first and biggest factor in our GEO overview. Check your raw HTML — and if your content isn’t there, move it to the server. Everything else matters far less if an AI can’t read your words in the first place.