Free tool ยท no account

Can Google read your AI-built site? See what crawlers get without JavaScript

Built your site with Lovable, Bolt, v0 or Replit? Paste the address. We fetch it the way a crawler does, without running any JavaScript, and show how much of your page exists in the HTML the server sends, whether it is indexable, and whether robots.txt lets Google's and the AI assistants' crawlers in. No account.

Requests are sent as QuietwatchBot, never as another bot. Free: 5 checks an hour per address.

What does "readable without JavaScript" mean?

A crawler asks your server for a page and gets back HTML. If the text of the page is in that HTML, the crawler can read it at once. If the HTML is a root element and a few script tags, the text only exists after a browser downloads the scripts and runs them. Google does that, in a separate rendering step it queues after the crawl; most other crawlers never do. This checker fetches your page the way a crawler does, as our own QuietwatchBot, reads the HTML the server sends, and counts the characters of real text in it. It does not run any script, and it never pretends to be Googlebot or any other bot.

Why does this hit sites built with Lovable, Bolt or v0?

App builders tend to generate single-page applications: one HTML file, a <div id="root">, and a JavaScript bundle that draws everything. That is fine for a logged-in app and a problem for a marketing page, a landing page or a blog, which exist to be found. What each builder does about it, according to its own documentation:

BuilderWhat it generatesWhat the official docs say about crawlers
LovableOlder projects: React and Vite single-page apps. Projects created since 13 May 2026: TanStack Start with server-side renderingLovable's SEO and AI search page says verified crawlers get pre-rendered HTML on deployed public URLs while unverified bots get the regular single-page app, and that older projects can be upgraded to the server-rendered stack
BoltFrontend JavaScript frameworks, published to a bolt.host address or to NetlifySupported technologies and Netlify for hosting; we found no official Bolt page on SEO or server rendering. Netlify's prerendering extension can serve crawlers rendered HTML
v0Next.js, React, TypeScript, Tailwind and shadcn/ui (v0 FAQ)Next.js renders pages on the server by default: layouts and pages are Server Components, so content stays in the HTML unless a page is made client-only
ReplitDepends on the app; Agent-built apps are usually full-stackImprove your app's SEO recommends static deployments, which deliver pre-rendered HTML

One honest caveat. Lovable serves its pre-rendered HTML only to crawlers it has verified. Our crawler is not on that list, on purpose, so for a Lovable site the result shows what every crawler outside the list gets, which includes most AI crawlers, link previews and third-party tools; Googlebot may well receive the pre-rendered version. Search Console's URL Inspection shows what Google itself rendered.

What did ten AI-built sites look like?

On 24 October 2026 we ran this check once on the home pages of ten public sites built with Lovable, Bolt and v0, found through their makers' own attributions. Five of the ten failed the content check: 45 characters or fewer of readable text in the HTML the server sent. Four of the ten had under 15 percent of their visible text in that HTML (1, 4, 12 and 12 percent, measured against a rendered load). Two of the ten blocked GPTBot, ClaudeBot and Google-Extended through a Cloudflare-managed robots.txt section on the builder's host. Seven of the ten had no structured data and seven declared no canonical. Ten sites is a small sample chosen by attribution, not a survey, and we do not name them.

What should I fix, in what order?

  1. Get the text into the HTML. Server rendering (Next.js Server Components, Lovable's server-rendered stack) or pre-rendering (a static build, Vite's SSR and pre-rendering guide, a host's prerender extension) both work. Then rerun this check: the character count is the proof.
  2. Set the title and description in the HTML, through the framework's head or metadata API, not in a script that runs after load.
  3. Check robots.txt for AI crawler blocks you did not choose. A managed "block AI bots" setting on the host adds them; the AI crawler checker shows the exact lines.
  4. Add a self-referencing canonical and basic structured data (Organization, WebSite or SoftwareApplication) in the HTML, so the page's identity does not depend on rendering either.
  5. Then watch it. Builders ship template changes, and one publish can turn a readable page back into a shell. What quietwatch checks every day includes this measurement for every page you add.

Sources

How to use it

  1. Paste the address of the page you care about and press Check this site.
  2. Read the verdict at the top of the result, then the evidence under each answer: the exact line, tag, header or date.
  3. Follow the fix under any failing answer, run the check again, then keep the result link; it works for 30 days.

Questions

Why does a site built with Lovable, Bolt or v0 look empty to crawlers?

Most app builders generate a single-page app: the server sends a near-empty HTML file with a root element and script tags, and the browser builds the page from JavaScript. A crawler that fetches the HTML without running scripts reads only that shell. This checker measures exactly that: the text in the HTML your server sends.

Does Google run JavaScript?

Yes. Google's documentation describes crawling first and rendering in a separate, queued step with headless Chromium, so content that exists only after scripts run is indexed later and less reliably than content in the HTML. Text in the raw HTML is read on the first pass.

Do ChatGPT, Claude and Perplexity crawlers run JavaScript?

Their official crawler pages do not say. Independent measurements of crawler traffic (Vercel, December 2024) found the major AI crawlers fetching HTML without executing JavaScript. Until a vendor documents rendering, treat an app shell as invisible to them.

My builder says it pre-renders for search engines. Why does the check still fail?

Some platforms serve pre-rendered HTML only to crawlers they recognise (Lovable documents this for verified crawlers on its hosting), and the regular single-page app to everyone else. Our crawler is not on those lists, by design, so the result shows what every unlisted crawler gets: most AI crawlers, link previews, and any tool that is not Googlebot. Googlebot itself may see the pre-rendered version; Search Console's URL Inspection shows what it rendered.

How do I fix it?

Make the server send the content. On v0 the app is Next.js, which renders on the server by default; keep the page content in Server Components. On Lovable, projects created since May 2026 use server-side rendering, and older React and Vite projects can be upgraded or pre-rendered. On Bolt, pick a framework with a server or static output, or publish through a host with a prerendering extension. On Replit, use a static deployment for marketing pages. The table above links each official doc.

Is this the same as the content-without-JavaScript check on the home page?

Same measurement, different framing. The home page runs all twelve checks on a site. This page runs the ones that matter for an AI-built site and explains the result for someone who did not write the framework code themselves.

How often should I check this?

After every publish. A builder update, a new template or a hosting change can turn a readable page into a shell overnight, and nobody tells you. quietwatch runs this check on every page you add once a day and emails you the day it changes.

Related