
The Typographic Hierarchy Trap: Why Adding More Font Weights Is Ruining Your UI
When modern variable fonts hit the mainstream, designers rejoiced. We were suddenly handed an infinite spectrum of weights: Thin (100), Light (300), Regular (400), Medium (500), Semi-Bold (600), Bold (700), and Black (900).
Naturally, we put them to work. A card title felt slightly weak? Make it font-weight: 600. The subtitle looked competing? Drop it to 500. The timestamp looked lonely? Maybe a 300 would soften it up.
Before long, a single dashboard view contains five different font weights. The interface feels noisy, muddy, and surprisingly difficult to scan. This is The Typographic Hierarchy Trap: attempting to solve visual ambiguity by introducing subtle weight variations instead of committing to bold structural contrast.
The Cognitive Blur of Subtle Weights
Human perception is calibrated to spot dramatic contrasts, not subtle gradations. On typical screens—with varying pixel densities, ambient glare, and subpixel anti-aliasing quirks—the visual distinction between 400 (Regular) and 500 (Medium) is razor-thin.
When users scan an interface, their eyes shouldn't need to perform micro-calibrations to deduce whether a string of text is a secondary label or an interactive link.
Regular (400) vs. Medium (500) -> Low contrast, visual clutter
Regular (400) vs. Bold (700) -> Instant, effortless distinction
When you scatter three or four adjacent weights across a layout, you trigger cognitive fatigue. Rather than creating a clear path for the eye, the page becomes a low-contrast gray haze where elements compete at almost identical volumes.
The Power of the Two-Weight Constraint
The world’s most resilient design systems—from Apple’s Human Interface Guidelines to classic Swiss typography—rely on extreme typographic restraint.
Try adopting the Rule of Two: build your entire product using only two font weights.
- Body / Default:
Regular(400) - Emphasis / Headers:
Bold(700) orSemi-Bold(600)
By stripping away intermediate weights, you remove a crutch. You force yourself to explore other, far more effective dimensions of visual hierarchy.
Stronger Levers for Establishing Hierarchy
If you can't reach for another font weight, how do you differentiate nine different elements on a page? You use levers that provide unmistakable clarity:
1. Scale and Size Ratios
Instead of nudging a heading from Medium to Semi-Bold at the same 14px size, jump it up on a deliberate type scale. A 20px Regular heading will anchor a section far more effectively than a 14px Bold one.
2. Tonal Contrast and Color
Use value and opacity rather than weight. In dark mode, pure white text (#FFFFFF) commands immediate attention, while a muted slate (#94A3B8) naturally retreats into the background—even if both share the exact same 400 weight.
/* Better than juggling 400, 500, and 600 weights */
.card-title {
font-size: 1.125rem;
font-weight: 600;
color: var(--text-primary); /* High contrast */
}
.card-meta {
font-size: 0.875rem;
font-weight: 400;
color: var(--text-muted); /* Lower contrast, same clarity */
}
3. Spatial Rhythm and Grouping
Proximity is the most underutilized typographic tool. Giving an element generous white space isolates it and automatically increases its importance. A tiny, regular-weight label surrounded by 24px of breathing room often demands more attention than a bold badge crammed tightly against a card border.
4. Case and Letter-Spacing
For metadata, category tags, or table headers, subtle shifts like uppercase tracking (text-transform: uppercase; letter-spacing: 0.05em; font-size: 0.75rem;) provide immediate distinctness without needing extra font thickness.
Refactoring Your Design Tokens
To prevent weight creep across your engineering team, audit your CSS custom properties or Tailwind configuration. Lock down weight tokens to unambiguous roles:
:root {
/* Deprecate intermediate weights */
/* --font-light: 300; */
/* --font-medium: 500; */
/* Keep your system strict */
--font-body: 400;
--font-strong: 600;
}
When a developer or designer asks, "Can we add a Medium weight for these pill tags?", the answer should almost always be a prompt to adjust size, tint, or padding instead.
Less Weight, More Impact
Typography in UI isn't meant to showcase the full technical capabilities of an OpenType file. Its job is navigation, legibility, and clarity.
Next time a layout feels disorganized, resist the urge to drop a font-weight: 500 on the problem. Strip your weights down to two, crank up your size contrast, and let white space do the heavy lifting.
Photo by Sydney Sang on Pexels
