AI Search / GEO

Do AI Crawlers Render JavaScript? What the Bots Actually See

This is the question that determines whether your content is visible to AI search at all, and, for a lot of modern sites, the answer isn’t great. Briefly: most AI crawlers don’t run JavaScript. They pull the HTML your server sends over and read that, no more, no less. If your page only “becomes” a page once a script runs, the bot crawling it sees nothing.

The short answer (with a caveat)

The special AI crawlers, GPTBot, ClaudeBot, PerplexityBot, CCBot, et al., are getting the HTML for your URLs straight from your server, and, as a rule, not doing anything to make your scripts run. Whatever is in that first load of HTML is what they see. Caveat: Google is different. Googlebot renders pages; Google AI Overviews are rendered with Google’s same index, so anything Googlebot can load, you can expect to still appear there. For OpenAI, Anthropic, and Perplexity crawlers, I’d stick with the blunt interpretation: “if it’s not in the HTML, it doesn’t exist.”

Why this quietly breaks a lot of modern sites

Most of the modern web is now client-rendered single-page apps. The server sends over a tiny, near-empty bit of HTML and bundles of JavaScript. That JavaScript is what builds the page you (as a human user, in a browser) actually see: text, headings, links, the works. It’s all hidden from humans, of course; it happens within the blink of an eye. To a crawler not running the JavaScript, it never gets rendered. It looks at the tiny bit of HTML, sees just <div id="app"></div> and a bunch of <script> tags, and moves on. The content is (sort of) “there,” only in instructions that the bot won’t (or can’t, on its own) execute.

The problem isn’t just your body text. Any navigation or internal links injected by the same JavaScript, the non-rendering crawler won’t see, so you won’t be surprised if the crawling bot just doesn’t see your site, either. Which compounds the issue: The bot lands on one (empty) page, then doesn’t see the links to the rest.

How to check what they’re actually seeing

You’ll just have to see raw HTML; the rendered result (as seen in a browser) isn’t really helpful. The quickest way: view the page’s source code. Not the DOM as you might see it in dev tools: the actual page source as loaded from your web server. You're going to have the same issue with your headline and primary text if it's not already in the source of your page. A crawler that doesn't run JavaScript won't be able to find it. Second, visit your URL using something that doesn't execute scripts and see what comes back. The test is really simple. Does your actual content show up in that response, or is it hidden behind your JavaScript?

The AI readiness checker does that check for you, automatically. It visits your homepage, measures how much content you've got in your source, and indicates whether the page relies on JavaScript if there's barely anything to be found without it. This is the exact scenario that makes sites unfindable to AI crawlers. If you'd like more background, check out our article on how AI and search engine bots crawl JavaScript. It covers the rendering challenge.

The Fix

Your actual content needs to be included in the HTML your site server serves, prior to JavaScript loading. There are a bunch of ways you can do this depending on your architecture. The most common ones are server-side rendering, static site generation, and pre-rendering. The first method lets you create the page on the server and send it out as a static HTML document, before the JavaScript can come in and take over. The second method involves your site's HTML being generated before your site is deployed, so each of the pages is fully constructed HTML. And the last renders out the page and sends out that rendered page to crawlers. Most of the frameworks most teams use for their development, things like Next.js, Nuxt and SvelteKit, all have options for them. So your work usually is less about recreating something from scratch, and more picking the right approach to what you're already doing.

No matter which option you go with, you want the same basic results. Your most important text and links should be visible in the source HTML of your page, not added in the browser. With that in place, you'll show up to both non-rendering crawlers and Googlebot alike. Which is exactly what you want.

The Bottom Line

Rendering is the gate you'll find that AI bots and other crawlers can access, but you need to unlock first. You could have the most share-worthy copy on the internet. You could let all crawlers into your site through robots.txt. Your content will still be invisible to them if it is not shown before the JavaScript loads. Do a check on your raw HTML to see what you're returning. Tackle those sites that are putting their critical content behind client-side rendering, and you'll avoid one of the biggest and most commonly missed reasons you're not appearing in AI answers. From there, you might find more helpful context in our article, how to get cited by ChatGPT and Perplexity to see this in the context of the citation process.

Frequently asked questions

Do AI crawlers run JavaScript?

Mostly not. The dedicated AI crawlers — GPTBot, ClaudeBot, PerplexityBot, CCBot and similar — fetch the raw HTML and generally do not execute JavaScript. Googlebot does render pages, and because Google AI Overviews builds on Google's index, content Google has rendered can still surface there. But for the OpenAI, Anthropic and Perplexity crawlers, assume what is in the raw HTML is what they see.

How do I see what an AI crawler sees?

Look at the raw HTML rather than the rendered page. View source (not the inspected DOM), or fetch the URL with a tool that does not run scripts, and check whether your main content and links are actually present. If the body is nearly empty until JavaScript runs, that is what a non-rendering crawler gets.

My site uses React or Vue. Is it invisible to AI?

Only if it relies on client-side rendering to produce the content. A single-page app that ships an empty shell and builds the page in the browser will look blank to non-rendering crawlers. Server-side rendering, static generation or pre-rendering fixes this by putting the real content in the initial HTML.

Does this affect Google rankings too?

It can. Googlebot renders, but rendering is deferred and resource-heavy, so heavy client-side dependence has long been a risk for classic SEO as well. Serving content in the HTML is the safer default for both search and AI engines.

Link exchange