Can AI crawlers read JavaScript?

Most appear not to, and OpenAI’s position may be changing. The evidence, and a test you can run today.

Most AI crawlers appear not to run JavaScript, so text your page adds in the browser may be invisible to them. Google is the main exception, and Apple says its crawler may render pages. OpenAI’s position may be changing, because one developer’s logs suggest some rendering since September 2026. Put anything important in the first HTML your server sends.

No major operator we checked publishes a full statement on this, so most of what’s known comes from outside tests. The main one is a Vercel and MERJ study from December 2024, which found that “none of the major AI crawlers currently render JavaScript”. That study is nearly two years old, and Vercel sells hosting for JavaScript sites.

What’s known about each crawler, 7 November 2026

  • RendersGooglebot

    Google documents a rendering stage. Vercel says Gemini uses the same infrastructure.

  • May renderApplebot, bingbot

    Apple says Applebot may render. Microsoft describes a rendering engine for Bingbot.

  • Possibly changingOAI-SearchBot, GPTBot

    No rendering in 2024. One operator’s logs suggest some from September 2026. OpenAI hasn’t said.

  • No sign of itClaudeBot

    No rendering in Vercel’s 2024 study or in a small 2026 test.

  • No rendering in 2024PerplexityBot

    Vercel’s result. A running 2026 test hadn’t yet seen this bot.

  • Not statedAmazonbot, CCBot

    Their pages don’t say. Vercel reported in 2024 that CCBot doesn’t render.

Which AI crawlers run JavaScript?

Only Google’s and Apple’s crawlers have clear statements behind them. Google’s documentation describes a queue in which headless Chromium executes a page’s JavaScript, and its AI guide says it can process JavaScript content that isn’t blocked. Apple says Applebot may render pages in a browser. Microsoft says it updates Bingbot’s page rendering engine to the latest stable Edge.

That leaves the crawlers behind ChatGPT, Claude and Perplexity. In the Vercel and MERJ study, these fetched pages without running their scripts. ChatGPT’s bots did download JavaScript files, in 11.50% of fetches, and Claude’s did in 23.84%. Downloading a file isn’t running it. The pages for OpenAI, Amazon and Common Crawl say nothing about rendering either way.

A running test by Genbox points the same way. It placed small tracking requests on a page, and in April 2026 GPTBot and ClaudeBot loaded the plain image while neither JavaScript probe fired. Treat this as a small sign only, because the page gives no visit counts and names no author. PerplexityBot hadn’t visited when we looked.

Has OpenAI started rendering JavaScript?

OpenAI may have started rendering JavaScript for some sites, but it hasn’t said so, and the evidence is from one operator. A developer’s logs, checked against OpenAI’s IP lists, show a change from 25 September 2026. That operator’s Next.js site began receiving prefetch requests that are normally sent only after JavaScript runs. Pages counted as rendered by GPTBot rose from 17 on 18 September to 4,395 on 28 September.

Pages apparently rendered by GPTBot on one Next.js site

18 September 202617
25 September 20261,994
28 September 20264,395
One operator’s logs, counted by referring page. OpenAI hasn’t confirmed this, and the post’s text gives 4,309 for the last day. Source: Hisashi, 1 October 2026.

The author lists the limits too. They found no announcement from OpenAI, and Cloudflare’s data showed OpenAI’s share of AI bot traffic flat through September, which suggests any rendering may be limited to some sites. Their guess is that GPTBot may render stored HTML later, in a separate step, and they can’t say how much it affects ChatGPT’s mentions. We’ve seen no independent confirmation, so don’t plan around it yet.

How common is the problem on real sites?

On one sample of new product sites, about one in ten had almost no text before JavaScript ran. The directory aat.ee checked 342 sites in October 2026, and 37 returned fewer than 50 words of body text in raw HTML. Thirty of those had an empty root element, typical of single-page apps. Leaving out 16 pages from three accounts brings the share down to 6.4%. It isn’t a sample of larger brands, and only each site’s submitted page was checked.

342 product sites, checked without running JavaScript

  • 37 sites had fewer than 50 words of body text
  • 305 sites had 50 words or more
Launches listed on one directory, which sells listings. Requests used a crawler’s name from the directory’s own network, so this tests pages, not real crawler behaviour. Source: aat.ee, 28 October 2026.

The framework mattered more than JavaScript itself. Only 1 of the 165 Next.js sites was thin, because those sites usually render on the server. For the thin pages that loaded fully in a real browser, median text went from nothing to about 475 words, so the content existed and the crawler simply wouldn’t see it. JavaScript on a page isn’t the problem. Content that exists only after it runs is.

How can you check what a crawler sees?

To check what a crawler sees, read your page’s raw HTML before any script runs. Use a page that matters, such as pricing or a main product page, and search for a sentence that should be there. If that sentence is missing, a crawler that doesn’t render won’t get it either. Each of these three methods takes a few minutes.

Three ways to check a page

  1. 1View source

    In your browser, view the page source and search for a key sentence. Use source, not the inspector, which shows the rendered page.

  2. 2Use the command line

    Fetch the page with curl and a crawler’s name, then search the result.

  3. 3Use a free tool

    Can AI read my page? shows the text available before JavaScript runs.

This command asks for a page using OpenAI’s crawler name, and counts the lines containing your sentence. Zero means it isn’t in the raw HTML:

curl -s -A "compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot" https://www.example.com/pricing | grep -c "Your key sentence"

Compare the result with a normal browser request. In the aat.ee audit, three sites returned 403 to the crawler’s name and 200 to Chrome’s, two of them through Cloudflare challenges. Your firewall may treat a fake request differently from a real crawler, so this test can only raise a question. To see what real bots receive, use your logs and verify the visits.

What should be in the first HTML response?

Put everything an assistant needs to describe you correctly in the first HTML response. That means your main text, headings, title, navigation, links, prices, product facts and structured data. Vercel’s advice is to server-render critical content and keep client-side rendering for non-essential features. Google also calls server-side or pre-rendering a good idea, since not all bots can run JavaScript.

Keep in the first HTMLFine to load with JavaScript
Product descriptions and main copyCharts that repeat text already on the page
Prices and plan detailsFilters, sorting and calculators
Answers inside tabs and accordionsChat widgets and consent banners
Links to your important pagesPersonalised dashboards
Title, canonical and structured dataAnimation

That split is our view, built from the sources above. If you run a single-page app, the usual fixes are server-side rendering, static generation or prerendering. Whatever you choose, send bots and people the same content. Next.js sites should also expect noisy logs if crawlers do render, and the developer above advises setting prefetch={false} selectively rather than blocking ?_rsc= requests.

Will fixing JavaScript get you named by AI?

Fixing JavaScript won’t get you named by AI by itself, because it only makes your page readable. We know of no controlled study showing that moving content into server-rendered HTML raises mentions. An assistant still has to find the page, choose it and decide your brand fits the question. What other sites say about you may matter more, as our guide to how assistants choose brands explains.

The same limit applies to our tools. The AI readiness checker and Can AI read my page? show whether text is available. Neither shows whether an assistant uses it. Still, this is worth fixing, because it’s cheap to check, it helps other crawlers too, and an assistant can’t quote a sentence it never received.

What to tell your engineers

A note you can adapt: “Please make sure key page content is in the initial HTML response, not added on the client. Most AI crawlers appear not to run JavaScript, though Google’s does and OpenAI’s may be starting to. Pages to check first: pricing, product and comparison pages. Test with view source or curl, and send crawlers the same content people get.”

Questions

Does ChatGPT read client-side rendered pages?

Assume not. A 2024 Vercel and MERJ study found OpenAI’s crawlers fetched pages without running their scripts. One operator’s logs suggest some rendering since September 2026, but OpenAI hasn’t confirmed it, so key content should still be in the first HTML.

Is a Next.js site fine for AI crawlers?

Usually, if pages render on the server. In one October 2026 audit, only 1 of 165 Next.js sites had almost no text in its raw HTML. Client components that fetch their main content in the browser can still hide it, so test the pages themselves.

Does Gemini read JavaScript?

Vercel’s 2024 study says Gemini uses Google’s crawling infrastructure, which renders JavaScript, and Google says it can process JavaScript content that isn’t blocked. That doesn’t make your rendered text certain to be used, only available.

Related tools

See what AI says about you, every week

Quotable asks ChatGPT, Gemini and Google AI Overviews for you, then shows what they say about your brand and what to fix.

Start free trial

Related articles

Drafted with AI assistance and checked against the linked sources.

Sources