Typography hierarchy is the visual organization of text that guides readers through content. Without clear hierarchy, even well-written content becomes overwhelming. Readers should instantly understand what matters most, where to start, and how to navigate your information. This guide covers the fundamental principles and practical techniques that transform typography from invisible to powerful.
The Three Levels of Typographic Hierarchy
Effective hierarchy operates at three distinct levels:
Primary: Main Headings (H1)
Your page's primary message. H1 should be large, bold, and distinctive. Readers need to grasp your main point in one glance. Use a font size between 32px and 64px depending on context.
Secondary: Section Headings (H2, H3)
Organize content into digestible sections. H2 should be noticeably smaller than H1 but larger than body text (typically 24px-32px). H3 (18px-22px) breaks sections further. These headings signal topic changes and break visual monotony.
Tertiary: Body Text & Details
Your supporting content. Body text needs maximum readability. Use 16px-18px at normal screen distances. Smaller type (12px-14px) is appropriate only for captions, labels, and secondary information.
Font Size Scales That Work
Rather than picking random sizes, use a mathematical scale. This creates harmony and relationship between sizes. Three popular scales:
1.25 Scale (Major Third)
Subtle, classical proportion. Each step is 25% larger.
H1: 40px (base 16 × 2.5) H2: 32px (40 ÷ 1.25) H3: 26px (32 ÷ 1.25) Body: 16px (base)
Best for: Editorial sites, blogs, content-heavy pages
1.333 Scale (Perfect Fourth)
Harmonic ratio found throughout nature and classical architecture. Each step is 33.3% larger.
H1: 48px (base 16 × 3) H2: 36px (48 ÷ 1.333) H3: 27px (36 ÷ 1.333) Body: 16px (base)
Best for: Professional sites, documentation, balanced layouts
1.5 Scale (Perfect Fifth)
Bold, dramatic scale. Each step is 50% larger. Creates maximum contrast.
H1: 48px (base 16 × 3) H2: 32px (48 ÷ 1.5) H3: 21px (32 ÷ 1.5) Body: 16px (base)
Best for: Bold brands, headlines-driven content, design-forward sites
Line Height: The Invisible Hierarchy Tool
Line height affects how readers perceive hierarchy and readability. Tighter line height for headings, looser for body text creates clear distinction without changing font size.
Recommended Line Heights
H1 (primary): 1.1 to 1.2 — tight, powerful, commanding
H2/H3 (secondary): 1.2 to 1.3 — controlled, organized
Body text: 1.4 to 1.6 — spacious, readable, comfortable
Captions/small text: 1.5 to 1.7 — even more space to reduce cognitive load
Why? Readers scan headings; they read body text. Loose line height makes text feel less dense and easier to follow. Tighter line height makes headings feel more impactful and unified.
Font Weight: Building Contrast Without Size
Weight is hierarchy's secret weapon. You don't need drastically different sizes if you vary weight strategically:
Headings: Use bold (700) or extra-bold (800) weights. They command attention without needing enormous sizes.
Body text: Stick with regular (400). Bold text within paragraphs should be used sparingly for emphasis.
Emphasis within text: Use semi-bold (600) for inline highlights rather than full bold, which breaks reading flow.
Variable fonts like Inter, Poppins, and Raleway offer fine-grained weight control (200-900), giving you more nuance than traditional single-weight fonts.
Letter Spacing: Hierarchy Through Breathing Room
Counter-intuitive principle: headlines often benefit from tighter letter spacing, while body text wants generous spacing:
Headlines: -0.02em to 0em (slightly tighter). Makes large text feel controlled and intentional.
Body text: 0em (default spacing). Most fonts are already optimized.
All-caps labels: 0.05em to 0.1em (looser). Caps need more air to remain readable.
Color Contrast for Hierarchy
Don't rely on typography alone. Secondary information deserves lower contrast:
Primary content (body): Full contrast. Black on white, 100% opacity.
Secondary content (metadata, captions): 70% opacity or lighter gray. Enough to read, but clearly secondary.
Tertiary (help text, hints): 50% opacity. Visible but de-emphasized.
Always ensure you meet WCAG accessibility standards: 4.5:1 contrast ratio for body text, 3:1 for large text.
Responsive Typography With CSS clamp()
Modern CSS eliminates the need for multiple media queries. Use clamp() to scale typography smoothly:
/* Scales smoothly from 24px to 48px */
h1 {
font-size: clamp(24px, 5vw, 48px);
}
/* Body text: 14px on mobile, 16px on desktop */
body {
font-size: clamp(14px, 2vw, 16px);
}
/* H2: 20px minimum, 8vw ideal, 32px maximum */
h2 {
font-size: clamp(20px, 8vw, 32px);
line-height: 1.3;
}The clamp() function takes three values: minimum, preferred (viewport-relative), and maximum. Typography scales fluidly with screen size, no breakpoints needed.
Real-World CSS Example
Here's a complete typography system using semantic HTML and clean CSS:
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&family=Merriweather:wght@400;700&display=swap');
/* Base typography */
body {
font-family: 'Merriweather', serif;
font-size: 16px;
line-height: 1.6;
color: #18181b;
}
/* Heading hierarchy */
h1 {
font-family: 'Inter', sans-serif;
font-size: clamp(32px, 5vw, 48px);
font-weight: 700;
line-height: 1.2;
margin-bottom: 1.5rem;
}
h2 {
font-family: 'Inter', sans-serif;
font-size: clamp(24px, 3.5vw, 32px);
font-weight: 600;
line-height: 1.3;
margin-top: 2rem;
margin-bottom: 1rem;
}
h3 {
font-family: 'Inter', sans-serif;
font-size: clamp(18px, 2.5vw, 24px);
font-weight: 600;
line-height: 1.3;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
}
/* Emphasis and secondary content */
strong, b {
font-weight: 700;
}
em, i {
font-style: italic;
}
small, .small {
font-size: 14px;
line-height: 1.5;
color: rgba(0, 0, 0, 0.7);
}
/* Code and technical content */
code {
font-family: 'Monaco', monospace;
background: #f5f5f5;
padding: 2px 6px;
border-radius: 3px;
font-size: 14px;
}Testing Your Hierarchy
Before shipping, ask yourself:
- Can I understand the page's main point in 3 seconds without reading?
- Are sections clearly distinguished from each other?
- Is body text comfortable to read for extended periods?
- Do headings feel appropriately emphasized?
- Does the hierarchy work at mobile sizes?
- Do all colors meet WCAG contrast standards?
If you answer yes to all of these, your typography hierarchy is working.
Common Hierarchy Mistakes to Avoid
- Too many sizes: More than 4-5 font sizes in a design creates chaos. Stick to your scale.
- Insufficient contrast: Secondary text that's too similar to primary text confuses readers.
- Ignoring line height: Cramped line height makes body text exhausting. Err on the side of spacious.
- Decorative fonts for body text: Display fonts are beautiful but exhausting to read in quantity.
- Inconsistent line heights: Each text level should have a consistent, intentional line height.
The Takeaway
Typography hierarchy isn't about making something look fancy. It's about guiding readers efficiently through your content. A well-executed hierarchy is invisible—readers focus on your message, not on struggling to understand what matters most. Use size, weight, line height, and color strategically, test across devices, and prioritize readability above all else. Your readers will thank you.
Apply These Principles With the Font Pairing Generator
Use our free tool to test font combinations with realistic hierarchy. Preview different font pairings, adjust sizes and spacing, and export ready-to-use CSS.
Try the Generator →