Find out which AI or no-code tool built a website.
Drop a CSV here or click to browse
Needs a column named url, website, domain, or similar.
Every URL is scored across two layers. Platform detection runs first and takes priority. If no platform is found, AI heuristics look for code patterns left by AI coding assistants.
Each detected signal is assigned a weight based on how reliable it is:
Signals are grouped by category and each category is capped at 15 pts, so no single signal type can dominate the total score.
The confidence label reflects how far the score exceeds the minimum threshold for its category — not the raw point value of any individual signal:
| Confidence | Platform score | AI score | Meaning |
|---|---|---|---|
| LOW | 5 – 7 | 10 – 14 | Barely clears the threshold — one or two weak signals |
| MEDIUM | 8 – 14 | 15 – 29 | Multiple signals agree — reasonable confidence |
| HIGH | ≥ 15 | ≥ 30 | Strong corroborating evidence across signal types |
.framer.website / .app / .aiFramer/data-framer-*--framer-font-family etc.framerusercontent.com.webflow.iodata-wf-*w-nav, w-container, w-rowwindow.Webflowassets.website-files.com.wix.comx-meta-site-is-wix-site: 1--color_0, --wix-ads-heightSITE_CONTAINER, masterPagestatic.parastorage.comdata-testid="comp-*", data-mesh-id.squarespace.comSQUARESPACE_ROLLUPS, Y.Squarespacesqs-block, sqs-layoutstatic*.squarespace.com.myshopify.compowered-by: Shopify (survives headless)x-shopid (survives headless)shopify-complexity-score_shopify_* (survives headless)window.Shopify, ShopifyAnalyticscdn.shopify.com.lovable.appwindow.__lovable*/lovable-uploads/[UUID].bolt.new, .stackblitz.ioserver-versionwindow.__bolt*.v0.devwindow.__v0*.github.ioGitHub.comThese fire only when no platform is detected. Score ≥ 10 triggers AI-assisted.
| Signal | Conf. | Pts | How detected |
|---|---|---|---|
| shadcn/ui patterns | HIGH | 10 | Specific class combos from shadcn components (Card, Button, Badge, Dialog), @radix-ui/ imports, cn()/twMerge |
| Inter font | HIGH | 10 | fonts.googleapis.com/css.*Inter or font-family:.*Inter |
| Tailwind stack | MED | 5 | ≥2 of: verbose flex/grid combos, sm:/dark: prefix stacking, color scale shades (slate-500 etc.) |
| Vite + React SPA | MED | 5 | /assets/index-[hash].js (Vite output) + empty <div id="root"> |
| Lucide icons | MED | 5 | lucide-react in script src or lucide reference in HTML/JS |
| Vercel / Netlify hosting | MED | 5 | Response headers x-vercel-id or x-nf-request-id |
| AI generator meta tag | HIGH | 10 | <meta name="generator"> containing v0, bolt, lovable, cursor, copilot, claude, chatgpt, gpt |
| Prototype hosting | LOW | 2 | Subdomain on vercel.app, netlify.app, pages.dev, railway.app, render.com, fly.dev |
| Over-commenter comments | LOW | 2 | Tutorial-style comments explaining obvious code ("This function", "Here we", "Hero section", etc.) |
| Generic numbered naming | MED | 5 | ≥5 occurrences of .container-1, .wrapper-2, .section-3 style names |
| Placeholder / hallucinated links | LOW | 2 | href="#", href="https://example.com", /placeholder, lorem ipsum in links |
| AI buzzword density | HIGH | 10 / 5 / 2 | Visible page text stripped of HTML and scanned for LLM marketing words (seamless, robust, elevate, revolutionize, cutting-edge, empower, leverage, etc.) — high density = likely AI-written copy |
| "Too clean" code | LOW | 2 | Zero developer comments (no // old, TODO, FIXME) combined with high className= density (>0.15 ratio) — AI code lacks the messy traces of human development |
| Uniform list structure | MED | 5 / 2 | 5+ <li> items with <15% length variation (coefficient of variation) — AI generates suspiciously parallel, equal-length copy |