Licenses

Font Pairing: A Method That Works Instead of a List

· 3 min read

Almost every article about font pairing is a list of pairs that somebody thought looked nice. The pairs are usually fine and the list is useless the moment your project needs something not on it. What is worth learning is the reasoning underneath, which is short.

The one rule: contrast or harmony, never neither

Two typefaces on a page either belong to the same world or are visibly from different ones. What fails is the middle: two faces similar enough that the difference looks accidental. A reader cannot tell whether you chose two things or made a mistake, and that uncertainty is the whole of why some pairings feel wrong without anyone being able to say why.

So the first question is not "do these go together" but "am I aiming for contrast or for harmony". Both work. Neither works badly.

Contrast: the reliable version

A serif for headings and a sans for body, or the reverse, is the oldest working pairing there is. It works because the difference is categorical rather than a matter of degree — nobody looks at Playfair Display above Inter and wonders whether it was intentional.

Contrast in weight is the same principle inside one axis: a heavy display setting over a regular body. Contrast in width, or between a display face and a plain one, does the same job. The requirement is only that the difference is obvious at a glance.

Harmony: the version with a shortcut

The safest harmony is a superfamily — one designer’s sans and serif drawn together, sharing proportions and x-height. IBM Plex Sans with IBM Plex Serif, or Source Sans 3 with Source Serif 4. The pairing question has already been answered by the person who drew both, which is why these are hard to get wrong.

The other harmony worth knowing is one typeface used at two very different weights and sizes. It is not a pairing at all, technically, and for a great many projects it is the right answer — the discipline reads as confidence rather than as a limitation.

The two things to check before committing

X-height

The height of the lowercase relative to the capitals is what makes two faces set at the same size look like different sizes. Two faces with very different x-heights need their sizes adjusted against each other, and if you do not the body text will look either shrunken or oversized under the heading. Set them side by side at the same value and look at the lowercase before you decide anything else.

Mood, said out loud

A geometric sans is neutral and slightly cold. A humanist sans is warm. A Didone is formal and expensive. A slab is sturdy and a bit blunt. Two faces whose moods contradict each other will fight regardless of how well their proportions match — and naming the mood in a word is usually enough to notice the contradiction before you have built the page.

Pairings worth starting from

Not because they are the only ones, but because each demonstrates one of the principles above. Playfair Display over Inter is categorical contrast. Lora over Work Sans is the same idea at lower volume, for something that has to be read rather than admired. Space Mono over Inter is contrast by category rather than by style, and it is why so many technical sites look the way they do.

FamilyVariable downloadStatic download
Playfair Display270 KB2 files1.0 MB12 files
Inter957 KB2 files9.1 MB54 files
Lora224 KB2 files555 KB8 files
Work Sans341 KB2 files1.5 MB18 files
Source Serif 4989 KB2 files6.0 MB64 files
The faces named above, measured from the files in this archive.

How to test a pair in two minutes

Set a real heading and a real paragraph — your own words, not filler — at the sizes you will actually use, and look at them small. Most pairings that fail, fail at body size rather than in a specimen. The Lorem Ipsum tool here will set any font in this archive at a chosen size inside a frame you can drag to the width of your real column, which is the part a specimen cannot show you.

Then leave it and come back. A pairing that still looks deliberate an hour later is a pairing. One that has started to look like an accident was always going to.

Questions

How do I pair two fonts?
Decide first whether you want contrast or harmony, and then commit to it. Contrast means a visibly different category — a serif against a sans, or a heavy display against a plain body. Harmony means a superfamily drawn together, or one typeface used at two very different weights. What fails is the middle: two faces similar enough that the difference looks like a mistake.
What is the safest font pairing?
A superfamily — a sans and a serif drawn by the same designer to sit together, such as IBM Plex Sans with IBM Plex Serif or Source Sans 3 with Source Serif 4. The pairing question has already been answered by the person who made both, which is why these are almost impossible to get wrong.
How many fonts should a website use?
Two is a reasonable ceiling for most sites, and one used at several weights is a perfectly good answer. Every additional family is another set of files to download and another voice on the page. Three needs a reason; five usually means nobody has looked.
Why do my two fonts look wrong together at body size?
Most often because their x-heights differ. Two faces set at the same point size can look like different sizes if the lowercase of one is noticeably taller, and the fix is to adjust the sizes against each other rather than to change font. Judge a pairing at the size you will actually set it, not from a specimen.

Fonts in this post