Design & Creative

Font Pairing

Pick a heading font. Get 3-5 body pairings with reasoning, live preview, and copy-ready CSS.

editorialSerif / Sans
type.specimen/playfair+display+inter.css
◉ google fonts
Heading + Body Pairing · Live Specimen
5 pairings46 fonts
Playfair Display + Inter
Aa
Specimen
Serif
5 pairings

Heading font

HeadingSerif
Playfair Display
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
Suggested body fontstap to swap
Playfair Display + Inter

Type specimen

Heading — Playfair DisplayAa

Build things people actually want

A subheading that carries the next idea

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
Body — InterAa

Body copy sets the rhythm of a page. It should read cleanly at 16–18px, step out of the way of the heading, and still feel like part of the same family of voices. When the pairing works, you stop noticing the type and start noticing the words.

Smaller supporting copy — captions, metadata, footnotes — should keep the same voice, just quieter.

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
Typographic scale
H1Sample heading48px
H2Sample heading36px
H3Sample heading28px
H4Sample heading22px
H5Sample heading18px
H6Sample heading16px

Body paragraph at 17px with 1.6 line-height. This is where the bulk of reading happens; make sure it sits comfortably below every heading level in the scale.

Google Fonts <link>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
CSS
body {
  font-family: "Inter", sans-serif;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "Playfair Display", serif;
}
@font-face (self-host)
/* Self-host — download from fonts.google.com/specimen/Playfair-Display and fonts.google.com/specimen/Inter */
@font-face {
  font-family: "Playfair Display";
  src: url("/fonts/playfair-display.woff2") format("woff2");
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("/fonts/inter.woff2") format("woff2");
  font-display: swap;
}
body {
  font-family: "Inter", sans-serif;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "Playfair Display", serif;
}