Google Fonts Pair Finder

Pick a heading face and a body face from 38 Google Fonts, set the size and type scale, and read the pair in a live article before you commit. The code panel writes a link tag with only the weights your page uses, so the request never breaks on a missing weight.

Heading
Body
Sizing

Starting pairs

Loading fonts

Heading / Body

Sphinx of black quartz, judge my vow

Pack my box with five dozen liquor jugs. The five boxing wizards jump quickly, while 0123456789 sit beside them so you check the figures too.

Second-level heading

Paste your own copy in the box below to replace this text. The first line becomes the headline and every line after it becomes a paragraph.

Subscribe New 12 min read Bold 700 italic
Aa Gg Rr
Aa Gg Rr
Classic contrast

How the pair check reads a combination

Every font in the picker carries a class: serif, slab, sans, display or mono. The note under the preview compares the two classes and the heading weight you set. These are the rules behind each verdict.

HeadingBodyVerdictReason
Serif or slabSansStrongStroke contrast splits the two levels at a glance.
SansSerifStrong for long readsSerif body text holds the line on sharp screens. Keep paragraphs at 17px or larger.
DisplaySans or serifStrong, headings onlyCondensed and fat faces lose their shape under 28px.
One familySame familyFineContrast comes from weight and size alone. Set the heading at 600 or heavier.
SansA second sansRiskyTwo near-identical shapes look like a mistake. Push the weight gap to 300 or more.
AnyMonoNicheFits docs and changelogs. Long prose in mono reads slow.
AnyDisplayAvoidDisplay faces tire the eye after two lines of text.

Treat the verdict as a rule of thumb, not taste. Fraunces over Lora breaks the serif on serif rule and still looks right on a wine list or a menu. When the label and the preview disagree, trust the preview.

Eight starting pairs and where each one fits

The chips in the tool load these pairs with a matching heading weight. Each pair suits a different kind of page.

Playfair Display 700 with Source Sans 3
Magazine features and recipe blogs. Playfair hairlines need 32px or more, so keep the face off buttons and labels.
Fraunces 600 with Inter
Product blogs and changelogs. Fraunces brings soft, chunky serifs. Inter carries dense interface text down to 13px.
DM Serif Display 400 with DM Sans
Portfolios and studio sites. One team drew both, so cap heights line up. DM Serif Display ships a single weight.
Oswald 600 with Lato
Scores, event listings, dashboards. Condensed capitals fit long headlines into narrow cards without wrapping.
Montserrat 700 with Merriweather
Long guides and documentation. An inverted pair. Merriweather was drawn for screens, with a tall x-height for small sizes.
Roboto Slab 700 with Roboto
Admin panels and Android apps. Same skeleton, slab serifs added on top. Contrast comes from the serifs, not the shapes.
Bebas Neue 400 with Karla
Posters and event landing pages. Bebas Neue has capitals only. Lowercase input renders in caps too.
Libre Baskerville 700 with Lato
Law firms, bookshops, print-style sites. Baskerville runs wide. Set headings one step smaller than with a narrow serif.

What the code panel writes, line by line

With the default pair, the Link tag tab produces three lines for your page head:

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&family=Source+Sans+3:wght@400;700&display=swap" rel="stylesheet">

The CSS rules tab sets two custom properties, --font-heading and --font-body, each with a fallback stack matched to the font class. Headings get sizes from the type scale in rem, so a user who raises the browser font size still gets the right ratios.

Limits worth knowing before you ship

Google Fonts pairing questions

Weights, licenses, hosting and the errors people hit most.

Why does my Google Fonts link return a 400 error?

Two causes cover almost every case. The URL asks for a weight the family does not ship, such as 300 for Playfair Display, or the weights sit out of order, such as 700;400. Both break the whole request, not only one family. Links from this page avoid both.

How many font weights should a page load?

Three covers most sites: one heading weight, body regular and body bold. Each static weight is a separate WOFF2 file, often 15 to 30 KB for the Latin subset. Ten weights across two families adds a quarter of a megabyte before any image loads.

Are Google Fonts free for commercial use?

Yes. Every family on Google Fonts ships under an open license, mostly the SIL Open Font License. Websites, apps, logos and print are all covered. The one restriction under OFL is selling the font files on their own.

Should I self-host Google Fonts instead of linking them?

For EU visitors, yes, because of the GDPR rulings on IP transfer. Self-hosting also removes a third-party connection. Browsers stopped sharing font caches between sites years ago, so the old speed argument for Google hosting no longer holds.

Is one font for headings and body text enough?

Often. Inter, Source Sans 3 or Roboto at 400 for text and 700 for headings gives clean, quiet pages. Choose a second family when headings need a different voice from the body, such as a serif for editorial content.

Does my text leave the browser?

No. The preview renders your copy on this page. The only outside requests go to Google Fonts for the font files themselves, and those carry the font names, not your text.