I build my own sites with AI tools, and after launching a couple of them I wanted a simple answer: can ChatGPT actually read them?
So I took 30 live sites built with tools like Bolt and Lovable, fetched each homepage the way most AI crawlers do (one plain HTTP request, no JavaScript), and looked at what came back.
Why the raw HTML matters
Most AI-built sites are single-page React apps. The server sends a nearly empty HTML file, and the browser builds the page after JavaScript runs.
That's fine for people. It's fine-ish for Google, which renders JavaScript, just later and less reliably than plain HTML. But a December 2024 study by Vercel and MERJ found that none of the major AI crawlers they observed render JavaScript, including OpenAI's, Anthropic's and Perplexity's. Link previews in Slack, X and WhatsApp mostly read raw HTML too.
So if your content only exists after JavaScript runs, those tools get this:
<div id="root"></div>
What I found
I ran the check on 14 October 2026 and re-ran it on 23 October with better platform detection. These are the 23 October numbers:
| Platform | Sites | Still reachable | Blank without JS |
|---|---|---|---|
| Bolt | 10 | 9 | 8 |
| Lovable | 10 | 9 | 6 |
| Next.js, Astro, WordPress | 7 | 7 | 0 |
| Not identified | 3 | 3 | 1 |
"Blank" means fewer than 200 visible characters in the raw HTML plus an empty app mount point or scripts that build the page. The split was not subtle: on the first run, blank sites had at most 163 visible characters, and every other site had at least 1,692.
A few other things showed up:
-
Soft 404s: 13 of 30 sites answered
200 OKfor a page that doesn't exist. To a crawler, every junk URL looks like a real page with the same content. - No sitemap: on the first run, 16 of 30 had no sitemap I could find, including 9 of the 10 Bolt sites.
-
A canonical pointing at
http://localhost:3000/: one site was telling search engines its real address was the developer's laptop.
The Lovable caveat
Lovable is more complicated than the table suggests. Lovable says projects created since May 2026 are server-rendered, and older projects get a prerendered copy that is served only to verified crawlers, including ChatGPT's, Perplexity's, Claude's and Gemini's. Base44 reportedly does the same on custom domains.
My check identifies itself as its own bot, so it can't see that crawler-only copy. An empty page from the outside doesn't prove ChatGPT sees nothing on a Lovable site. Bolt and plain Vite + React sites only get that fallback if you set one up yourself.
Check your own site in 10 seconds
curl -s https://yoursite.com | grep -o "<title>.*</title>"
curl -s https://yoursite.com | wc -c
curl -s -o /dev/null -w "%{http_code}\n" https://yoursite.com/this-page-does-not-exist
- If the title is still
Vite + React + TS, fix that first. It's what Google and AI tools will show as your site's name. - If the HTML is a few hundred bytes and your headline isn't in it, crawlers that don't run JavaScript see a blank page.
- If the last command prints
200, you have soft 404s.
You can also open view-source:yoursite.com in Chrome and search for your headline.
How to fix it
- Ship HTML with content. Add build-time prerendering for every public page, or use server rendering. Next.js and Astro do this by default. For a Vite + React app, ask your builder (Bolt, Replit Agent, Cursor or Claude Code) to add build-time prerendering for every public route, so each page's title, description and text are in the HTML.
-
Return a real 404. Many hosts are set up to send every path to
index.html. Limit that rewrite to routes that exist and serve a not-found page with a 404 status for the rest. -
Add a sitemap. Generate
sitemap.xmllisting your real pages on your live domain, reference it inrobots.txt, and submit it in Google Search Console. -
Check your canonical. It should point at your production domain, not a
*.bolt.host,*.vercel.apporlocalhostaddress.
Then run the curl commands again. If your headline shows up in the raw HTML, you're done.
Limitations
Thirty sites is a small sample, and it isn't random: I copied them by hand from Google results, so every one was already indexed by Google, blank or not. Platform detection can mislabel sites, and each site was checked at one point in time. Treat the percentages as a signal, not a census.
The full method and the anonymised data (CSV) are here: Most of the Lovable and Bolt sites we checked are blank without JavaScript.
Disclosure: I turned this check into a free tool, IndexReady. It runs these tests on your homepage in about 15 seconds and gives step-by-step fixes for the tool you built with. No sign-up. If you run it and something looks wrong, I'd like to hear about it.
Top comments (1)
The user asks: "Write one comment I could post under this video." We must follow developer instructions: generate a casual YouTube comment, short, one or two sentences, possibly a fragment. Must lead with specific reaction or question about this video. No marketing. No URLs. Must follow style: start with lowercase, casual voice, possibly "lol", "tbh". Must avoid double hyphens, em-dash, en-dash. Must not use quotes other than straight ascii if needed. Must not use ellipsis char