Rendering and AI
Can AI Crawlers Read JavaScript? Why Some Sites Look Blank to ChatGPT
Your site looks finished in a browser: the prices, the reviews, the service list, all there. Now ask what a crawler sees if it never runs your scripts. For some sites the honest answer is a logo, a menu and an empty box where the business used to be.
October 18, 2026 · 9 min read
The short answer
Mostly no, as far as the evidence shows. Vercel's December 2024 analysis found that crawlers from OpenAI, Anthropic, Perplexity, Meta, ByteDance and Common Crawl did not execute JavaScript, while Googlebot and Applebot did. Text that appears only after scripts run may be invisible to many AI engines. Server-rendered HTML, from Next.js or a well-built WordPress site, avoids the problem.
On this page
Two versions of every web page
Every page exists twice. There is the HTML the server sends, and there is the page a browser builds after it runs the scripts in that HTML. On a traditional site the two are nearly the same: the words are in the HTML from the start. On a site built to render in the browser, the HTML can be a near-empty shell with one instruction: go fetch the content and draw it.
A person never notices the difference, because a browser runs the scripts in a fraction of a second. A crawler that reads only the raw HTML notices everything. It records a page with a title, a navigation bar and no prices, no services, no reviews. Then an engine asked about your business has nothing to quote, and it quotes someone else. That is one of the quieter reasons a site ranks on Google but is missing from AI answers, a pattern we describe in your site ranks on Google and is invisible to AI.
A crawler that does not run scripts sees the page you shipped, not the page you designed.
What Vercel's 2024 crawler study found, and how old it is
The best public evidence comes from one source: an analysis Vercel published on December 17, 2024, based on crawler traffic across its hosting network. It is useful and it is dated. Vercel is a hosting company with a view of its own customers' traffic, not an independent lab, and the crawlers it describes may have changed since. We treat it as medium confidence and say so.
| Runs JavaScript? | Basis | |
|---|---|---|
| Googlebot | Yes | Google says it can process JavaScript that is not blocked; pages wait in a rendering queue first |
| Bingbot | Yes | Bing says it renders with an evergreen Microsoft Edge engine |
| Applebot | Yes | Vercel, December 2024; Apple says blocked scripts or CSS can stop it rendering properly |
| GPTBot, OAI-SearchBot, ChatGPT-User | No | Vercel, December 2024 |
| ClaudeBot | No | Vercel, December 2024 |
| PerplexityBot | No | Vercel, December 2024 |
| Meta-ExternalAgent, Bytespider, CCBot | No | Vercel, December 2024 |
| Claude-SearchBot, Claude-User, Perplexity-User and others | Unknown | No published test we could find |
One detail is worth knowing. Vercel found that ChatGPT's and Claude's crawlers do download JavaScript files (11.50% and 23.84% of their requests, respectively) but do not run them. Fetching a script is not the same as executing it. Vercel's own advice was blunt: server-render the content that matters. Google says much the same in its JavaScript guidance, noting that not all bots can run JavaScript. The full crawler list, with what each one is for, is on the AI crawlers page.
Sites and widgets most likely to go blank
This is not a whole-site verdict. Many sites are fine everywhere except one or two important pieces that a script drops in after load. Those pieces are often exactly the ones an engine would quote.
Single-page apps
Sites built as browser-rendered apps, where the server sends a shell and the framework draws every page. The whole site can be blank to a non-rendering crawler.
Review and rating widgets
Third-party widgets that inject review text with a script. Your best customer quotes may exist only in the browser.
Pricing tables and calculators
Prices pulled from an API after the page loads. The number an engine most wants is the one it cannot see.
Structured data added by a tag manager
JSON-LD inserted through a tag manager is added by script, so it is missing from the raw HTML.
Tabs, accordions and load-more buttons
Content fetched only when clicked never reaches a crawler. Microsoft also warns that AI systems behind Copilot may not render hidden content such as tabs and expandable menus.
Store locators and booking embeds
Addresses and hours drawn from a map script or booking iframe rather than written on the page.
Test your own pages with view-source and curl
You do not need a tool or an agency to check this. You need a sentence from your page and two minutes. Pick a sentence that matters: a price, a service name, a line from a review.
- 1
Open the raw HTML
In Chrome, Edge or Firefox, type view-source: in front of the page address and press Enter. This shows what the server sent, before any script ran.
- 2
Search for your sentence
Press Ctrl+F (Cmd+F on a Mac) and search for the sentence. If it is there, non-rendering crawlers can read it. If it is not, they probably cannot.
- 3
Check from the command line
Run curl -s followed by the page address, piped to grep -i and your phrase in quotes. No output means the phrase is not in the HTML the server returns.
- 4
Try it as the crawler
Add curl's -A option with a user agent containing GPTBot or OAI-SearchBot. If the response differs, or returns an error, a firewall or CDN rule is treating AI crawlers differently.
- 5
Look for your structured data
Search the view-source page for application/ld+json. If your business markup is missing there but shows in browser tools, a script is adding it.
- 6
Turn JavaScript off and look
In your browser's developer tools, disable JavaScript and reload. What remains is roughly what a non-rendering crawler gets.
How Next.js puts the words in the HTML
Next.js, the framework DataCram builds on, was designed for this problem. In its App Router, pages and layouts are Server Components by default: they render on the server and arrive as finished HTML. Pages that do not depend on request-time data are prerendered at build time and served from a CDN. Interactive pieces are added as Client Components on top of content that is already in the page.
Titles, descriptions and structured data live in code and ship in the HTML, not through a tag manager. That is what we mean when we say a site is readable by every crawler on the table above. The same build choices make pages fast, which is why rendering sits inside our site speed and Core Web Vitals work too.
A fair warning: Next.js does not make a site readable by magic. A developer can still fetch content in the browser after load, or wrap the important text in a widget, and end up with the same blank page. The framework makes the right thing the default. It still has to be built that way, and tested with the steps above.
Where WordPress stands, fairly
A standard WordPress site renders each page in PHP on the server, so the post and page content arrives in the HTML. On this particular question, a well-built WordPress site is fine, and we would rather say so than pretend otherwise. The risks come from what gets added on top.
Usually in the HTML on WordPress
- Page and post content written in the editor
- Titles and meta descriptions from an SEO plugin
- Schema output by a plugin into the page source
- Menus, footers and contact details in the theme
Often missing from the HTML
- Review widgets that load quotes with a script
- Sliders and tabs filled by JavaScript
- Content loaded by some page-builder elements after load
- A headless front end built to render in the browser
Our larger case for Next.js is about speed, upkeep and security, and it is laid out in WordPress vs Next.js. For AI readability alone, the test matters more than the platform. Run view-source on your key pages, whatever they are built on.
Fixes, from a free afternoon to a rebuild
If the test shows missing text, the fix depends on how much is missing. Start at the top of this list and stop when the important facts are in the HTML.
- Write the key facts as plain page text. Hours, prices, services, areas and a few review quotes, typed into the page rather than pulled from a widget. Often an afternoon.
- Move structured data into the page source. Output the JSON-LD from the site or CMS instead of a tag manager.
- Keep important answers on the page, visible. Put FAQ answers in the HTML and keep the critical ones out of tabs that load on click.
- Turn on server rendering or prerendering. Many frameworks support it; on a browser-rendered app it is a development project, not a setting.
- Rebuild when the shell is the whole site. A single-page app with no server rendering is usually cheaper to rebuild than to patch. DataCram's custom builds start at $1,750, fixed price.
Rendering is one item on a longer list, and fixing it is part of our AI search optimization work. A GEO audit checks it alongside crawler access, entity consistency, reviews and content, and the AI visibility check shows whether the engines name you once the words are readable. For the rest of the work, start at the generative engine optimization guide.
Questions owners ask us about AI search
Vercel's December 2024 analysis found that OpenAI's crawlers, including GPTBot, OAI-SearchBot and ChatGPT-User, did not execute JavaScript, though they downloaded some script files. That may have changed since, so test your pages. If your key text appears only after scripts run, ChatGPT may not see it. More on the ChatGPT page.
Because Google is one engine of many. Google's AI features use its index, and Googlebot renders scripts after a queue. But crawlers for ChatGPT, Claude and Perplexity did not run JavaScript in Vercel's 2024 analysis. Google itself says server rendering is still a good idea because not all bots can run JavaScript.
Open view-source: plus your page address, then search for an important sentence. Or run curl on the page and grep for the phrase. If the text is missing from the raw HTML, crawlers that do not run scripts probably cannot see it. Then confirm with the free AI visibility check.
Usually yes for the main content, because WordPress builds pages on the server. Watch for review widgets, sliders, tabs and page-builder elements that load text with scripts, and for headless setups that render in the browser. Test the pages that matter rather than trusting the platform name.
It makes the fix the default. Pages are Server Components and are prerendered or server-rendered, so the text ships in the HTML. A developer can still load content in the browser and recreate the problem, so the view-source test applies to Next.js sites too. See Athena CMS for how we build ours.
It is not a reliable fix. Google says Search does not use llms.txt, and Ahrefs found 97% of llms.txt files got no requests in May 2026, with AI retrieval bots making only 1.1% of requests. Putting the content in your HTML works for every crawler. More on llms.txt.
Keep reading
- Robots.txt, decodedAI Crawlers: Should You Block GPTBot? Every Token, and What Blocking Really DoesEvery AI crawler token in one table, what blocking each one costs you, and copy-ready robots.txt lines for three policies, from open to closed.
- The math behind the dialAI Share of Voice: How to Measure It Without Fooling YourselfHow to calculate AI share of voice from a prompt set, which of three formulas to use, how many answers you need, and why one run of ChatGPT proves nothing.
- Engine guide: GeminiHow to Get Recommended by Gemini: Maps Data, One Robots.txt Token and Your Own SiteHow the Gemini app picks businesses: Google Maps data, the Google-Extended token, Business Profile and your site. Steps to check, fix and track Gemini.
- Engine guide: ChatGPTHow to Get Recommended by ChatGPT: The Crawler, the Bing Connection and the Short ListHow ChatGPT search picks the businesses it names: the OAI-SearchBot rule, the Bing link, the sources it cites, shopping, and how to track the visits.
- Engine guide: AI OverviewsHow to Get Cited in Google AI Overviews, the Summary That Sits Above Your RankingWhat decides which pages Google AI Overviews cite, what Google says does not matter, how to measure it in Search Console, and how to opt out if you must.
- Concept: GEO and SEOGEO vs SEO: What Is Actually Different, and Where Google Says Nothing IsGoogle says optimizing for its AI answers is still SEO, and on Google it is. Here is what GEO adds for ChatGPT, Claude, Copilot and Siri, and what's folklore.
- Everything in Generative Engine OptimizationSee the section
Find out what AI crawlers see on your site
Send us the pages that matter most. We will compare the raw HTML with what customers see, list anything crawlers miss, and tell you the cheapest fix.
Which of these sounds like you? (pick any)
Rather talk now? Call (210) 346-0848.