How the detector works
42 signals across 6 categories
When you scan a URL we fetch its HTML and linked CSS, then run 42 independent signals over the result. Each signal looks for one specific habit of AI site generators. One signal alone proves nothing; the score comes from how many fire, how heavy they are, and how they combine.
Scoring
- Weights. Each signal carries points by tier: high 15, medium 8, low-medium 5, low 3. The probability starts from per-category hit rates weighted by how much each category can contribute.
- Category bonus. Three or more signals firing inside one category multiplies that category by 1.25. One gradient is taste; gradients plus blobs plus glassmorphism is a pattern.
- Combos. Specific cross-category combinations that almost only appear in generated sites (Tailwind + div soup + three-column grid + gradients, for example) multiply the total further.
- Confidence floor. Fewer than 3 signals, or signals confined to a single category, caps the score at 20%. We would rather under-accuse than over-accuse.
The verdict lines map to score bands: 0-20 handcrafted, 21-40 mostly human, 41-60 suspicious, 61-80 probably vibed, 81-99 pure vibe code. We never say 100%; even we are not that confident.
CSS Architecture (4)
A high share of elements styled through style attributes instead of stylesheets. Hand-built sites centralize styles; prompted ones spray them inline.
Walls of stock Tailwind utility classes with no custom design tokens. The default diet of v0, Bolt, and friends.
No naming convention, no layering, no system. Just whatever the model emitted that day.
How much of the styling is generic utilities versus classes someone actually named. Humans name things.
HTML Quality (8)
Divs as far as the parser can see. Semantic elements like nav, main, and article barely appear in generated markup.
Missing or multiple h1 elements and heading-level jumps in source markup. Scaffolded pages drift here when nobody reads the outline; a structural heuristic, not a WCAG-conformance result.
Inputs without labels, controls without names. The accessibility details prompt-to-page tools routinely skip.
Clickable divs and spans doing a button's job, with no keyboard or screen reader support.
No lang attribute on the html element. Tiny, default, and constantly forgotten.
A nav that only scrolls you around one long page. The signature shape of one-shot landing page output.
Social icons that link to # or a platform homepage. Decorative trust signals nobody hooked up.
Images shipped without alt text. Accessibility basics left behind in the rush.
Copy & Content (9)
Language models lean on the em dash far more than typical human copy does. The threshold is a generous one em dash per three sentences, so ordinary editorial style clears while generated prose fires.
Seamless, transformative, elevate, leverage. We keep a dictionary of LLM marketing vocabulary and count the hits.
Headline templates the models reach for on every landing page, in the family of 'X. Reimagined.'
The 'whether you're a startup or an enterprise' sentence shape that generated copy defaults to.
Rocket, sparkles, and checkmark emoji standing in for an icon system.
Exactly three features in exactly three columns. The default information architecture of generated landing pages.
Lorem ipsum and template placeholders that made it all the way to production.
Testimonials with stock names and suspiciously interchangeable praise.
The sparkle emoji is the unofficial logo of AI features. Counted accordingly.
AI Aesthetic (9)
Purple-to-blue hero gradients and gradient text. The house style of the era.
A gradient clipped to the headline glyphs. The two-toned hero flourish.
Frosted glass cards and backdrop blur on every surface.
Fade-up-on-scroll on every section, straight from the template.
Everything rounded to within an inch of its life.
Neon glow shadows in the accent color, a generated-design favorite.
Blurred color blobs absolutely positioned behind the hero.
Tiny uppercase tracked labels stacked above every section heading.
Zero-padded 01 / 02 / 03 markers used as section decoration.
Meta & Infrastructure (7)
Titles like 'React App' or 'Vite App'. Nobody ever renamed the tab.
No social preview metadata. Fine for a prototype, missing for anything meant to be shared.
The framework's stock favicon, still in place.
No robots.txt or sitemap signals. Straight-from-the-prompt infrastructure.
Source maps left enabled in a production build.
Debug logging still firing on a live site.
A footer year nobody updated, or one that is somehow in the future.
Framework Defaults (5)
Still on vercel.app, netlify.app, pages.dev, bolt.host, or v0.dev. Shipped, but never moved in.
The untouched scaffold markup of a starter template.
Framework-default 404 and error pages.
Two or more default AI-scaffolded stack tools together (shadcn/ui, Supabase, Firebase, Clerk, and similar). Any one alone is common; the combination is a tell.
An unambiguous self-injected badge from an AI website builder: a Lovable badge or gpteng.co CDN asset. Any single one is near-conclusive.
Several of these signals are real, fixable issues. SiteCMD finds them on your live site and in your code, with the exact fix for each.