Can AI crawlers read your main content without running any JavaScript?
Most AI crawlers do not run JavaScript, so your real content has to be visible in the raw HTML on first load.
What this signal tests
We check whether the main content of your pages - headings, body text, images, links - is present in the raw HTML that your server returns on the first request, before any JavaScript runs. We also compare what a default browser sees versus what crawlers see, to make sure your site is not silently serving different content based on the visitor's user agent.
Why it matters for your visibility in AI
This is the single most important technical issue for AI visibility on modern websites. The major AI crawlers - including GPTBot, ClaudeBot, CCBot, PerplexityBot, OAI-SearchBot, and Bingbot - do not execute JavaScript. They read whatever raw HTML your server returns and stop there. If your site is built as a single-page application where content only appears after JavaScript loads in the browser, AI crawlers see an empty shell and your content is invisible to them. This is the difference between a beautifully written site that nobody finds in AI answers and a plain server-rendered competitor that gets cited constantly. The fix is architectural but well-understood: server-side rendering, static generation, or prerendering. Once content is in the raw HTML, every AI crawler can read it, and the rest of your work - schema, sitemap, robots.txt - actually starts producing returns.
Pass criteria at a glance
| Criterion | Passes when |
|---|---|
| Raw vs rendered similarity >=0.70 AND UA-swap similarity >=0.95. |
How we test it
We fetch each sampled page twice: once with a plain HTTP client that does not execute JavaScript, and once with a real browser. We extract the main article-like content from each version and measure how similar the two are. A low similarity means your content depends on JavaScript and AI crawlers will miss it. We also fetch with two different user agents - a regular browser and a known crawler - and compare to make sure you are not cloaking content based on who is asking.
Show technical detection method
Fetch URL with plain HTTP (no JS) and via headless Chromium. Extract main content via Readability/trafilatura; compute Jaccard/cosine similarity. Also UA-swap (Googlebot vs default) to check cloaking.
If your site fails: how to fix it
- Identify which framework powers your site. If it is React, Vue, Angular, or Svelte without SSR, you are likely failing this signal. Static HTML, classic CMSs like WordPress, and SSR-enabled frameworks usually pass by default.
- If you are using a JavaScript framework, enable server-side rendering or static site generation. Next.js, Nuxt, Remix, and SvelteKit all offer this as a built-in option - usually a one-line config change plus a redeployment.
- If migrating to SSR is not feasible immediately, deploy a prerendering service (such as Prerender.io or Rendertron) at your CDN that detects bots and serves them a pre-rendered HTML snapshot.
- Never vary content by user agent for legitimate purposes - this is called cloaking and is treated as deceptive by both classic search and AI systems. If you need to vary anything, vary by Accept-Language or geography, not by user agent.
- Test by viewing the page source (right-click > View Source) in your browser. The main article text should be visible there, not in a JavaScript blob. If it is missing, AI crawlers see what you see.
- Re-run the AI Ready Test to confirm raw and rendered content are now similar enough to pass.
Quick facts
| Maturity | ESTABLISHED |
|---|---|
| Weight | high |
| Category | Crawlability |
Primary sources
Related signals
Frequently asked questions
My site loads fine in a normal browser - why is this a problem?
A normal browser runs JavaScript and patiently waits for content to appear. AI crawlers do not - they grab the raw HTML response and move on. If the content lives in JavaScript that runs only in the browser, the crawler sees an empty page and assumes you have nothing to say.
Does Google not run JavaScript?
Googlebot does, with a delay, in a two-pass system. But even Google warns that JS-rendered content is rendered later and less reliably. AI crawlers from OpenAI, Anthropic, Perplexity, and ByteDance generally do not render JavaScript at all. So while you may rank in Google, you can still be invisible in ChatGPT or Perplexity.
What is the fastest fix if I cannot migrate to SSR right now?
Add a prerendering service at your CDN. Cloudflare, Akamai, and dedicated providers like Prerender.io detect known bots and serve them a server-rendered snapshot while keeping the snappy client-side experience for human users. It is a stopgap, but a fully effective one.
How can I check this myself?
In your browser, right-click the page and choose View Source (not Inspect, which shows the rendered DOM). If you can find your main article text in the source code, you are server-rendered. If the source is mostly empty with a single root div, your content depends on JavaScript and crawlers cannot see it.
Run your own scan
Run a free scan and see how your site grades across all 155 AI-readiness signals.