How the detector works
38 signals · 6 categories · no AI, pure pattern matching
When you scan a URL we fetch its HTML and linked CSS, then run 38 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.
Skipped levels, multiple h1s, headings used as font sizing. Outlines drift when nobody reads them.
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 love the em dash far more than people do. Density beyond human baselines is a strong tell.
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 (6)
Purple-to-blue hero gradients and gradient text. The house style of the era.
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.
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 (4)
Still on vercel.app, netlify.app, or pages.dev. Shipped, but never moved in.
The untouched scaffold markup of a starter template.
Framework-default 404 and error pages.
Compiled-output traces specific to v0, Bolt, Lovable, and similar tools. They each leave fingerprints.
Built something fast and want it solid? Several of these signals (missing OG tags, robots.txt, form labels, alt text) are real fixable issues, not just vibes. SiteCMD finds them plus hundreds more, and tells you exactly how to fix each one. Or scan a site to see the signals live.