Can ChatGPT, Claude and Perplexity read JavaScript websites?
Quick answer
Mostly not. In Vercel’s December 2024 analysis of crawler traffic, OpenAI’s crawlers (OAI-SearchBot, ChatGPT-User, GPTBot), Anthropic’s ClaudeBot, PerplexityBot, Meta’s crawler and ByteDance’s Bytespider did not render JavaScript. Google’s Gemini uses Googlebot’s infrastructure, which does. If your text, prices or product details only appear after JavaScript runs, most AI crawlers see an almost empty page.
Who renders JavaScript
| Crawler | Runs JavaScript? | Source |
|---|---|---|
| OAI-SearchBot, ChatGPT-User, GPTBot (OpenAI) | No, in Vercel’s analysis | Vercel, Dec 2024 |
| ClaudeBot (Anthropic) | No, in Vercel’s analysis | Vercel, Dec 2024 |
| PerplexityBot | No, in Vercel’s analysis | Vercel, Dec 2024 |
| Googlebot (Search, AI Overviews; Gemini uses the same infrastructure) | Yes, rendering may happen after the first crawl | Google, JavaScript SEO basics |
How to check your own pages
- View page source (Ctrl+U or Cmd+Option+U). If you see your headline and main paragraphs, crawlers can too. If you mostly see
<script>tags and an empty<div id="root">or<div id="app">, they cannot. - Count the words without JavaScript:
This is rough (it counts script text too); the free checker strips scripts and styles first.curl -s https://yourbusiness.com/ | sed -e 's/<[^>]*>/ /g' | wc -w - Turn JavaScript off in your browser’s site settings and reload the page.
- Run the free checker: it reports words in the raw HTML, words inside
<main>, and app-shell markers.
How to fix it
- Use server-side rendering or static generation for pages that matter (Next.js, Nuxt, SvelteKit, Astro and others support it).
- If you cannot change the framework, pre-render key pages to static HTML.
- At minimum, put the essentials in the HTML: what you sell, prices, location or service area, contact details, and answers to the top questions.
- Keep structured data (JSON-LD) in the initial HTML, not injected later by a tag manager.
What we found on three live sites
| Site (home page) | Score | What the checker found |
|---|---|---|
| astorventuresllc.com | 98/100 | All 16 crawlers allowed; 3,664 words in the raw HTML. Small gaps: a 253-character meta description and no sameAs profile links in the schema. |
| hohocam.com | 94/100 | All 16 crawlers allowed; 2,165 words in the raw HTML; Product, Offer, FAQPage and VideoObject schema. Gaps: no <main> element and no published or updated date in the schema. |
| kemuva.com | 87/100 | All 16 crawlers allowed; 2,809 words in the raw HTML. Gaps: only Organization and WebSite schema on the home page, one question-style heading, no <main> element, no dates in the schema, and a 193-character meta description. |
Want a second pair of eyes? The AI visibility audit checks 16 AI and search crawlers against your robots.txt, firewall and HTML, and sends a plain-English PDF report within 48 hours with ready-to-paste fixes. $79 for the report, $149 with the fixes applied. It is a diagnosis, not a promise of citations.
Frequently asked questions
Does Google read JavaScript content?
Yes. Google says Googlebot renders JavaScript, though rendering can happen later than the first crawl. Other AI crawlers did not render it in Vercel’s 2024 analysis.
Is my Shopify, Wix or Squarespace site affected?
Many hosted builders send the main text in the HTML, but themes and apps vary, and some widgets (reviews, menus, booking tools) load only with JavaScript. Check your own pages with View page source or the free checker.
My site is a React single-page app. Do I need to rebuild it?
Not always. Pre-rendering the key pages, or moving them to server-side rendering, is often enough. The pages that matter most are the ones that answer customer questions: home, product or service pages, pricing and FAQ.
Does JSON-LD added by Google Tag Manager count?
Googlebot may see it after rendering, but crawlers that do not run JavaScript will not. Put JSON-LD in the HTML your server sends.