15 KiB
Anti-Patterns — The Full Rejection Catalog
When in doubt about whether something is slop, look it up here. If it's listed, redesign.
Visual Anti-Patterns
1. The Purple-Blue Gradient Hero
Slop signature: Hero section with full-bleed linear-gradient(135deg, #667eea 0%, #764ba2 100%), centered headline in white, sometimes with a stock photo of a person at a laptop faintly visible.
Why it's slop: It was the default output of every AI image generator circa 2022 and became the visual shorthand for "AI made this." It carries zero information.
Replace with:
- White/off-white background, ink-colored headline set tight and large
- Or a single full-bleed photograph with no gradient
- Or a deliberately designed gradient (e.g., terminal green→black, monochrome, single hue at low opacity)
2. Glassmorphism on Everything
Slop signature: Every card, modal, and nav has backdrop-filter: blur(20px), translucent white background, soft border. Floating UI elements look like they're made of frosted glass.
Why it's slop: Used to signal "modern app" but now signals "AI-generated template." Real apps (Linear, Stripe, Arc) avoid this because it hurts legibility and performance.
Replace with:
- Solid surface colors with hairlines for separation
- Or one focal glass element used sparingly (a key modal, the active nav)
- Hairline borders (
1px solid var(--hairline))
3. The Emoji Icon
Slop signature: Feature cards with 🚀 ⚡ 🎨 💡 as the icon. Service descriptions with ✨ sprinkled.
Why it's slop: Emoji are not icons. They render differently across systems, are not part of a designed system, and read as "we didn't bother with real icons."
Replace with:
- Real icon set (Lucide, Phosphor, Tabler, Heroicons — but used with intent, not all of them everywhere)
- Custom SVG icons that match the visual weight of the type
- No icon at all (typography alone can structure a section)
4. The Pill Button Soup
Slop signature: Every interactive element has border-radius: 9999px. Buttons, badges, cards, images, inputs.
Why it's slop: Reads as "we applied the default rounded-corner treatment to everything." Real design systems vary radius by component type.
Replace with:
- Buttons: 6–8px radius (subtle) OR 0 (Swiss) OR pill (only for very specific cases like tags)
- Cards: 8–12px radius OR 0
- Images: 0 OR 4–8px (within cards)
- Inputs: 6–8px radius OR 0
- Set a radius scale (
--radius-sm,--radius-md,--radius-lg) and stick to it.
5. The Gummy Shadow
Slop signature: Cards and elements with box-shadow: 0 4px 6px rgba(0,0,0,0.1), 0 10px 15px rgba(0,0,0,0.1), 0 20px 25px rgba(0,0,0,0.1) — multiple soft layers making everything look like it's made of marshmallow.
Why it's slop: Heavy shadows + translucent surfaces = everything looks the same depth = nothing has hierarchy.
Replace with:
- One precise shadow, not multiple.
box-shadow: 0 1px 2px rgba(0,0,0,0.06), 0 4px 12px rgba(0,0,0,0.04) - Or no shadow at all — use hairlines to separate surfaces
- Or use a single elevated shadow for modals/popovers only
6. The Centered Hero Section
Slop signature: Centered headline, centered subhead, centered CTA button(s), centered "trusted by" logo bar.
Why it's slop: Centered alignment for primary content is the universal default. It signals no design decision was made.
Replace with:
- Left-aligned headline, support element (image, product UI) on the right
- Or a deliberate asymmetric composition
- Or a single, oversized centered display headline (editorial style — make it a poster, not a template)
7. The "Aurora" Background
Slop signature: Animated, multi-color blob shapes behind content. Sometimes labeled as "mesh gradient" or "aurora UI."
Why it's slop: Decorative noise that actively hurts the content. The user came for information, not a screensaver.
Replace with:
- Nothing. White space is the background.
- Or a single, restrained decorative element (one geometric shape, one texture)
- Or full-bleed photography that earns its place
8. The Blob Illustration
Slop signature: Abstract 3D shapes — blobs, spheres, twisted toruses, often in pastel colors with soft gradients. Used as hero images or section dividers.
Why it's slop: Looks like an AI image generator's default output. Carries no meaning.
Replace with:
- Real product photography
- Real illustration with intent (editorial, custom, meaningful)
- A diagram, a chart, a piece of UI shown larger
- Typography alone — sometimes the strongest hero has no image
9. Drop Shadow on Text
Slop signature: text-shadow: 0 2px 4px rgba(0,0,0,0.5) on headlines.
Why it's slop: It's a Photoshop effect from 2008. Headlines should be set clean.
Replace with: No text shadow. Make the headline legible through contrast and size.
10. The Stock Photo Smile
Slop signature: Hero image of a young professional smiling at a laptop with a coffee, often with a slight gradient overlay. Or a diverse group of four people laughing around a whiteboard.
Why it's slop: Says nothing about your specific product. Reads as "we didn't take our own photos."
Replace with:
- Real product UI screenshot (this is the most powerful hero for B2B SaaS)
- Real photograph of the actual product / team / space
- An abstract / editorial image that sets mood without being literal
- No image — sometimes the strongest hero is pure typography
Structural Anti-Patterns
11. The SaaS Sandwich
Slop signature: Every page follows this exact structure:
- Hero (centered headline + 2 buttons)
- "Trusted by 10,000+" logo bar
- Three feature cards in a row
- "How it works" — three numbered steps with icons
- Three more feature cards (with screenshots)
- Testimonial carousel
- Pricing (three columns)
- FAQ accordion (8 questions)
- Big CTA section
- Footer with 5 columns of links
Why it's slop: This is what every AI generates when asked to "make a SaaS landing page." It signals zero information architecture thinking.
Replace with:
- Question the structure for THIS product. What's the one thing the visitor needs to know?
- Editorial structure: maybe it's just a strong headline, a product screenshot, a few specific use cases, and a sign-up. No "trusted by," no FAQ.
- Varied sections: a big quote, a data visualization, a side-by-side comparison, a real customer story — mix the rhythm.
12. The Identical 3-Column Row
Slop signature: Three identical cards in a row, repeated as a section. Each card has: small icon, headline, paragraph, optional link. Used 2–3 times down the page.
Why it's slop: The 3-column card row is the universal placeholder for "show some features." Repeating it compounds the problem.
Replace with:
- Make the cards different from each other — one has a screenshot, one has a number, one has a quote
- Use varied layouts: 2-column, side-by-side, magazine-style spread
- Sometimes the strongest feature presentation is a single sentence with a big number behind it
13. The Middle-Pricing-Card Highlight
Slop signature: Three pricing tiers, middle one has a different color border, "Most Popular" badge, slightly larger, sometimes a glow.
Why it's slop: The pattern is so universal it's invisible — and it forces the user into a fake choice (the middle one). Also, who is it "most popular" for? Usually nobody.
Replace with:
- Two tiers (most products only need two)
- Or four tiers with the third one genuinely best (not the third by index, but the third by what makes sense for the buyer)
- Or no pricing cards — a single page explaining pricing, with a calculator or contact form
14. The FAQ That Asks Nothing
Slop signature: "What is [Product]?" "How does [Product] work?" "Is [Product] secure?" "How much does [Product] cost?" — generic questions that nobody actually asked.
Why it's slop: Real FAQs come from real support tickets. If yours reads like a template, it didn't.
Replace with:
- Real questions from real customers (check your support inbox)
- Specific, surprising questions: "Can I use this with [specific competitor]?" "What happens to my data if I cancel?"
- Or no FAQ at all — link to a real docs page
15. The Logo Bar of Lies
Slop signature: "Trusted by" with 8–12 logos of companies you've never heard of. Or logos of real companies that aren't actually customers (a famous slop move).
Why it's slop: Users notice. Investors notice. Anyone technical notices. It's a credibility-destroying move.
Replace with:
- Real customers with permission to use their logo
- If you don't have many, show 3 prominently, not 12 dishonestly
- Or skip this section entirely — it's not required
16. The Testimonial Carousel
Slop signature: Three testimonials rotating every 5 seconds, each with a stock headshot, name, title, company, and a 2-sentence quote full of marketing words.
Why it's slop: No one reads rotating testimonials. Each one is too brief to convince. The carousel hides weak content.
Replace with:
- One long-form customer story (interview format, real photos, real numbers)
- Or 3–6 static testimonials with full quotes, names, photos, no rotation
- Or a case study link: "Read how [Company] used [Product] to [Specific Outcome]"
Copy Anti-Patterns
17. The Verb Stack
Slop examples:
- "Empowering businesses to thrive"
- "Enabling teams to unlock their potential"
- "Seamlessly integrate, effortlessly scale"
- "Revolutionizing the future of work"
Why it's slop: Empty verbs. They sound like they say something but don't.
Replace with:
- Specific verbs with specific objects: "Ship features 3x faster" / "Cut your AWS bill in half" / "Find any bug in under 60 seconds"
- Or claims with evidence: "We moved 4TB of data in 8 minutes. Here's how."
18. The Noun Without a Referent
Slop examples:
- "The future of work is here"
- "Modern solutions for modern problems"
- "A better way to [do vague thing]"
Why it's slop: Could apply to any company on Earth.
Replace with:
- The noun made specific: "The future of invoicing for French freelancers" / "A better way to ship pull requests"
19. The Generic Headline
Slop examples:
- "Welcome to [Brand]"
- "The platform for [audience]"
- "Built for the modern [audience]"
Why it's slop: Says nothing. Adds friction. User bounces.
Replace with:
- A headline that makes a claim: "Stop writing CSS. Start describing what you want."
- A headline that names the user: "For designers who'd rather think than fiddle."
- A headline that's specific enough to be slightly weird: "The invoicing app for people who hate invoicing."
20. The Three-Adjective Stack
Slop examples:
- "Fast. Simple. Beautiful."
- "Powerful. Flexible. Reliable."
- "Modern. Elegant. Open."
Why it's slop: Says nothing while sounding like it does. Also: the words contradict each other often (can something be powerful AND simple?).
Replace with:
- One word that actually means something specific to your product: "Quiet." / "Honest." / "Yours."
- Or a full sentence that makes a claim.
21. The Lorem Ipsum in Disguise
Slop examples:
- "Lorem ipsum dolor sit amet" (literally)
- "Description goes here"
- "Subheading about the value proposition"
- "Tagline"
- Placeholder copy left in by a careless draft
Why it's slop: If the copy is placeholder, the design is a sketch. Ship real content.
Replace with:
- Real copy. Even if imperfect. Especially if imperfect — it shows you've thought about the actual words.
- If you must use placeholder: write lorem ipsum clearly, mark it as placeholder, and ASK the user for real copy.
Code Anti-Patterns
22. Tailwind Utility Soup
Slop signature: <div class="bg-white rounded-xl shadow-md p-6 hover:shadow-lg transition-all duration-300 hover:-translate-y-1"> — 14 utilities, no extraction, no semantic naming.
Why it's slop: No design system. No consistency. Can't change one thing in one place.
Replace with:
- Components (
.card,.button,.input) - CSS layers with custom properties
@applyfor utility composition- Or at minimum: extract repeating patterns into named classes
23. Inline Styles for Tokens
Slop signature: style={{ color: '#5E6AD2', padding: '24px', fontSize: '14px' }} — raw values inline, no token system.
Why it's slop: Can never change globally. No design system = no design.
Replace with:
- Use token CSS variables (
color: var(--accent)) - Or Tailwind theme values, not arbitrary values
24. The transition-all Everything
Slop signature: transition-all duration-200 on every interactive element.
Why it's slop: Transitions specific properties (color, background, transform), not all. transition-all includes layout properties, causing jank.
Replace with:
- Specify:
transition: color 150ms ease, background-color 150ms ease, transform 200ms ease; - Or use Tailwind's specific:
transition-colors duration-150
25. Default Focus Rings
Slop signature: No :focus-visible styles. Browser default dotted outline on form elements only. Or outline: none with no replacement.
Why it's slop: Inaccessible. Keyboard users can't tell where they are.
Replace with:
:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
border-radius: inherit;
}
26. Div Soup
Slop signature: <div><div><div class="..."></div></div></div> where <section>, <article>, <nav>, <header>, <footer>, <main>, <aside> exist.
Why it's slop: No semantic meaning. Screen readers can't navigate. Search engines can't parse.
Replace with: Use semantic HTML. Always. The right element is almost always available.
27. font-weight: 700 on Everything
Slop signature: Every heading, every button, every label is font-weight: 700.
Why it's slop: The face was chosen for its 400 weight. Ignoring the weight range loses the typeface's character.
Replace with: Use 400, 500, 600 — reserve 700 for hero moments only.
28. Emoji in Source Code
Slop signature: Commit messages, comments, console output with 🎉 🚀 ✨.
Why it's slop: Same reason as emoji icons. Use words.
What to Do When You Catch Yourself
When you realize you're producing slop — and you will, because it's the default gravity of LLM output — apply this recovery protocol:
- Stop. Don't keep refining the slop.
- Name it. "I am about to ship [specific anti-pattern]."
- Identify the real job. "This section is supposed to [specific job]. What's a non-slop way to do that?"
- Look at a reference. Open Linear.com / Stripe.com / a Pentagram project / a magazine spread. What did they do?
- Redo the smallest version. Strip back to the smallest correct version. Then add one detail.
- Ship the smallest version. It's better than the largest slop version.