We tested our AI website detector on 2,395 sites. Here's what we found

Precision, recall and every miss, builder by builder; a held-out test of sites we never tuned for; and sweeps of random sites. How we measure the AI Website Detector, in the open.

Any tool can claim to “detect AI”. The only way to know whether it works is to test it on sites where the answer is already known, publish the result and keep the misses in view. This is that test, misses included. We run it again whenever our signatures change; the latest numbers are always on our methodology page.

What we tested

Our test set holds 2,395 live websites, each labelled from public evidence: builders’ own showcases and customer stories, “made with” badges, sites served from a builder’s own address, custom domains whose DNS points at a builder’s hosting, public code repositories that hold a builder’s own files, and sites made before AI site builders existed. 1,304 were made with one of 34 AI site builders, from Lovable, Bolt.new and v0 to Manus, Emergent and Firebase Studio. 1,091 were not, among them 136 hand-made projects built on the same open-source stack AI builders use, and 883 homepages of public projects started in 2020–2022, before any AI site builder existed, on that same stack: the hardest kind to tell apart, with the surest labels.

Most AI-built sites in the set are projects exported from their builder and hosted elsewhere, which keep only the traces their code carries. That is the hard case, and the common one.

On 4 October 2026 we scanned every site with the same scanner and signatures that power the AI Website Detector. 83 sites didn’t answer, which left 2,312 sites: 1,278 AI-built and 1,034 not.

A site counted as “flagged” when the detector rated its AI traces High or Medium. Shared building blocks alone never count as a flag.

The headline numbers

Measure Result What it means
Precision 100% Every site we flagged was really AI-built.
Recall 83.4% We caught 1,066 of the 1,278 AI-built sites.
False flags 0 None of the 1,034 other sites was flagged.

A test set is a sample, so each share has a range the true one most likely lies in (a 95% interval): precision at least 99.6%, recall between 81.3% and 85.4%. For a builder with a couple of dozen sites the range is much wider, which is why we give the counts, not just the percentages.

Precision is the number we protect first. A false flag says something untrue about someone’s site; a miss only leaves a question open. So when a rule catches more sites but also catches one wrong one, it goes.

Builder by builder

Builder Sites Caught
Landingsite.ai 51 51 100%
Hostinger Horizons 28 28 100%
Gamma 26 26 100%
v0 25 25 100%
Softgen 16 16 100%
Replit 13 13 100%
Floot 12 12 100%
Marblism 12 12 100%
Wegic 11 11 100%
B12 9 9 100%
Base44 6 6 100%
Durable 6 6 100%
Atoms 20 19 95%
Trickle 11 10 91%
Lumi 9 8 89%
Rocket 142 121 85%
Lovable 85 71 84%
Blink 58 48 83%
Manus 80 66 83%
Firebase Studio 167 136 81%
Tempo 21 17 81%
Emergent 96 77 80%
Readdy 54 43 80%
DeepSite 12 9 75%
Google AI Studio 138 96 70%
Bolt.new 23 15 65%
Dyad 81 49 60%
Same 53 26 49%

“Caught” means flagged under the builder’s own name. Builders with fewer than five sites (Coze, Genspark, Kimi, Macaly, MiniMax Agent, Pineapple) are left out of the table.

Builders that write their name into every page are easy; exported projects are not. Gamma, Floot, Wegic and B12 serve the sites they build, and their hosting leaves its mark. A Firebase Studio or Same project moved to Vercel keeps only what its code carries: the starter’s default title, the hints Firebase Studio’s agent puts on placeholder images, the font roles and body class its starter sets, the assets Same copies when it clones a site. When those are gone, the page looks like any other Next.js site, and we say “none found” rather than guess.

Dyad is caught more often than its row shows. Dyad’s starter is a copy of Lovable’s, 404 page included. Its own page still tells them apart: Lovable’s starter page carries a description, an author and social tags, Dyad’s only a charset, a viewport and a title, so a page with the copied 404 page under Dyad’s bare head is named Dyad. Dyad apps whose owners added their own tags are flagged under Lovable’s starter, with a note that Dyad’s starter copies it. The flag is right; the name is the closest we can give.

A test we couldn’t tune for

The danger of any test set is that you end up tuning your rules to it. So we keep a second set of sites we never look at while writing rules: Lovable, Tempo, Hostinger Horizons and Softgen sites, and projects found through other files of seven builders (Emergent’s Python library, Rocket’s component tagger, AI Studio’s app metadata, Readdy’s uploads, Same’s task folder, Firebase Studio’s blueprint, Blink’s editor script). Nearly all of them are exported projects hosted elsewhere.

On 4 October 2026, 452 of them answered: we caught 306 of the 449 AI-built sites (68.2%) and flagged none of the 3 others. By builder: Hostinger Horizons 14 of 14, Lovable 51 of 64, Tempo 38 of 50, Firebase Studio 81 of 101, Rocket 38 of 55, AI Studio 32 of 69, Readdy 15 of 23, Same 18 of 44, Emergent 8 of 20.

What happens on ordinary websites?

A detector that is right on a test set can still misfire in the wild. So we also scan random samples of ordinary websites ranked between 100,000 and 1,000,000 in the Tranco list, the kind of sites that aren’t famous and aren’t AI showcases. None has ever been flagged: the latest sample, on 4 October 2026, gave 192 answers out of 300. Some show shared building blocks, which we list as context and never count. The 883 homepages of projects started before AI site builders existed, on the Next.js, React, Vite and Tailwind stack those builders now use, aren’t flagged either.

How a trace counts

  • Only a builder’s own trace. Its address, its hosting, the runtime and starter files it puts in every project, its default icons and badges, the comments its templates leave. A page that writes about a builder, or links to it, is never a trace.
  • Weaker traces only together. A trace other projects can share, such as a builder’s upload storage or its starter’s robots.txt, counts only next to a sign of how the page is built, and gives a medium level, never high.
  • One maker per page. When a builder signs a page, traces of a starter it copied from another builder are its ancestry, not a second maker.
  • Records with current hosting. A builder’s DNS verification record counts only while the site’s build or hosting still points to the builder: records can outlive the site they were made for.
  • Labels from the builder’s own files. A site counts as AI-built only from a builder’s own files, hosting or badge, and as hand-made only when its code carries no builder’s mark. Calling a builder’s API from an app doesn’t make the app the builder’s.

Every result shows the signature version it was made with, so it can always be traced to the rules that produced it, and the changelog lists each version.

What this test can’t tell you

  • Coding assistants are invisible by design. Sites written with Cursor, Claude Code or GitHub Copilot produce ordinary code. No detector that reads the page can see them, and we don’t pretend to.
  • Labels age. A site listed as made with one builder may since have been rebuilt with another, or by hand. We keep such sites as labelled, which understates recall rather than flattering it.
  • Where the sites come from shapes the numbers. Most new sites come from public code on GitHub, mostly hosted on Vercel, and from urlscan.io’s public scans, which lean towards new and suspicious sites. Several builders have only a handful of sites.
  • Builders change. These numbers describe 4 October 2026 and signatures version 0.5.0. We re-run the test whenever the signatures change and publish the numbers on our methodology page.

Put it to work

AI Website Detector

Was this website made with AI?

ExampleLovable traces found, with the exact line
Check for AI

Something here out of date or wrong? Tell us and we’ll fix it, with the date of the change.