Why AI assistants cannot see half your website
AI assistants read the raw HTML your server sends, not the finished page your visitors see. The crawlers behind ChatGPT, Claude, and Perplexity download JavaScript files but do not execute them, so any content your scripts build in the browser does not exist for them. Google is the one major reader that does run JavaScript, and even Google treats rendering as a separate, delayed step. If your site is a JavaScript app, the machines deciding whether to cite you may be reading a nearly blank page.
Which half goes missing?
"Half" is not a survey number, and we will not pretend it is. It is whatever share of your content exists only after JavaScript runs. On a site built as a client-side React, Vue, or Angular app, that share is usually most of the page: the server sends a stub, often a single empty div and a script tag, and the headlines, prices, and product claims are assembled later in the visitor's browser. A human never notices. A crawler that does not run scripts reads the stub, finds nothing worth quoting, and moves on.
The uncomfortable part is that these are often the best-looking sites. A fast, polished front end and an empty page are not opposites. They are frequently the same page, viewed by two different readers.
Do AI crawlers really skip JavaScript?
Yes, and this is measured, not folklore. Vercel analyzed over 500 million crawler fetches on its network and found that GPTBot (ChatGPT), ClaudeBot (Claude), and PerplexityBot all fetch JavaScript files but execute none of them (Vercel, The Rise of the AI Crawler). They collect the scripts. They never run them. A page whose content lives inside those scripts reads as blank.
Google says the same thing about the wider bot population. Its own JavaScript documentation recommends server-side rendering or pre-rendering "because it makes your website faster for users and crawlers, and not all bots can run JavaScript" (Google Search Central, JavaScript SEO basics). That is Google, the operator of the best-funded rendering pipeline in existence, telling you not to depend on rendering.
Does Google at least see everything?
Mostly, eventually. The same Google documentation describes three processing phases for JavaScript pages, crawling, rendering, and indexing, with rendering deferred to a separate queue after the first crawl. Your raw HTML is what gets read first. The rendered version is judged later, when resources allow. Even in the best case, a JavaScript-only page starts every evaluation a step behind, and Google is the exception among the machines now answering your customers' questions, not the rule.
How can you check your own site in two minutes?
You do not need a tool for the first test:
- Open your homepage in a normal browser.
- View the page source (right-click, then "View Page Source", or Ctrl+U).
- Search the source for a sentence from your main content, word for word.
- If it is not there, that content does not exist for any reader that skips JavaScript.
The source view is the letter your server actually mails out. Everything your visitors see beyond it was assembled after delivery, and only readers willing to do that assembly ever see it.
What our scan measures
Every AuditLamp scan runs a check called gate.renders_no_js. It reads your page the way the strictest machines do: no scripts executed, ever. It strips the script and style tags and counts the readable text that remains. Fewer than 400 characters of surviving text is a fail. An empty framework mount point with almost no text is the clearest fail we report, because it means the page is an app shell and many AI crawlers see the blank version. Between 400 and 1,000 characters is a warning, since content that survives but runs thin is still thin. A page with no JavaScript at all passes automatically, because its raw HTML already is the complete render. The scan prints these numbers in its evidence for every page it flags, the check is listed by name on what we check, and how the results are scored is documented on our methodology page.
What is the actual fix?
Not rewriting your site. The fix Google itself recommends in the documentation above is server-side rendering or pre-rendering: make the content exist in the HTML your server sends, instead of building it in the browser afterward. Every major framework supports this today. Next.js, Nuxt, and SvelteKit can all render pages on the server or export them as static HTML at build time.
You also do not need to convert everything. The pages that must be readable are the public ones: the homepage, pricing, product pages, documentation, and posts like this one. The application behind your login can stay a pure JavaScript app forever. No crawler was ever going to cite your dashboard.
The irony for AI companies
The sites most likely to fail this check are the ones selling AI. Modern AI startups ship beautiful client-rendered front ends, and then the models their customers consult for recommendations cannot read a word of them. We built a dedicated door for this audience: AuditLamp for AI and agent startups. You sell AI. Can AI see you?
If you want the answer for your own site, in plain language, worst problems first, run a free Visibility Scan at auditlamp.com.