Fonts load from Google only after you agree · nothing you type is sent
Font Pairing Tool
Try heading and body font combinations from Google Fonts on a realistic sample, tune size, weight, line height and spacing, then copy link tags and CSS that load only what you chose.
Edit the sample text
What you type stays in this page — it isn't sent to Google or anywhere else.
Why it works: High-contrast display serif over a neutral humanist sans.
How the export works
- Each family becomes one
family=parameter of the Google Fonts css2 URL, with spaces written as+. - Weights are listed after
:wght@in ascending order, separated by semicolons. With italics, each style is anital,wghtpair such as1,400, uprights first. - If the heading and body use the same family, their weights are merged into one parameter. Single-style families are requested by name alone.
display=swapis added so text is never invisible while fonts load, and every font-family rule ends with system fallbacks for its style (serif, sans-serif, monospace or cursive).
URL format from Google's CSS API v2 documentation; family names and weights from Google Fonts' public family metadata. Checked 7 October 2026.
Worked example
Playfair Display 700 for headings and Source Sans 3 400 for body text, plus bold for emphasis, gives:
<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">
That URL asks for three font styles — Playfair+Display:wght@700 and Source+Sans+3:wght@400;700 — and nothing else.
All 39 curated pairings
The weights are starting points — every family listed here offers the weight shown. The full list of 150 families covers 89 sans serif, 31 serif, 12 display, 9 handwriting, 9 monospace fonts.
Classic serif + sans
| Heading | Body | Styles |
|---|---|---|
| Playfair Display 700 | Source Sans 3 400 | 12 / 16 |
| Merriweather 700 | Open Sans 400 | 14 / 12 |
| Lora 600 | Roboto 400 | 8 / 18 |
| Libre Baskerville 700 | Source Sans 3 400 | 8 / 16 |
| EB Garamond 600 | Lato 400 | 10 / 10 |
| Cormorant Garamond 600 | Work Sans 400 | 10 / 18 |
| Crimson Pro 600 | Montserrat 400 | 16 / 18 |
| PT Serif 700 | PT Sans 400 | 4 / 4 |
| Spectral 600 | Karla 400 | 14 / 14 |
Modern sans
| Heading | Body | Styles |
|---|---|---|
| Poppins 600 | Inter 400 | 18 / 18 |
| Montserrat 700 | Hind 400 | 18 / 5 |
| Raleway 700 | Open Sans 400 | 18 / 12 |
| Oswald 600 | Source Sans 3 400 | 6 / 16 |
| Manrope 700 | Inter 400 | 7 / 18 |
| Space Grotesk 700 | Inter 400 | 5 / 18 |
| Plus Jakarta Sans 700 | Inter 400 | 14 / 18 |
| Sora 600 | Inter 400 | 8 / 18 |
| Archivo 700 | Libre Franklin 400 | 18 / 18 |
Editorial
| Heading | Body | Styles |
|---|---|---|
| DM Serif Display 400 | DM Sans 400 | 2 / 20 |
| Fraunces 600 | Inter 400 | 18 / 18 |
| Montserrat 700 | Merriweather 400 | 18 / 14 |
| Playfair Display 700 | Lato 400 | 12 / 10 |
| Abril Fatface 400 | Lato 400 | 1 / 10 |
| Bodoni Moda 600 | Jost 400 | 12 / 18 |
| Source Serif 4 600 | Source Sans 3 400 | 16 / 16 |
| Prata 400 | Lato 400 | 1 / 10 |
Friendly
| Heading | Body | Styles |
|---|---|---|
| Fredoka 600 | Nunito 400 | 5 / 18 |
| Baloo 2 700 | Nunito Sans 400 | 5 / 18 |
| Rubik 600 | Open Sans 400 | 14 / 12 |
| Quicksand 700 | Mulish 400 | 5 / 18 |
| Pacifico 400 | Nunito 400 | 1 / 18 |
| Varela Round 400 | Open Sans 400 | 1 / 12 |
Technical / mono
| Heading | Body | Styles |
|---|---|---|
| JetBrains Mono 700 | Inter 400 | 16 / 18 |
| IBM Plex Sans 600 | IBM Plex Mono 400 | 14 / 14 |
| Space Mono 700 | Roboto 400 | 4 / 18 |
| Roboto 700 | Roboto Mono 400 | 18 / 14 |
| Fira Sans 600 | Fira Code 400 | 18 / 5 |
| Source Sans 3 600 | Source Code Pro 400 | 16 / 16 |
| Chivo 700 | Chivo Mono 400 | 18 / 18 |
“Styles” is the number of weights plus italics each family offers (heading / body). Font previews on this page are loaded from Google Fonts only for the pairing on screen; the tables above are plain text.
Frequently asked questions
What are good Google Font pairings?+
Pairings that contrast in style but match in proportions — a serif heading with a sans-serif body, or two sans-serifs with clearly different personalities. Well-known examples include Playfair Display with Source Sans 3, Merriweather with Open Sans, Lora with Roboto, and superfamilies designed to work together such as PT Serif with PT Sans or IBM Plex Sans with IBM Plex Mono. This tool has 39 curated pairings in five styles, plus 150 families to combine yourself.
How do I add Google Fonts to my website?+
Copy the tags into your page's
: two preconnect hints and one stylesheet link to fonts.googleapis.com/css2 listing only your families and weights. Then copy the font-family CSS (or the Tailwind v4 @theme block) so your headings and body text use them. The @import line is an alternative to the link tags if you can only edit CSS.What does display=swap do?+
It sets font-display: swap for the downloaded fonts, so the browser shows your text straight away in a fallback font and swaps in the web font when it arrives, instead of hiding the text while it loads. That's why the exported font-family rules include a fallback stack after each font name.
What does Google receive when fonts load from Google Fonts?+
The visitor's browser downloads the CSS and font files from fonts.googleapis.com and fonts.gstatic.com, so Google receives the visitor's IP address and the request's HTTP headers — including the user agent (browser and operating system) and usually the referring page. Google's Google Fonts FAQ says the API doesn't set cookies and that the data isn't used to build profiles or for targeted ads. This tool asks first: nothing is requested from Google until you press “Load font previews”, then only the families you preview are requested, and nothing you type is sent. The link tags you export have the same effect for your own site's visitors.
Is using Google Fonts GDPR-compliant?+
It depends on how you use it, and this isn't legal advice. In January 2022 the Munich Regional Court (LG München I, 3 O 17493/20) found that a site which loaded Google Fonts from Google's servers without consent had unlawfully passed a visitor's IP address to Google. The privacy-friendly alternative is to self-host: download the font files from the family's page on fonts.google.com or install them from Fontsource (for example npm install @fontsource-variable/inter), serve them from your own domain with @font-face, and keep the same font-family CSS.
How many fonts and weights should I load?+
As few as you use. Two families is plenty for most sites, and each extra weight or italic can mean another file to download. A common set is one heading weight, a regular body weight and a bold for emphasis — which is what the export requests by default. Tick italics only if your content uses them.
Can I use these fonts commercially?+
The families in this tool are all open-source fonts from Google Fonts — most under the SIL Open Font License, some under the Apache License — which allow commercial use, embedding and self-hosting. Check the license shown on each family's Google Fonts page if you plan to modify or redistribute the font files themselves.