Cluttered Layout
When every inch of your page is crammed with content, nothing stands out. Here's how to use whitespace to let your design breathe.
What is this?
Open your fridge. If it's covered in magnets, photos, coupons, reminders, and takeout menus, you can't find the one note that actually matters. Now look at a fridge with three things on it: you see all three instantly. Your website works the same way. When every pixel is occupied — sidebars full of widgets, hero sections with six competing calls-to-action, cards jammed edge-to-edge with no breathing room — your visitors' brains short-circuit. The cat calls it "visual noise," and it's the number one reason otherwise decent sites feel overwhelming.
Why it matters
-
For your visitors: The human brain can only process about four visual groups at once. When your page presents twenty things competing for attention simultaneously, visitors experience decision paralysis. They don't just miss the important stuff — they give up entirely. In UX research, cluttered pages consistently produce the highest bounce rates.
-
For your business: More content on the page does not mean more engagement. The opposite is true. Apple's product pages convert enormously well with huge amounts of whitespace and very few elements per viewport. Reducing visual clutter typically increases conversion rates because visitors can actually find and focus on your call-to-action.
-
The standard: Every section of your page should have a clear focal point — one primary thing you want the visitor to see. Surrounding elements should support that focal point, not compete with it. Use generous whitespace (padding, margins, gaps) to create visual separation between groups.
<section class="py-24 px-6">
<div class="mx-auto max-w-2xl text-center">
<h2 class="text-3xl font-bold">One clear message</h2>
<p class="mt-4 text-lg text-neutral-400">A single supporting paragraph.</p>
<button class="mt-8">One call-to-action</button>
</div>
</section><section class="py-4 px-2">
<h2>Message 1</h2>
<p>Text</p>
<p>More text</p>
<button>CTA 1</button>
<button>CTA 2</button>
<button>CTA 3</button>
<div class="sidebar">Widget Widget Widget</div>
<marquee>SALE! SIGN UP! FREE TRIAL! LIMITED TIME!</marquee>
</section>How to fix it
React / Next.js
The key principle: each section gets one job. Use generous vertical padding and constrain content width:
export function HeroSection() {
return (
// py-24 gives massive breathing room above and below
<section className="py-24 px-6">
{/* max-w-2xl constrains the content to a readable width */}
<div className="mx-auto max-w-2xl text-center">
<h1 className="text-4xl font-extrabold tracking-tight text-white md:text-5xl">
One headline. That's it.
</h1>
{/* mt-6 creates intentional space between headline and body */}
<p className="mt-6 text-lg leading-relaxed text-neutral-400">
One paragraph of supporting text that explains the value. No bullet lists. No feature
grids. Just the core message.
</p>
{/* mt-10 separates the CTA from the text — it's the focal point */}
<button className="mt-10 bg-amber-500 px-8 py-4 text-lg font-bold text-black">
One button
</button>
</div>
</section>
);
}When you have multiple items (cards, features), limit the visible count and use consistent gaps:
export function FeatureSection() {
return (
<section className="py-20 px-6">
<div className="mx-auto max-w-5xl">
<h2 className="text-center text-2xl font-bold text-white">Features</h2>
{/* 3 items max per row, generous gap */}
<div className="mt-12 grid grid-cols-1 gap-8 md:grid-cols-3">
{/* Each card has internal breathing room too */}
<div className="border border-neutral-800 p-8">
<h3 className="text-lg font-semibold text-white">Feature</h3>
<p className="mt-3 text-sm text-neutral-400">Description.</p>
</div>
</div>
</div>
</section>
);
}Plain HTML / CSS
/* The decluttering toolkit */
/* 1. Generous section spacing */
section {
padding: 6rem 1.5rem;
}
/* 2. Constrain content width */
.content-wrapper {
max-width: 42rem;
margin: 0 auto;
}
/* 3. Limit items per row */
.feature-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
max-width: 72rem;
margin: 0 auto;
}
/* 4. Breathing room inside cards */
.card {
padding: 2rem;
}
.card h3 {
margin-bottom: 0.75rem;
}
/* 5. Hide non-essential elements on small screens */
@media (max-width: 768px) {
.sidebar,
.secondary-nav {
display: none;
}
.feature-grid {
grid-template-columns: 1fr;
}
}Cluttered layouts are the most punishing visual design issue because they compound every other problem. Hard to see the hierarchy when there are 30 elements fighting for attention. The cat gives top marks to pages that know what to leave out.
How the cat scores this
The scanner measures visual density by analyzing the number of interactive elements, text blocks, and images within each viewport-height section of your page. It checks for: too many competing calls-to-action (more than 2 per section), insufficient whitespace between content groups, sections that cram more than 4-5 distinct visual groups into a single viewport, and sidebars or widgets that crowd the main content. Pages with clear focal points and generous spacing score highest.
Further reading
- Laws of UX: Hick's Law — why more choices lead to slower decisions
- Whitespace in Web Design — Nielsen Norman Group on using space strategically
- Refactoring UI: Spacing — practical guide to adding breathing room
Dark Mode Issues
Dark themes look cool until your visitors can't read the text. Here's how to build a dark mode that's stylish and actually usable.
Unfinished Appearance
Placeholder text, broken images, and half-built sections tell your visitors you don't care. Here's how to ship something that looks done.