GUIDE · PART OF AI CRAWLER OPTIMIZATION

JavaScript and AI crawlers:
what they see, and what they miss.

Google runs a page's JavaScript before it reads it. The crawlers behind ChatGPT, Claude and Perplexity, as far as anyone has measured, do not. If your content arrives by script, those engines may be reading a page with very little on it. This guide shows how to check, and what to do if they are.

Do AI crawlers render JavaScript?

JavaScript rendering is the step where a browser runs a page's scripts and builds the content you see. Googlebot does this before it indexes a page. The major AI crawlers have not been seen to: a crawl study by Vercel and MERJ found that none of the AI crawlers it measured ran JavaScript. They read the HTML the server sends, so anything a script adds afterwards is missing from what they see.

Key facts

  • Googlebot renders JavaScript. The AI crawlers measured so far do not
  • An AI crawler may download a script file and still not run it
  • Content that the server sends in the HTML is safe, even if CSS hides it at first
  • Content that appears only after a script runs, or after a click, is at risk
  • Structured data added by a script is at risk in the same way as text
  • The test is simple: compare the page's raw HTML with what the browser shows

Last reviewed 15 October 2026 by the SEORCE team.

Why it's harder than it looks

The page looks fine. That's the problem.

Nothing about a JavaScript-built page looks wrong to a person, or to Google. You only see the gap if you look at what the server sent before any script ran.

Invisible in a browser

You see the finished page

Your browser runs the scripts, so you never see the empty version a non-rendering bot gets.

Hidden by Google

Search Console says it's indexed

Google renders the page, so its reports give no hint that other crawlers are seeing less.

Built in by default

Many modern sites render in the browser

A single-page app often sends a near-empty HTML file and builds everything afterwards.

In detail

What a bot gets, what's at risk, and the fix.

You don't need to rebuild the site. You need the important content to be in the HTML.

What a bot gets

Only what the server sent.

Fetch a page without running its scripts and you have what an AI crawler has. On some sites that is the whole page. On others it's a logo and a loading message.

  • The raw HTMLEverything in the first response from the server.
  • Scripts, unexecutedA crawler may fetch them as files. It won't run them.
  • Nothing added laterNo content from API calls, no injected markup.
Measured asRaw-to-rendered gap
See raw vs rendered in site audit →
On /pricingRaw HTMLRendered
Title and headingsYesYes
Pricing tableMissingYes
FAQ answersMissingYes
Product schemaMissingYes
Internal links1248
Demo account · illustrative
What's at risk

Anything that waits for a script.

The line is between content that is in the HTML and content that is fetched or built afterwards. Hidden is fine. Absent isn't.

  • Client-rendered pagesWhere the main content is built in the browser.
  • Tabs and accordions that load on clickIf the content is fetched when opened, a bot never opens it.
  • Lazy-loaded sectionsContent that appears only as you scroll.
  • Schema added by scriptIncluding markup injected by a tag manager.
Watch forClient-side renderingClick-to-loadInjected schema
Read the AI visibility diagnosis guide →
Is it in the raw HTML?
Hero text and headingsYes
Accordion content, hidden by CSSYes
Pricing table, fetched by scriptNo
Reviews, loaded on scrollNo
Schema, injected by tag managerNo
Demo account · illustrative
The fix

Put what matters in the HTML.

This is development work, and usually less of it than people fear. The aim is narrow: the content you want quoted should be in the first response.

  • Render on the server, or ahead of timeReact, Vue and the tools built on them can all do this.
  • Start with the pages that matterProduct, pricing and the pages that answer buyer questions.
  • Leave the rest aloneA chat widget or a carousel loading by script costs you nothing.
  • Test again afterwardsThe raw HTML should now contain the content.
OptionsServer-side renderingStatic generationPrerendering
Read the AI crawler optimization guide →
/pricing · after server-side rendering
In the raw HTMLBeforeAfter
Pricing tableNoYes
FAQ answersNoYes
Product schemaNoYes
Chat widgetNoStill by script
Demo account · illustrative
How to do it

Checking your own pages, one at a time.

Start with five pages you'd most want an AI engine to quote.

STEP 1

Pick the pages

Product, pricing and your best answers to buyer questions.

STEP 2

Look at the raw HTML

View the page source, or open the page with the browser extension.

Get the free extension →
STEP 3

Search it for your key content

If a sentence you care about isn't in the source, a non-rendering bot can't read it.

STEP 4

List what's missing

Separate what matters from what doesn't. A missing chat widget is fine.

STEP 5

Move it server-side, then re-test

Hand the list to a developer, and check the raw HTML again once it's done.

Site audit →
Reference

Which crawlers run JavaScript.

CrawlerRuns JavaScript?What that means for you
GooglebotYes, in a second pass that can be delayed.Google sees the finished page. So do its AI Overviews, which draw on the same index.
GPTBot, OAI-SearchBot, ChatGPT-UserNot observed to.ChatGPT works from the raw HTML.
ClaudeBotNot observed to.The same applies.
PerplexityBotNot observed to.The same applies.

Based on a crawl study by Vercel and MERJ. Crawler behaviour can change, so test your own pages instead of relying on a table.

How SEORCE does it

Raw against rendered, for every URL.

Technical Suite compares what your server sends with what a browser builds, across the whole site, so content that only appears after scripts run is flagged page by page. AutoFix is delivered by script as well, and it is built so that Google and AI crawlers read the fixed page. We test each fix type against them before it goes out.

Common questions

Frequently asked questions.

Updated 15 October 2026

The ones that have been measured don't. A crawl study by Vercel and MERJ found that none of the major AI crawlers it looked at ran JavaScript. They read the HTML the server sends.

Only what is in the initial HTML. If the app renders in the browser and the server sends a near-empty page, ChatGPT's crawlers get the near-empty page. Server-side rendering fixes that.

It depends how it's built. If the content is in the HTML and only hidden by CSS, a crawler can read it. If it's fetched when someone clicks, a crawler never sees it.

Usually not. The aim is to get the important content into the first response, on the pages that matter. React, Vue and similar tools can render those pages on the server or ahead of time.

Much less. AI Overviews draw on Google's own index, and Googlebot renders JavaScript. The gap is with the other AI engines.

Yes. AutoFix is built so that Google and AI crawlers read the fixed version of the page, and each fix type is tested against them before it is released. That is different from a tag manager injecting markup in the browser, which a non-rendering crawler would miss.

View the page source in your browser and search for a sentence you care about. If it isn't there, a non-rendering crawler can't read it. The SEORCE extension shows the same comparison without the hunting.

Yes. The SEORCE browser extension shows the difference between a page's raw HTML and its rendered version, for whatever page you have open. You can also view the page source in any browser and search for your key content.

Free to start

See your pages without JavaScript.

Add your site and run a crawl. Every page is checked for content that only appears after scripts run.

3,000+ users · Priced per project, never per seat

Not ready for an account? Use the free browser extension or any of the free tools.