Font Selection

The Complete Guide to Font Pairing

Mis à jour février 24, 2026
Master font pairing from first principles — contrast, concordance, and conflict. Learn the rules, then learn when to break them.

The Complete Guide to Font Pairing

Typography is one of the most powerful tools in a designer's kit, yet font pairing remains one of the most misunderstood disciplines in the craft. Open any design critique thread and you'll find debates about whether two fonts "work together." Ask ten designers for their top pairing and you'll get ten different answers, each defended with passionate certainty.

The truth is that font pairing isn't mystical. It follows rules — rules rooted in visual contrast, historical classification, and the basic psychology of how humans read. Once you understand those rules, you can evaluate any combination with confidence and build pairings that feel inevitable rather than accidental.

This guide covers everything: the theory, the practice, the proven combinations, and the mistakes that trip up even experienced designers.

The Three C's: Contrast, Concordance, Conflict

Every font pairing falls into one of three relationships. Understanding which relationship you're creating — and whether it's intentional — is the first step toward making better decisions.

Contrast is the deliberate use of difference to create visual hierarchy and interest. When you pair a bold serif heading with a light sans-serif body, you're using contrast. The two fonts are clearly distinct, which makes the hierarchy legible at a glance. Contrast works because the brain immediately processes the difference as meaningful — the larger, heavier, more decorative type is the heading; the smaller, lighter, plainer type is the body.

The most reliable contrasts come from pairing across classifications. A humanist sans like Inter with a transitional serif like EB Garamond creates contrast through construction: one is built on geometric and optical principles, the other on calligraphic history. They look different because they are different in origin and purpose.

Concordance is harmony — pairing fonts that share similar characteristics without being so similar that they blur together. A concordant pairing might use two serifs from the same historical period, or two humanist designs that share proportions and warmth without being identical. The Playfair Display and Lora pairing works on this principle: both are literary serifs with ink-trap detailing and classical proportions, but Playfair's display-optimized drama distinguishes it clearly from Lora's text-optimized restraint.

Concordance requires more sophistication than contrast because the differences are subtle. Done well, it creates a refined, cohesive feeling. Done poorly, it looks like you couldn't decide between two fonts and used both anyway.

Conflict is what happens when two fonts create visual tension without the purposeful hierarchy of contrast or the harmony of concordance. Two display fonts competing for attention. Two decorative scripts side by side. Two geometric sans-serifs that are similar enough to suggest a mistake but different enough to clash. Conflict almost always happens by accident — it's the result of choosing fonts independently rather than as a system.

The goal of good font pairing is to operate in the contrast or concordance zone while actively avoiding conflict. Every pairing decision should start with the question: "Am I creating meaningful difference or meaningful harmony? Or am I just creating noise?"

The Heading + Body Formula

The most fundamental font pairing in web and print design is the heading-and-body combination. It's also the most forgiving place to start because the functional difference between heading and body creates built-in contrast in scale, weight, and context — even before you factor in typeface choice.

The formula works like this: choose one font for headings (H1 through H3) and one font for body text. The heading font should be expressive — it carries the personality of the page. The body font should be invisible — so readable that readers consume it without noticing it.

Heading font qualities to look for: - Strong personality or a distinctive feature (unusual weight, high contrast, expressive details) - Works well at 24px and above - Doesn't have to perform at 16px or in long paragraphs - Can be rarer or more unusual — it's used sparingly

Body font qualities to look for: - Optimized for readability at 14–18px - Generous x-height for comfortable reading - Open apertures that prevent letters from closing up - Moderate stroke contrast — not flat, not extreme - Comfortable in 50–75 character line lengths

When you pick these two roles first and then fill them with typefaces, pairing becomes much easier. You're not choosing "two fonts that go together" in the abstract — you're casting roles in a system.

For most web projects, the safest execution is a sans-serif heading paired with a serif body, or a serif heading with a sans-serif body. Both combinations use classification contrast to separate the roles. The heading's classification signals its role; the body's classification signals its role; the system reads clearly without ambiguity.

A practical starting point for any project: open Google Fonts, filter by "Display" for headings and "Text" for body, then apply the contrast principle. You'll narrow thousands of options to a manageable list within minutes.

Pairing by Classification: What Works

Understanding type classification is essential for systematic pairing. Not because you need to memorize history, but because classification groups fonts with similar visual DNA — and fonts with compatible visual DNA tend to pair well together.

Serif + Sans-Serif (Most Reliable)

This is the workhorse of font pairing. Serifs and sans-serifs developed from different traditions and serve different visual functions, which means the contrast between them is built-in and reliable.

The key is matching the humanist flavor. A humanist sans like Lato or Source Sans Pro pairs more naturally with a humanist serif like Garamond than with a transitional or Didone serif. Both humanist designs share proportions based on the human hand — the axis of stroke variation is diagonal, reflecting calligraphic origins. Pair two humanist designs (one serif, one sans) and the result feels cohesive despite the classification contrast.

Similarly, a geometric sans like Montserrat pairs naturally with a modern/Didone serif. Both are influenced by geometric construction and mechanical perfection — the contrast is in their application (heading vs. body), not their underlying aesthetic.

Serif + Serif (Requires Care)

Two serifs can work, but only if there's clear visual contrast between them — usually achieved through: - Period contrast (Renaissance humanist + transitional, or transitional + modern) - Weight contrast (light text serif + bold display serif) - Size contrast (large decorative heading + small text body)

Playfair Display as a heading with Merriweather as a body works because Playfair is a high-contrast Didone optimized for display, while Merriweather is a low-contrast slab designed for screen readability. They share the serif classification but differ dramatically in purpose and visual weight.

Sans + Sans (Difficult but Possible)

Two sans-serifs require the most intentional approach. You need to ensure the fonts differ in: - Weight (one noticeably heavier than the other) - Proportion (one condensed, one normal width) - Personality (one geometric, one humanist)

Oswald (condensed, bold heading) with Roboto (normal, readable body) is one of the most popular sans+sans pairings on Google Fonts. The contrast is in proportion and weight, not classification. The system is clear because no one mistakes which font is the heading and which is the body.

Display/Script + Any (Narrow Use)

Display and script fonts exist for single-line headlines, logos, and decorative callouts. They're not body fonts. When you use them, pair them with something completely neutral — a clean sans-serif or a modest serif — so the display font has room to breathe. Pairing two display fonts is almost always a conflict waiting to happen.

10 Proven Font Combinations

These pairings have been tested across thousands of real projects. Each has a clear use case and a clear reason it works.

1. Inter + EB Garamond Use case: Editorial, long-form content, sophisticated web apps. Why it works: Inter's optical optimization at small sizes and EB Garamond's classical humanist proportions share a warmth that prevents the pairing from feeling sterile. Use Inter for UI and navigation, EB Garamond for article body text.

font-family: 'Inter', sans-serif;        /* headings, UI */
font-family: 'EB Garamond', serif;       /* body text */

2. Playfair Display + Source Sans Pro Use case: Fashion, lifestyle, editorial blogs, premium brands. Why it works: Playfair's high-contrast Didone drama creates strong heading presence. Source Sans Pro's neutrality keeps body text from competing. The contrast between ornate and functional is the whole point.

3. Montserrat + Merriweather Use case: Business websites, marketing pages, professional services. Why it works: Montserrat's geometric confidence at large sizes pairs with Merriweather's screen-optimized readability. Both have clear personalities without clashing.

4. Oswald + Roboto Use case: News sites, sports, high-energy brands, informational dashboards. Why it works: Oswald's condensed boldness creates maximum heading impact. Roboto's neutral flexibility handles dense body text without fatigue. Both are high-performing Google Fonts with consistent rendering.

5. Raleway + Lato Use case: Clean startup sites, portfolio pages, design agencies. Why it works: Raleway's distinctive geometric character (the double-story 'W', the thin weight options) creates refined headings. Lato's humanist warmth prevents the body from feeling cold.

6. Cormorant Garamond + Proza Libre Use case: Literary blogs, publishing, high-end editorial. Why it works: Cormorant's extreme contrast and elegance commands attention at large heading sizes. Proza Libre is specifically designed as a text complement to display serifs — the pairing is by design.

7. DM Sans + DM Serif Display Use case: Modern editorial, contemporary brand sites. Why it works: This is a designed superfamily pairing — both fonts share the "DM" design DNA, meaning the proportions and spacing are calibrated to work together. It's essentially a cheat code for cohesive type.

font-family: 'DM Serif Display', serif;  /* headings */
font-family: 'DM Sans', sans-serif;      /* body */

8. Space Grotesk + Space Mono Use case: Developer tools, technical documentation, SaaS products. Why it works: Both are designed by the same designer as complementary fonts. Space Mono's fixed-width geometry matches Space Grotesk's quirky rationalism. Ideal for code-heavy content.

9. Libre Baskerville + Libre Franklin Use case: Civic, nonprofit, news, authoritative editorial. Why it works: Both are "Libre" revivals sharing a functional, no-nonsense ethos. Baskerville's authority at heading size pairs with Franklin's journalistic neutrality in body text.

10. Nunito + Nunito Sans Use case: Friendly apps, children's products, casual consumer software. Why it works: Another superfamily approach. Nunito's rounded terminals create warmth in headings; Nunito Sans removes the rounds for slightly more efficient body text. The family relationship ensures harmony.

Common Pairing Mistakes to Avoid

Even experienced designers fall into these traps. Knowing them is half the battle.

Pairing two fonts that are too similar. This is the most common mistake. Two geometric sans-serifs, or two transitional serifs, or two humanist types — they're similar enough that users wonder whether the variation is intentional, but different enough that it looks inconsistent. If you can't explain in one sentence why you chose two different fonts, consider using weights and styles within one family instead.

Using display fonts in body text. Playfair Display is called "Display" for a reason. High-contrast serifs and decorative faces are designed for large sizes where their detail reads clearly. At 16px body text size, the thin strokes in a Didone disappear, creating uncomfortable shimmer and fatigue. Check whether a font has a "Text" or display-only variant before using it in paragraphs.

Ignoring x-height compatibility. X-height — the height of lowercase letters relative to the cap height — varies significantly between fonts. When you mix fonts with very different x-heights, they feel mismatched even if you can't articulate why. A heading font with a low x-height next to a body font with a tall x-height creates an awkward visual jump. Check x-heights by typing the same word in both fonts at the same size.

Overloading with personality. Script fonts, display fonts, and decorative faces all have strong personalities. One personality per page. If your heading is a flowing script, your body should be invisible. If your body is a literary serif with editorial character, your heading can be dramatic but not also scripted. Two strong personalities fight for attention.

Not testing in context. Fonts look different on screens vs. in mockups, at mobile sizes vs. desktop, at your system's color profile vs. a calibrated display. A pairing that looks perfect in Figma might feel different in a live browser. Always test your fonts in actual HTML/CSS at the real sizes and line lengths you'll use.

Downloading and using everything. More fonts is not better. Loading multiple font families increases page weight, slows rendering, and creates visual inconsistency. Three font families is a hard maximum for any single project. Two is usually better. One, used with weight and style variants, is often ideal.

Testing Your Pairings: A Checklist

Before committing to a font pairing, run it through this checklist. Each question should have a clear, positive answer.

Hierarchy check: - [ ] Can you tell immediately which text is a heading and which is body copy? - [ ] Does the hierarchy remain clear when you squint at the page? - [ ] Would a first-time visitor understand the page structure without reading?

Readability check: - [ ] Is the body font comfortable to read for more than two paragraphs? - [ ] Does the body font maintain readability at your smallest intended size? - [ ] Are the letterforms distinguishable? (Is 'l', 'I', and '1' clearly different?)

Character check: - [ ] Do both fonts feel appropriate for your brand/content tone? - [ ] Would the pairing work in a different cultural or geographic context? - [ ] Is there a clear reason each font was chosen, or did you just "like them"?

Technical check: - [ ] Do both fonts render well on Windows (where ClearType anti-aliasing is common)? - [ ] Do both fonts include the character sets you need? (Extended Latin? Cyrillic? Numerals?) - [ ] Is the page-weight impact of loading both font families acceptable? - [ ] Have you tested at 320px mobile width and 1440px desktop width?

Contrast check: - [ ] Are the two fonts clearly different from each other — enough that the choice looks deliberate? - [ ] If you removed all size and weight differences, would you still be able to tell the fonts apart? - [ ] Does the pairing feel cohesive, or does one font feel like it belongs to a different project?

Use the font pairing tool to test combinations live in your browser, side by side, with your actual content. You'll catch problems in minutes that would take hours to diagnose after implementation.

The simplest test: Print your pairing at normal reading size on paper. Paper removes the confounding effects of screen rendering and forces you to evaluate the fonts purely on their merits. If the combination works on paper, it will work on screen.

Font pairing gets easier with practice, not because the rules change, but because you build intuition for what "contrast without conflict" looks and feels like. Keep a collection of pairings you admire, analyze why they work using the vocabulary in this guide, and apply that analysis to your own projects. The principles are consistent. The results, when you follow them, are reliably good.

Font Pairing Masterclass

Termes typographiques

Essayez ces outils

Polices mentionnées

Roboto Sans Serif #1

Conçue par Christian Robertson pour l'écosystème Material Design de Google, cette police sans-serif néo-grotesque est la plus utilisée sur le web et sur Android. Sa conception à double nature équilibre précision mécanique et rythme de lecture naturel, s'adaptant aussi bien aux libellés d'interface qu'aux longs textes. La police variable prend en charge les axes de chasse et de graisse, ainsi que les écritures cyrillique, grecque et latine étendue.

The quick brown fox jumps over the lazy dog
Open Sans Sans Serif #2

Steve Matteson a conçu cette police sans-serif humaniste avec un axe droit et des ouvertures généreuses qui privilégient la lisibilité sur toutes les tailles d'écran et résolutions. L'une des polices web les plus déployées jamais publiées, elle adopte un ton neutre et professionnel idéal pour le texte courant, les modèles d'e-mail et les applications web. Les axes variables de chasse et de graisse, plus le support hébreu et grec, en font une option multilingue très polyvalente.

The quick brown fox jumps over the lazy dog
Inter Sans Serif #5

Rasmus Andersson a passé des années à affiner ce néo-grotesque spécifiquement pour les écrans d'ordinateur, en optimisant l'espacement des lettres, la hauteur d'x et le contraste des traits pour une haute lisibilité aux petites tailles sur les affichages numériques. Un axe de taille optique (opsz) permet à la police d'adapter automatiquement son design aux légendes ou aux titres, tandis que l'axe de graisse couvre toute la gamme du fin au noir. Il est devenu le choix de référence pour les tableaux de bord, les sites de documentation et les outils pour développeurs dans le monde entier.

The quick brown fox jumps over the lazy dog
Montserrat Sans Serif #6

Inspirée par la signalétique géométrique et les devantures du quartier Montserrat de Buenos Aires, Julieta Ulanovsky a créé cette police pour capturer l'esprit de la typographie urbaine du début du XXe siècle. Les formes circulaires nettes et les fortes proportions géométriques lui confèrent une présence affirmée, idéale pour les titres, le branding et les pages d'accueil. L'axe de graisse variable couvre une large gamme, avec le cyrillique et le vietnamien inclus.

The quick brown fox jumps over the lazy dog
Oswald Sans Serif #12

Vernon Adams a réimaginé le genre grotesque condensé classique pour le web, en s'inspirant des gothiques américaines de la première heure et des caractères condensés de journaux. Ses proportions hautes et étroites commandent l'attention dans les titres, affiches et contextes d'affichage où le rythme vertical est serré. Un axe de graisse variable et le support du cyrillique étendent son utilité au-delà des applications en langue anglaise.

The quick brown fox jumps over the lazy dog
Playfair Display Serif #17

Claus Eggers Sorensen a dessiné ce serif moderne à fort contraste dans la tradition de Bodoni et Didot, avec des transitions épaisses-fines dramatiques et des déliés fins exigeant un rendu haute résolution. Il excelle dans le design éditorial, le branding de luxe et les grands titres où son contraste théâtral peut être apprécié. Un axe de graisse variable et le support cyrillique complètent les variantes italiques et petites capitales déjà existantes dans la famille.

The quick brown fox jumps over the lazy dog
Lora Serif #26

Lora est une serif contemporaine équilibrée, ancrée dans la tradition calligraphique, alliant un contraste modéré et des courbes fluides qui lui confèrent un caractère résolument littéraire. Cyreal l'a conçue spécialement pour le confort de lecture à l'écran, et l'axe de graisse variable — associé à la prise en charge du cyrillique, du vietnamien, des symboles mathématiques et divers — étend son utilité bien au-delà de la prose anglaise. Elle s'illustre aussi bien dans les mises en page élégantes de blogs que dans la composition académique où la chaleur et la crédibilité sont essentielles.

The quick brown fox jumps over the lazy dog
EB Garamond Serif #62

EB Garamond est la revival open-source réalisée par Georg Duffner des caractères du XVIe siècle de Claude Garamond, l'un des typographes les plus influents de l'histoire de l'imprimerie occidentale, basée fidèlement sur le spécimen imprimé par Conrad Berner en 1592. L'axe de graisse variable couvre le registre allant du romain au gras, et la prise en charge étendue des scripts — latin, cyrillique, grec, vietnamien — en fait une police remarquablement polyvalente. Elle apporte élégance académique et autorité historique au design de livres, à l'édition savante et aux contextes éditoriaux qui valorisent le patrimoine typographique.

The quick brown fox jumps over the lazy dog

Articles connexes