# Do AI assistants read JavaScript websites?

Published 2026-10-13, updated 2026-10-14. By LLMs Bureau (https://llmsbureau.com). Canonical: https://llmsbureau.com/guides/do-ai-assistants-read-javascript-websites

> An AI assistant reads the HTML your server sends and nothing more: if your words only appear after JavaScript runs, to the assistant your page is blank.

They read the HTML your server sends and do not run the JavaScript on it; no AI crawler in our server logs has requested a script. Scripts are fine as long as the words are already in that HTML. If the words only appear once a browser has run a script, the assistant receives a shell with a title and no text. Most publishing platforms send the words already; a site built in the browser by a front-end framework often does not.

## What an assistant receives when it opens your page

When ChatGPT decides your page might answer a question someone has just asked, it sends one request to your server. The request carries the user agent ChatGPT-User, the name ChatGPT uses when it fetches a page while answering someone. Your server replies with a file of HTML, and that file is all the assistant gets. There is no browser on the other end and no pause while scripts download and run. The crawler reads the text in the file and nothing that would have appeared later.

The same holds for every other reader we log, whether it fetches a page while answering a person (Perplexity-User, Claude-User, DuckAssistBot), builds an index (OAI-SearchBot, PerplexityBot) or collects training text (GPTBot, ClaudeBot). Every page on our two sites carries a script that a browser requests the moment the HTML arrives. In our server logs (our address-tracing site, 29 September to 13 October 2026; investigationbureau.uk, 5 to 13 October 2026) not one of these user agents has requested a script file or made a data call a browser makes after load. Each takes the HTML and stops. The Vercel and MERJ crawler study published in December 2024 reached the same conclusion.

The search engines are the exception. Googlebot and Bingbot can render JavaScript in a later pass, when they choose to, which is why a site built in the browser can appear in Google and still be blank to the assistants that fetch the page themselves (ChatGPT-User, Claude-User, Perplexity-User and the rest). Assistants that answer from those indexes, such as AI Overviews or Copilot, see whatever the index rendered.

## What an empty shell looks like to a crawler

Picture the source of a site built entirely in the browser, close to what an assistant receives: a page title, one empty container and the address of a script. That is the whole document.

A browser downloads the script, runs it, and fills the empty `div` with your headline, your services, your fees and your telephone number. The crawler does not. It sees a title, an empty box and a link to a script it will not run. It cannot quote your opening line, check your fees or find out who you are. So it names a firm whose page it could read.

The shell takes other forms. Some frameworks send the navigation and a loading spinner and fetch the words afterwards. Others can build the page on the server but have been set to build it in the browser instead. The test is the same each time: is the text in the file, or does a script put it there?

## How to see your own page as an assistant does

Three ways, from quickest to most thorough.

1. **View the source, not the inspector.** Press Ctrl+U, or right-click the page and choose View Page Source. This is the file your server sent. The Inspect panel shows the page after JavaScript has run, the view a crawler never gets. Search the source for your headline, first paragraph, fees and telephone number: the lines an assistant lifts, and the ones most often loaded late. If you find an empty `div` and script tags, you are a shell.
2. **Turn JavaScript off and reload.** Most browsers can block scripts for a single site. Do that for yours and reload: whatever you can still read is what the assistant can read.
3. **Run the free check.** Our [citation check](https://llmsbureau.com/check) fetches your home page live, as a browser and as ChatGPT-User, GPTBot, ClaudeBot and PerplexityBot. It counts the words that arrive without JavaScript, recognises the common app shells and shows whether a firewall or bot rule hands the crawlers a different page from the one a browser gets.

## Why the same blank page has a different cause on every site

A page can be built in the visitor's browser, on the server as it is requested, or once when the site is published. Only the first is invisible to the crawlers in our logs. The expensive part is that a blank page looks identical in view source whatever caused it, while the cause, and so the fix, differ from one platform and one build to the next.

On one site it is a framework setting someone changed; on another, a single part of the page that fetches its text after the rest has arrived; on another, a plugin that was never going to put its words in the file. A developer told only to "make it render on the server" can spend days on the wrong one, or rebuild a site that needed one setting changed. The free check shows which kind of blank you have in ten seconds; the [Audit](https://llmsbureau.com/pricing) specifies the fix for your platform and your developer.

## Which sites are affected, and what it costs them

Most small-business sites are fine already, because the common publishing platforms build the HTML on the server before they send it. The problems cluster in sites built with a front-end framework, a JavaScript toolkit that can build the whole page in the visitor's browser instead, and in pages on any platform where a widget or plugin loads the facts after the frame.

An affected site looks finished. It may rank well in search, and nothing reports an error, because to a browser nothing is wrong. The cost shows up elsewhere: every time someone asks an assistant a question your page answers, the assistant quotes a competitor whose page it could read, and the enquiry goes to them. Nobody tells you.

"Fine by default" means the words are in the HTML, not that the page answers anything. The free check shows in ten seconds which side of that line you are on; the Audit specifies the fix.

## Three things that still hide a server-rendered page

1. **Text loaded after the page.** Review widgets, price tables fetched from a booking system, FAQ accordions filled by a script, a plugin or app on any platform. The frame is server-rendered; the facts an assistant wants are not, so the page passes a glance at view source and still cannot be quoted on the one thing a customer asked about. The check counts the words that arrive without a script; the Audit specifies the fix.
2. **A JavaScript challenge in front of the site.** A managed challenge or similar bot screen answers a crawler with a "checking your browser" page and a script. A crawler that cannot run scripts never gets past it, so to the assistant the whole site is that one message for as long as the screen is up. Our guide on [which AI crawlers to allow](https://llmsbureau.com/guides/which-ai-crawlers-to-allow-in-robots-txt) looks at the same problem from the robots.txt side.
3. **Words in images.** A price list saved as a picture carries no text. The assistant reads the alt text, the short description a developer attaches to an image, if there is one, and nothing else.

## What followed on our own sites

Our address-tracing site and Investigation Bureau, our two sister sites, both send full HTML; on both, the words an assistant needs are in the file it receives.

Our address-tracing site went live on 29 September 2026 as a new domain. In its first 15 days the server logs record 27 answers served (a person asked an assistant something and it fetched one of our pages to reply): 24 from ChatGPT, 2 from DuckDuckGo AI and 1 from Perplexity (our address-tracing site's server logs, 29 September to 13 October 2026). By 13 October 2026 the same logs show ChatGPT search holding 35 of its pages, Anthropic 28 and Perplexity 13. Investigation Bureau went live on 5 October 2026 and recorded 8 answers served in its first 8 days, all from ChatGPT; between them those answers fetched 12 different pages, and one answer alone combined five of them, on what a UK investigator may lawfully do (investigationbureau.uk server logs, 5 to 13 October 2026).

Small numbers from two young sites, not a forecast. They show one thing: a page whose text is in the HTML can be read, indexed and fetched into an answer within weeks of going live. The full figures are in the [case files](https://llmsbureau.com/case-files).

## Questions people ask

**My site ranks well in Google. Does that mean the assistants can read it?**

Not on its own. Google can run JavaScript in a later pass; the AI crawlers we log do not. View the source: if your headline and first paragraph are in the file, you are fine.

**Is a title tag and a meta description enough?**

No. They tell the assistant what the page is about, not what it says. The sentence an assistant quotes has to be in the body of the HTML.

**My site is built with a modern JavaScript framework. Is that a problem?**

Not necessarily. Most frameworks can send the words in the HTML and many do so by default; the trouble is usually a setting, or one part of a page that fetches its text in the browser after load. View the source to see whether yours does. The Audit tells you where, and what to say to your developer.

**If I fix the rendering, will ChatGPT start citing me?**

Fixing it removes the thing that made citing you impossible. Whether you are cited then depends on whether your pages answer the questions people ask and whether anyone else mentions you.

## Sources

- Vercel and MERJ crawler study (December 2024): https://vercel.com/blog/the-rise-of-the-ai-crawler
- LLMs Bureau server logs, our address-tracing site (2026-10-13): /case-files/address-tracing-service
- LLMs Bureau server logs, investigationbureau.uk (2026-10-13): /case-files/investigation-bureau

## Related

- [Why does ChatGPT not mention my business?](https://llmsbureau.com/guides/why-does-chatgpt-not-mention-my-business)
- [Which AI crawlers should I allow in robots.txt?](https://llmsbureau.com/guides/which-ai-crawlers-to-allow-in-robots-txt)
- [How do I know if ChatGPT has read my website?](https://llmsbureau.com/guides/how-to-know-if-chatgpt-has-read-your-website)
