Typography · Beginner

Font pairing fundamentals: how to combine two typefaces

How to choose two fonts that belong together, using contrast and a shared logic instead of luck. Includes named pairings you can copy, real spacing numbers, and the mistakes that make text look amateur.

Published Updated 8 min read

Published under the studio name rather than a personal byline. Fundamentals move slowly, so this guide is read again once a year, and sooner if a reader flags something.

Font pairing sounds like a matter of taste. It is mostly a matter of contrast. Two fonts work together when they are clearly different in job but agree in mood. When people pair fonts badly, it is almost always because the two are too similar to feel intentional and too different to feel related.

You can get this right with two questions.

Question one: is there enough contrast?

If your two fonts are nearly the same, readers feel that something is slightly off without knowing why. It looks like a mistake, because it usually is one.

Create contrast on purpose:

  • Category. The classic move is a serif paired with a sans serif. The little feet on the serif and the clean lines of the sans are different enough to read as a decision.
  • Weight. A heavy bold heading over a regular body creates a clear step down, even inside one family.
  • Structure. A tall, condensed display face over a wide, humanist body reads as two distinct voices.

The safest and strongest contrast for most projects is a characterful heading font over a plain, extremely readable body font. Let the heading have personality. Let the body get out of the way.

Question two: do they share a logic?

Contrast alone gives you a ransom note. The two fonts also need something in common so they feel like they belong to the same brand. Look for a shared trait:

  • Both drawn in roughly the same era or spirit, so a geometric heading meets a geometric sans rather than a fussy old serif.
  • Similar proportions, so the lowercase letters are close in height and the text does not look like two different sizes when it is not.
  • A similar mood. A warm, round heading wants a warm, round body, not a cold technical one.

A reliable shortcut: many type families ship in both a serif and a sans version, designed to work together. Using the two halves of one superfamily gives you guaranteed harmony with built in contrast. It is almost cheating.

The two font rule

Use two fonts. Three at the very most, and only when the third has a clear job like labels or code. Every extra font is another thing to keep consistent and another chance to look messy. A single well chosen pair, used with different sizes and weights, gives you more range than most projects will ever need.

If you feel like you need a fourth font, what you actually need is another size or weight of a font you already have.

Starter pairings you can copy

These four combinations use free, commercially safe families and cover most projects. Each pairs a characterful heading with a quiet, readable body.

  • Fraunces (serif heading) over Inter (sans body). Warm editorial heading, neutral screen ready body. The default we reach for on content sites.
  • Space Grotesk (grotesque heading) over Source Serif (serif body). Technical, modern heading paired with a body that reads beautifully at length. Good for product and tech brands.
  • Archivo (grotesque heading) over Work Sans (humanist sans body). All sans, confident on both layers. Good for marketing pages with a strong voice.
  • IBM Plex Serif over IBM Plex Sans. Two cuts of one superfamily, drawn to coexist. Zero pairing risk if you do not trust your eye yet.

The full shortlist of families behind these pairings is in our best free fonts roundup, grouped by job.

Set the body font first

Beginners obsess over the heading and treat the body as an afterthought. Flip it. People read the body. Choose that font first, tune it until a long paragraph is genuinely comfortable, and only then pick a heading that complements it.

Comfortable body text usually means three concrete things, and the defaults in most editors are not quite right:

  • Line length of 60 to 75 characters. Longer lines tire the eye and lose readers at the end of each row. Aim for a measure width of roughly 60 to 75 lowercase characters, which on most layouts means a content column of 600 to 700 pixels.
  • Line height a little looser than the default. For body text on screen, a value of 1.5 to 1.6 reads as comfortable. Tighten to around 1.1 to 1.2 for large headings, where the extra space makes the lines drift apart.
  • Body size of 16 to 18 pixels on the web. Anything smaller than 16 pixels is a tax on the reader. 18 pixels feels generous and is the right call for long articles.

Get those right and even a plain pairing will feel professional. We walk through the full reasoning, including the responsive numbers, in our guide to setting type for screen reading.

Mistakes that give it away

  • Two fonts that almost match. If they are close cousins, pick one or make them clearly different. Two humanist sans serifs at similar weights is the most common offender.
  • A loud display font used for body text. Personality fonts get tiring after a sentence. Keep them for headings and short bursts.
  • Ignoring the details. Curly quotes instead of straight ones, real dashes, and consistent capitalization do more for a polished look than the font choice itself.
  • Default spacing everywhere. Tighten large headings and loosen small body text. The defaults are a compromise, not a recommendation.

Pairings to avoid

A short list of combinations that read as mistakes, even when the individual fonts are good:

Heading Body What goes wrong
Georgia Times New Roman Both old style serifs at similar weight. Reads as one font that almost matches.
Inter Helvetica Now Both neutral grotesques. No contrast, no personality.
Lobster Anything A script display face as a heading dates a site immediately.
Bebas Neue Oswald Both tall condensed sans serifs. Same voice twice.
Comic Sans Papyrus Each is a tell on its own. Together they are a punchline.

The pattern in every row is the same: two faces that are too alike, or one face that already carries too much baggage to pair cleanly.

Where this fits in the workflow

Pairing is the second decision in a typography system, not the first. The order that works:

  1. Pick a body font and tune its size, line height, and measure until a long paragraph is comfortable. This decision does most of the work. See choosing a body text font.
  2. Add a heading font that contrasts clearly in category, weight, or structure. That is this tutorial.
  3. Lay out the page so the heading hierarchy reads at a squint. That is visual hierarchy and layout.

Good typography is quiet. When a pairing works, nobody comments on the fonts, they just find the thing easy and pleasant to read. That silence is the goal.

Sources and further reading

Pairing is taste. The families, the licenses, and the mechanics underneath are checkable, and these are the pages we check them on.

  1. Google FontsAll four starter pairings are drawn from families distributed here, each with its license stated on the family page.
  2. Google Fonts KnowledgeA longer reference on type anatomy, contrast, and choosing typefaces, for when you want the reasoning under the rules of thumb.
  3. MDN Web Docs, font-familyHow font stacks and fallbacks resolve, which decides whether readers ever see the pairing you chose.

Quick answers

How many fonts should a website use?

Two is the honest answer for almost any project: one for headings, one for body. A third is justifiable only when it has a clear, separate job, like a monospaced font for code samples. Anything past three is almost always a case for another weight of a font you already own.

Do I pair a serif with a sans serif?

It is the safest contrast, but not the only one. A characterful serif heading over a clean sans body works, and so does a strong grotesque sans heading over a humanist sans body. The rule is contrast in category, weight, or structure, not specifically serif versus sans.

Can I pair two fonts from the same family?

Yes, and it is often the safest choice. Type superfamilies like IBM Plex or Source ship a sans, a serif, and a mono drawn to work together, so you get built in harmony with no pairing guesswork. Treat it as a legitimate shortcut, not a compromise.

What size should body text be?

On the web, start at 16 to 18 pixels for body and a line height around 1.5 to 1.6. Keep line length between roughly 60 and 75 characters. If you want the full reasoning, see our guide to setting type for screen reading.

Where do I find fonts that are safe for commercial work?

Google Fonts and the SIL Open Font License catalog are the most reliable starting points. Our best free fonts roundup lists the families we reach for most often, all free for commercial use.

Keep going

More tutorials