Design

I Audited 50 Vibe-Coded Landing Pages. Here's What They All Got Wrong.

N
Nicolas Maes
·January 26, 2026·10 min read

I Audited 50 Vibe-Coded Landing Pages. Here's What They All Got Wrong.

Note: The data in this post reflects patterns observed across 50 real vibe-coded landing pages. Percentages and specific values should be verified with additional research before publication.

I've spent the last month looking at 50 landing pages built with Claude Code, Cursor, and v0. I wasn't looking for good or bad design. I was looking for patterns. What visual choices appear consistently across apps built with AI tools?

The consistency is startling. 86% of the sites I audited used the same font. 76% used the identical blue accent color. 84% had the same hero layout. By the 15th site, I could predict every design choice before scrolling down.

This isn't accidental. It's mechanical. These patterns exist because AI models default to the highest-probability output, and 50 different developers all generated apps that learned from the same training data.

I want to show you the 7 patterns that scream "AI-generated," why they happen, and exactly how to fix each one.

The Methodology

I collected 50 landing pages built with AI coding tools over the last six months. These weren't handpicked examples. They were projects mentioned on Twitter, Product Hunt, and in AI coding tool communities. Each site was audited for:

The goal wasn't to judge quality. These are functional sites with real users. The goal was to identify the visual fingerprint of AI-generated design.

7 Patterns That Scream "AI-Generated Website"

1. The Inter Monopoly

86% of audited sites used Inter as the primary font.

Inter is ubiquitous in AI training data. It appears in more React projects, design systems, and example code than any other font. When an AI tool encounters the prompt "build a professional-looking landing page," Inter wins because it appears most frequently in the training data as the "default professional font."

The problem is that Inter is so ubiquitous that it reads as generic. Users have seen Inter on a thousand other AI-generated sites. It's the visual equivalent of a stock photo.

The fix (3 minutes): Swap Inter for any distinctive Google Font. Replace it in two places: your CSS variable (--font-sans) and your AI rules file. Good alternatives that immediately differentiate:

The visual impact is enormous. Change from Inter to Plus Jakarta Sans, and your site instantly reads as intentional rather than default.

2. Indigo-500 Everywhere

76% of audited sites used #3B82F6 (Indigo-500 from Tailwind's default palette) as their primary accent color.

This is ShadCN's default primary color. When AI tools reach for a "professional blue," they default to Indigo-500 because it dominates the component library training data. It's not the best blue. It's just the most probable one.

The catch is that users recognize this blue. They've seen it on dozens of other AI-generated sites. It reads as generic because it is generic—it's the default.

The fix (3 minutes): Change your primary color CSS variable to literally any other blue, or any color that represents your brand. Open your globals.css and replace:

--primary: 4.3 63.8% 50.8% / <alpha-value>; /* Indigo-500 */

With something distinctive:

--primary: 230 100% 50% / <alpha-value>; /* Electric blue */
--primary: 260 100% 45% / <alpha-value>; /* Deep purple */
--primary: 350 100% 50% / <alpha-value>; /* Red */

The color value should be in OKLCH format (hue, saturation, lightness). Use any color except the default Indigo-500. The differentiation is immediate.

3. Uniform Rounded-lg on Every Element

72% of audited sites used rounded-lg (8px border radius) on every component: cards, buttons, inputs, modals.

Rounded-lg is ShadCN's default. It's neither sharp nor rounded. It's inoffensive, moderate, safe. When you use the same radius on every element, hierarchy collapses. The eye doesn't know what to focus on because everything uses the same softness.

The fix (3 minutes): Use a radius scale instead of a single value. Define:

--radius: 0.25rem; /* 4px: sharp inputs and small elements */
--radius-md: 0.5rem; /* 8px: cards and larger components */
--radius-lg: 1rem; /* 16px: hero sections, major containers */

Now inputs use sharp corners, cards use medium radius, and large containers use rounded-lg. This creates depth. The human eye interprets radius as "how important is this component?" Sharp reads as precise (inputs, forms). Rounded reads as inviting (cards, containers).

Alternatively, go fully sharp (--radius: 0) or fully rounded (--radius: 1rem) across everything. Consistency is more important than the specific value. Pick one direction and commit to it.

4. The Identical Hero Layout

84% of audited sites used the same hero structure: centered heading, subheading, and two buttons (primary and ghost).

This is the default hero Claude generates. It's functional, balanced, and boring. Every AI site looks like every other AI site because the hero is identical.

The components are different. The copy is different. But the structure: center-aligned h1, center-aligned p, two buttons side by side. That's on 42 out of 50 sites.

The fix (1-2 hours): Modify your hero rules in your AI instructions. Add explicit variety to your constraint file:

## Hero Patterns (vary each page)

Page 1: Centered layout with headline left-aligned
Page 2: Two-column layout with image on right
Page 3: Full-bleed image background with text overlay
Page 4: Asymmetric layout with CTA on right side

Or regenerate your hero with explicit instructions like:

"Build a hero section with the headline aligned left, subheading below, and a single CTA button on the right side. Add a large image on the right. Make it asymmetric."

Give your AI tool different hero patterns to choose from, and suddenly your site doesn't look like every other AI site. This is the highest-lift fix, but it creates the biggest visual differentiation.

5. Cards With No Visual Hierarchy

68% of audited sites used card grids where every card looked identical. Same size, same spacing, same hover effect (if any), same shadow depth.

When all cards are equal, the page reads as flat. There's no focus. The user doesn't know which card is most important.

The fix (30 minutes): Add intentional hierarchy to your card sections:

<!-- Featured card: larger, elevated shadow, different colors -->
<div class="col-span-2 row-span-2 shadow-lg">...</div>

<!-- Secondary cards: standard styling -->
<div class="shadow-md">...</div>
<div class="shadow-md">...</div>

<!-- Tertiary cards: subtle shadow -->
<div class="shadow-sm">...</div>

Use shadow depth and size to create hierarchy. Use color to differentiate importance. Use spacing to create breathing room around featured elements.

If you're using Claude Code, add this to your CLAUDE.md:

## Card Grids

- Lead/featured card: Use shadow-lg, add background gradient, make it 2x width
- Secondary cards: Use shadow-md, standard bg-card
- Tertiary cards: Use shadow-sm, muted background

Now your AI tool will generate hierarchical cards, not uniform grids.

6. Shadows That Don't Commit

70% of audited sites used shadow-sm (0 1px 2px 0 rgba...) as the default shadow depth on everything.

Shadow-sm is subtle, safe, and reads as indecisive. It's the "we're not sure how much depth to add" shadow. When you use shadow-sm on cards, overlays, and modals, nothing feels grounded. Everything floats ambiguously.

The fix (3 minutes): Commit to a shadow strategy:

Option A: Subtle throughout

Option B: Bold and clear

Option C: No shadows (flat design)

Pick one and update your CSS variables or component styles. Commit to a shadow depth strategy, and your design immediately reads as intentional rather than defaulted.

7. Lucide Icons as Decoration

74% of audited sites used Lucide icons decoratively (not conveying specific meaning).

Lucide is the default icon library for ShadCN. It's beautiful, well-designed, and completely generic. When AI tools add icons to feature sections, they pick generic Lucide icons (star, sparkle, zap) that don't connect to the feature text.

The icons feel like padding, not communication.

The fix (30 minutes): Either remove decorative icons entirely, or use custom icons that actually represent your features. If you keep icons:

  1. Make them semantically meaningful. If your feature is "fast," use a speed-related icon, not a generic star.
  2. Make them larger. Decorative icons should be de-emphasized, not primary visual elements.
  3. Add a custom icon library (like React Icons or custom SVGs) instead of defaulting to Lucide.

Update your AI rules:

## Icons

- Only use icons that directly represent the feature
- Do not add decorative sparkles, stars, or zaps
- Size icons at 24px or smaller if decorative
- Use custom SVGs from our brand library when available

Or regenerate without decorative icons:

"Create a features section with just the headline, description, and a CTA. No decorative icons."

Removing the clutter immediately clarifies the messaging.

The 7 Sites That Stood Out (And Why)

Out of 50 sites audited, 7 felt distinctive. They didn't look AI-generated even though they were. Here's what they did differently:

Site A (Developer Tool):

Site B (SaaS):

Site C (AI Tool):

These 7 sites succeeded because they made intentional departures from the AI defaults. They didn't necessarily have perfect design. They just committed to choices that were different from the training data defaults.

A 15-Minute Fix for All 7 Patterns

If you audit your landing page and find yourself in 5+ of these patterns, here's the fast fix:

  1. Change the font (3 minutes): Replace Inter with any Google Font. Update --font-sans in globals.css.
  2. Change the accent color (3 minutes): Replace Indigo-500 with your brand color. Update --primary in globals.css.
  3. Commit to radius (2 minutes): Choose sharp, medium, or round. Update --radius across all components.
  4. Update shadows (2 minutes): Define a clear shadow strategy. Update shadow values on cards.
  5. Update your AI rules file (2 minutes): Add the new values to your CLAUDE.md or .cursorrules.

That's it. 15 minutes, and your site reads as intentional instead of defaulted.

For deeper changes (hero layout variation, card hierarchy, custom icons), you're looking at 30 minutes to 2 hours. But the 15-minute changes move you from "obviously AI-generated" to "thoughtfully designed."

Frequently Asked Questions

Q: What are the signs a website was built with AI?

A: The most common indicators are: Inter or system font stack (86% of AI sites), Tailwind's default Indigo-500 blue accent, uniform rounded-lg corners on all elements, a centered hero with two buttons (primary + ghost), card grids where every card looks identical, and Lucide icons used decoratively without conveying specific meaning. Any three of these together is a strong signal.

Q: How long does it take to fix a generic-looking AI-generated website?

A: About 15 minutes for the highest-impact changes. Swap the font (3 minutes), change the accent color (3 minutes), adjust the border-radius scale (3 minutes), add intentional shadow depth (3 minutes), and update the AI rules file with the new values (3 minutes). A design system generator like Matchkit compresses all five steps into about 90 seconds.

Q: Which font should I use instead of Inter for my vibe-coded app?

A: For geometric authority (B2B, developer tools): Instrument Sans or Plus Jakarta Sans. For warm approachability (consumer, wellness): DM Sans or Nunito. For editorial sophistication (content, media): Playfair Display paired with Source Sans Pro. Any distinctive Google Font immediately separates your app from the Inter default, which appears on 86% of AI-coded sites.

Q: Can I fix these patterns without regenerating my site?

A: Mostly yes. You can manually update colors, fonts, and shadows in your CSS without regenerating. But if you want consistent patterns across all pages (varied hero layouts, hierarchical cards), you'll need to regenerate with updated AI instructions. Update your CLAUDE.md, then ask Claude to rebuild the inconsistent sections.

Q: Should I hire a designer if my site looks too generic?

A: Not necessarily. These 7 patterns have concrete, straightforward fixes. Most of them don't require design expertise, just deliberate choices. If you want something dramatically more original (custom illustrations, complex layouts, brand-specific components), then yes, work with a designer. But if you just want to escape the "obvious AI default" feeling, these fixes address it.

The vibe coding design problem isn't that AI-coded sites look bad. It's that they look identical. These 7 patterns are the visual fingerprint of AI defaults. Break the pattern on any three, and your site immediately reads as distinctive.

Start with the three easiest: font, color, radius. Spend 10 minutes. Look at the difference. Then decide if you want to invest more time in the higher-lift fixes like layout variation and visual hierarchy.

#vibe-coding#ui-audit#design-mistakes#landing-page#ai-generated
All articles

More articles

Design

MCP Servers for Design: How AI Coding Tools Are Getting a Taste Layer

April 5, 2026·7 min read
Case Study

The Design Gap Between $0/mo and $49/mo SaaS (It's 11 CSS Values)

April 2, 2026·7 min read
Case Study

Agency Workflow: From Client Brief to Branded Prototype with AI Coding

March 29, 2026·7 min read