Does JavaScript rendering stop AI crawlers from reading my site?
Last updated October 14, 2026. Written by the Third Coast AI team.
Yes, for most of them: the crawlers behind ChatGPT, Claude and Perplexity fetch your HTML and do not execute the JavaScript in it, so any text that is written into the page by a script after it loads (tab panels, accordions, product data pulled from an API, reviews widgets, and entire pages built client-side by a front-end framework) is simply absent from what those engines read, while Google renders JavaScript in a deferred second pass and Bing renders it with limits, which means a JavaScript-heavy site can rank in Google and still be invisible to ChatGPT. Google's own advice is that "server-side or pre-rendering is still a great idea because it makes your website faster for users and crawlers, and not all bots can run JavaScript."
This page sets out what each engine's documentation and the log studies say about rendering, gives a five-minute test any marketing director can run without a developer, and lists the fixes in order of effort. It follows on from the robots.txt page, since access comes first and readability second.
Which AI crawlers run JavaScript, and which do not?
The clearest measurement is Vercel's December 2024 crawler study, which analyzed request logs across its hosting network and concluded that "none of the major AI crawlers currently render JavaScript," naming OpenAI's OAI-SearchBot, ChatGPT-User and GPTBot, Anthropic's ClaudeBot and Perplexity's PerplexityBot. The study noted that the agents do fetch JavaScript files, with 11.50% of ChatGPT's requests and 23.84% of Claude's going to script files, but do not execute them, so the fetch tells you nothing about what the engine saw. Nothing the vendors have published since contradicts that finding, and the practical rule that follows is simple: a page whose main text arrives by script can be read by Google and missed by the others.
Google is the exception, and even Google hedges. Google's JavaScript SEO documentation describes processing in three phases, crawling, rendering and indexing, says "Google Search runs JavaScript with an evergreen version of Chromium," and explains that a crawled page goes into a render queue where it "may stay on this queue for a few seconds, but it can take longer than that," with rendering happening "once Google's resources allow." Bing's 2018 post on Bingbot and JavaScript said bingbot "is generally able to render JavaScript" while admitting "it is difficult for bingbot to process JavaScript at scale on every page of every website," and recommended dynamic rendering, meaning pre-rendered static HTML served to the crawler.
| Engine or crawler | Executes JavaScript | Source | Practical reading |
|---|---|---|---|
| ChatGPT (OAI-SearchBot, ChatGPT-User, GPTBot) | No | Vercel's December 2024 crawler study | Only the initial HTML is read |
| Claude (ClaudeBot, Claude-SearchBot, Claude-User) | No | Vercel's December 2024 crawler study | Only the initial HTML is read |
| Perplexity (PerplexityBot, Perplexity-User) | No | Vercel's December 2024 crawler study | Only the initial HTML is read |
| Google (Googlebot; feeds AI Overviews, AI Mode, Gemini grounding) | Yes, deferred | Google's JavaScript SEO documentation | Rendered in a queue that can take longer than seconds; pre-rendering still recommended by Google |
| Bing (Bingbot; feeds Copilot) | Partly | Bing's 2018 post on Bingbot and JavaScript | Generally able, not at scale; Bing recommends dynamic rendering |
How can you tell whether your text is in the HTML?
Without a developer, in about five minutes, and we suggest doing it on the three pages that matter most before reading any further. Open the page in a desktop browser, press the keys for view-source (Ctrl-U on Windows, Command-Option-U in Safari or Command-U in Chrome on a Mac), and search the source for a distinctive sentence from the part of the page you want cited: a price, a claim, a line from a testimonial. If the sentence is in the source, the AI crawlers can read it. If the source shows a near-empty body with a script tag and a root div, the page is built client-side and the crawlers see nothing. The browser's inspector is not a valid test, because the inspector shows the page after JavaScript has run, which is exactly the view the crawlers do not get.
- Run the view-source test on the home page, the main service page and the page that holds your pricing or your proof.
- Check tabbed and accordion content separately, since the HTML often contains the first panel and loads the rest on click.
- Check anything fed by an API: product specs, inventory, reviews, store locators, calculators.
- Check the schema. JSON-LD injected by a tag manager after load is invisible to the same crawlers, which matters for Copilot, since Microsoft has said it uses structured data for grounding.
- Fetch the page with a command-line tool using OAI-SearchBot's user-agent string and compare the byte count with what the browser receives; a large gap usually means a CDN challenge rather than a rendering problem, which the robots.txt page covers.
The most expensive sentence on a client's site is usually the one a developer moved into a tab to make the page look cleaner. Google still reads it. ChatGPT never will.
Third Coast AI
What fixes work, in order of effort?
There are four, and most companies need the second. The cheapest is to move the sentences that matter out of script-loaded components and into the static HTML: the answer paragraph, the decision-factor proof, the pricing table, the testimonial. That can be done inside most CMS templates in an afternoon and solves the problem for the pages that earn citations. The second is to have the CMS or framework render pages on the server, which most modern platforms support as a setting (static generation or server-side rendering) and which Google's JavaScript SEO documentation recommends anyway for speed. The third is dynamic rendering, which Bing's 2018 post on Bingbot and JavaScript described: detect the crawler's user agent and serve a pre-rendered static version, a workable patch for a large legacy application that cannot be rebuilt. The fourth is a rebuild, which is sometimes the right answer for a site whose whole front end is a single-page application and whose owners want to be cited for years rather than months.
Whatever the fix, the schema needs the same treatment. JSON-LD placed in the HTML head by the template is read by every crawler; JSON-LD injected by a tag manager is read by Google after rendering and by nobody else. The schema page covers the detail, and for a site that has done both, the structure guide is the next step, since text that is readable still has to be quotable.
Is this really worth fixing for the traffic involved?
We think the traffic is the wrong measure. Pew measured people clicking a link in 8% of visits with an AI summary against 15% without, so most AI answers end without a click whether or not you are cited, and the value of being cited is the recommendation, with Semrush's AI search traffic study finding the visitors who do arrive from AI search convert at about 4.4 times the rate of classic organic. The Princeton researchers (Aggarwal and colleagues, KDD 2024) found quotations, statistics and cited sources lifting a page's visibility in generated answers by roughly 41%, 33% and 28%, and none of that applies to a page the engine cannot read. Rendering is the gate before every other lever, which is why it sits in the first week of our audit and in the first line of the checklist.
Frequently asked questions
Yes. Google's documentation says it renders JavaScript with an evergreen Chromium in a deferred second pass, while Vercel's log study found none of the major AI crawlers execute JavaScript. A page can rank in Google and be blank to ChatGPT.
No. The inspector shows the page after scripts have run. Use view-source, which shows the HTML as delivered, and search it for the sentence you want cited.
Yes, if it is injected by a tag manager after load. JSON-LD in the template head is read by every crawler; JSON-LD added by script is read by Google after rendering and by the other engines not at all.
Serving a pre-rendered static HTML version to crawlers that identify themselves. Bing recommended it in 2018 and it remains a workable patch for a legacy application, though server-side rendering is the cleaner fix.
Google re-renders on its next crawl. The other engines read the new HTML the next time their crawlers fetch the page, which Vercel's volumes suggest is frequent for GPTBot and ClaudeBot and slower for PerplexityBot. Submit changed pages through IndexNow for Bing.