TL;DR
- Pair fonts by contrast (serif + sans-serif), not similarity.
- Stick to two font families — use weight and size for variety before reaching for a third.
- Always test a pairing at real reading size, not just as large headline samples.
Good font pairing comes down to a handful of repeatable principles, not innate taste. Here’s what actually makes two fonts work together.
Contrast, not matching
Pair a serif with a sans-serif, or a heavy display font with a light body font. Two fonts that look too similar just look like a mistake, not a pairing.
Limit yourself to two families
One for headlines, one for body text. A third font is occasionally fine for small accents (like a label or eyebrow text), but three+ full families in one design almost always looks unplanned.
Match the mood, not just the shape
A playful rounded display font paired with a strict grotesk body font sends mixed signals, even if the proportions technically work together. Pick fonts whose personality matches the actual content.
Use weight and size before adding a third font
The urge to add another font is usually solved by using bold, regular, and light weights plus size hierarchy within your existing two fonts, rather than reaching for something new.
Test pairings at actual reading size
A pairing that looks great as two large headline samples side by side can fall apart once the body text is shrunk to 15-16px for actual paragraphs. Always test at real sizes before finalizing.
A safe starting formula
If you’re stuck, this combination rarely fails: a bold, geometric sans-serif for headlines, paired with a clean, highly readable sans-serif (or serif, for a more editorial feel) for body text. It’s not the most original choice, but it’s dependable while you build an eye for pairing.
FAQ
How many fonts should I use in one design?
Two font families is the safe default — one for headlines, one for body text. A third is occasionally fine for small accents only.
Should I pair a serif with a serif?
Generally no — pairing fonts with similar shapes (two serifs, or two sans-serifs) tends to look like a mismatch rather than an intentional choice. Contrast usually works better.