How to Tell If a Website Is AI-Generated: The Tell You Can't See
2026-10-13 · zhoujingkang · Founder
There is now a whole genre of content about spotting AI-built websites. The tells people list are visual: the same rounded font stack, the purple-to-blue gradient, cards inside cards, an emoji in every section headline. Those lists are fun and mostly accurate — and they all share one blind spot. The most reliable tell of a quickly generated site is invisible in a screenshot: failing contrast. Text that measures 3.9:1 instead of 4.5:1 looks perfectly crisp in a portfolio shot and fails the accessibility baseline that roughly four in five home pages already miss, per the WebAIM Million. This article covers the visible tells, then shows how to check the invisible one in under a minute.
The tells everyone already lists
The community canon of vibe-coded tells is well established by now, and each one exists for a reason — they are the defaults of a model averaging the web:
- The font tell — one of a handful of trendy geometric sans-serifs, everywhere, including places a designer would never put it.
- The gradient tell — a purple-to-blue hero gradient, the statistically dominant 'looks modern' choice.
- The layout tell — three equal cards inside rounded containers inside rounded sections, padding that never varies.
- The copy tell — confident, generic section headlines that could belong to any product in any industry.
The tell a screenshot can't show: contrast
These tells work because they are frequent. But they are also fixable in an afternoon, which is exactly why the next generation of AI-built sites will pass all of them. Judgment-based tells decay; measured tells do not.
Contrast fails in the least photogenic way possible: the muted gray text on a white card, the half-transparent label on a dark hero, the placeholder that looks intentional. At thumbnail size — which is how everyone reviews screenshots — a 3.9:1 pair and a 7:1 pair are indistinguishable. At measurement they are the difference between passing WCAG 2.1 AA (4.5:1 for normal text) and failing it.
The base rate makes this the highest-probability tell of all. The WebAIM Million has found low-contrast text on roughly four in five of the top million home pages every year — and that is before adding the specific failure modes of generated UI: default muted grays, opacity-based 'subtle' text, and dark mode pairs that invert a light theme's contrast margins. An AI-built site that nails every visual tell can still ship a settings page where the secondary text measures 3.6:1.
A 60-second contrast audit of any site
You do not need a full audit tool to test the invisible tell. Four steps:
- Pick the three text styles every site has: body text, secondary/muted text, and a button or link label.
- Get the exact colors — use the browser DevTools color picker, or an eyedropper on screenshots for pairs you cannot select.
- Measure each text color against the background it actually sits on (the card surface, not the page background — this is where most audits go wrong).
- Read the numbers: under 4.5:1 fails WCAG AA for normal text; under 3:1 fails even large text. APCA adds a perceptual check for dark mode and thin fonts.
From tell to fix: keep the design, move the lightness
Three measurements in and you have a verdict no screenshot can fake. The free Color Contrast Checker does the measuring and, when a pair fails, suggests the closest fix that keeps the original hue — so you can name the tell and fix it in the same minute.
Failing contrast rarely requires repainting a brand. Because WCAG contrast responds to luminance rather than hue, almost every fix is a lightness move: darken the text, lighten the card, or shift the muted tone along its own ramp until the pair clears the line. A pair like #D97706 on #FFF7ED measures about 3.0:1; the same hue family nudged to #9A5405 measures about 5.4:1. The site looks the same to the eye and passes to the auditor.
That is also the difference between noticing a vibe-coded site and shipping one nobody can call out: the visible tells are style choices, and style is allowed. Contrast is a measurement, and 4.5:1 is the line. If you are building with an agent, put the measured pairs in the project — a DESIGN.md with per-pair results means the invisible tell never makes it to production in the first place.
Continue with a tool
References
FAQ
How can you tell if a website is AI-generated?
Common visible tells include identical font choices, purple-blue gradients, uniform card layouts and generic copy. The most reliable invisible tell is failing contrast: quickly generated sites frequently ship muted text pairs that measure below WCAG's 4.5:1 AA line.
Why is contrast the tell screenshots can't show?
Because contrast is a ratio, not an appearance — a 3.9:1 text pair looks crisp in an image and still fails WCAG AA. Only measuring the actual text/background pairs reveals it.
What contrast ratio should website text have?
WCAG 2.1 AA requires 4.5:1 for normal text and 3:1 for large text; AAA raises these to 7:1 and 4.5:1. Non-text UI elements need 3:1 under SC 1.4.11.
Does fixing contrast ruin the design?
No. Contrast depends on luminance, so fixes are lightness adjustments that keep the hue — the design reads the same while the pairs pass.
Try it on your own brand color
Paste one hex into the Brand Theme Engine and get a full light & dark web theme — semantic tokens, contrast-checked, export-ready.
Open the Brand Theme Engine →