You send a courier to collect a document. They have ninety seconds and a hundred other stops. They will take whatever is sitting on the reception desk.
Your document is in a safe. The safe opens automatically, but it takes four seconds and requires the building's electricity. Google's courier has a key and is willing to wait. The AI couriers are not. They look at the desk, see nothing, and leave.
Your document is perfect. It has never been collected.
The evidence, and it is unusually clear
Vercel and MERJ instrumented real crawler traffic across their network and published the telemetry. This is not a survey or an inference — it is a log of what the bots actually did. TIER A
| Crawler | Monthly fetches observed | Executes JavaScript? |
|---|---|---|
| Googlebot | 4.5 billion | Yes |
| GPTBot (OpenAI) | 569 million | No |
| ClaudeBot (Anthropic) | 370 million | No |
| AppleBot | 314 million | Yes |
| PerplexityBot | 24.4 million | No |
Vercel / MERJ, "The rise of the AI crawler". The study found zero evidence of JavaScript execution by GPTBot across its sample. The bots do sometimes download JavaScript files — around 11.5% of ChatGPT's fetches and 23.8% of Claude's — but downloading is not executing.
This is not an oversight anyone is racing to fix. Rendering JavaScript at the scale of hundreds of millions of fetches a month is expensive in compute and slow. Skipping it keeps retrieval fast and cheap. Treat it as a design decision that will hold for the foreseeable future, not a temporary gap.
If your product descriptions, pricing, FAQs or service pages only exist after JavaScript runs, they do not exist for ChatGPT, Claude or Perplexity. Not "rank poorly". Do not exist.
Who this hits
You are at risk if your site is a single-page application, or built on a JavaScript framework in client-rendered mode, or if key content loads through tabs, accordions, "load more" buttons, or third-party widgets. Common examples:
- A React or Vue site rendered entirely in the browser.
- Pricing tables pulled from an API after page load.
- Reviews or testimonials injected by an external widget.
- FAQ answers hidden inside accordions that only populate on click.
- Product specifications loaded into a tab that is empty until selected.
You are probably fine if your site is WordPress with a conventional theme, plain HTML, Shopify's standard storefront, or a static-site generator. "Probably" is doing work in that sentence — check anyway, because plugins and widgets reintroduce the problem quietly.
In your browser, open your most important page and press Ctrl+U (Cmd+Option+U on Mac). This shows the raw HTML exactly as a non-rendering crawler receives it — not the inspector, which shows the page after JavaScript has run. That distinction is the whole test.
Now press Ctrl+F in that view and search for a distinctive sentence from your page body. If you find it, you are fine. If the raw HTML is mostly <div id="root"></div> and a pile of script tags, your content is invisible to three of the five engines.
Repeat for: your homepage, your main service page, your pricing page, and your contact page.
What to do if you fail the test
In order of preference:
Every serious framework supports it — Next.js, Nuxt, SvelteKit, Astro. The content is generated into the HTML before it is sent. This is the correct fix and it also makes the site faster for humans.
You do not need to rebuild everything. Prices, service descriptions, locations, opening hours and FAQ answers are the content that gets retrieved. Get those into the initial HTML and you have captured most of the value.
Content inside a collapsed accordion is usually in the HTML and simply hidden with CSS — which is fine. Content that is fetched when you click is not. Know which kind you have.
A pragmatic stopgap if a rebuild is months away. Not elegant, entirely effective.
Around 34.8% of ChatGPT's crawler fetches and 34.2% of Claude's landed on 404 pages, against 8.2% for Googlebot. TIER A These crawlers are working from stale or guessed URL lists and burning a third of their effort on pages that do not exist. Two implications: keep your sitemap accurate and current, and always redirect old URLs properly instead of letting them 404. You are cleaning up someone else's mess, but it is your visibility.
Press Ctrl+U on your four most important pages today and search the raw source for your own sentences. If they are not there, nothing else in this book will help until they are.