Skip to main content
L
Loopaloo
Buy Us a Coffee
All ToolsImage ProcessingAudio ProcessingVideo ProcessingDocument & TextPDF ToolsCSV & Data AnalysisConverters & EncodersWeb ToolsMath & ScienceGames
Guides & BlogAboutContact
Buy Us a Coffee
L
Loopaloo

Free online tools for developers, designers, and content creators. Your files are processed in your browser and are never uploaded - no accounts required. A few network utilities (like What's My IP and Currency Converter) call public APIs to do their job and say so on their pages.

support@loopaloo.com

Tool Categories

  • Image Tools
  • Audio Tools
  • Video Tools
  • Document & Text
  • PDF Tools
  • CSV & Data
  • Converters
  • Web Tools
  • Math & Science
  • Games

Company

  • About Us
  • Contact
  • Blog
  • FAQ

Legal

  • Privacy Policy
  • Terms of Service
  • Disclaimer

Support

Buy Us a Coffee

© 2026 Loopaloo. All rights reserved. Built with privacy in mind.

Privacy|Terms|Disclaimer
  1. Home
  2. Web Tools
  3. Font Pairing Suggester
Add to favorites

Font Pairing Suggester

25 curated Google Fonts pairings with the measurable parts measured: x-height and cap-height read off the loaded faces, weight menus offering only what each family publishes, and one link carrying exactly the weights the CSS uses

Runs locally in your browserMore web toolsJump to full guide

Initializing in your browser…

You might also like

CSS Flexbox & Grid Playground

Visual layout builder for CSS Flexbox and Grid where the generated CSS is the same declaration list the preview applies, checked to the pixel: twelve presets, the track list read against the CSS Grid grammar, and anything the browser will drop named

Font Converter

Repackage a font between the bare TTF/OTF container, WOFF and WOFF2, with the result read back and checked before it is offered, plus a live preview and a correct @font-face rule

CSS Gradient Generator

Build a CSS gradient and choose the colour space it is interpolated in, with the colour it keeps through the middle measured and shown.

Font Pairing Suggester: a worked example

You picked Playfair Display for headings but everything you try for body text either clashes or looks flat.

Heading font chosen

Playfair Display (high-contrast serif)
What Font Pairing Suggester produces

Suggested pairing

Body: Source Sans 3
Why: a clean humanist sans balances Playfair's dramatic
     thick/thin strokes without competing for attention.
Google Fonts import + live specimen included.

Good pairings usually combine contrast in category (a display serif with a neutral sans) but harmony in proportion and era. The tool proposes vetted matches and renders a real specimen with both fonts so you judge the actual pairing, not font names, then gives you the import line to use it.

About the Font Pairing Suggester

A curated set of Google Fonts pairings, with the parts that can be measured measured: the x-height ratio of the loaded faces, the weights each family really publishes, and a link that carries exactly the weights your CSS uses.

Key features

  • 25 curated heading and body pairings, with the pairing judgement stated as taste rather than method
  • x-height and cap-height measured off the loaded faces, and the ratio between them
  • Weight selects offering exactly what each family publishes, checked against the Google Fonts API
  • One link carrying every weight the CSS actually uses, so no weight is faked by the browser
  • Every family on the page really loaded, rather than the browse list showing fallbacks
  • CSS, HTML link tags, Tailwind, SCSS and styled-components output
  • Live preview across five templates, three widths and both themes, with your own text

How to use

  1. 1Browse the pairings, or filter by mood or search for a family.
  2. 2Click one to preview it. Every family in the list is really loaded, so what you see is the face.
  3. 3Read the panel of notes: it separates what was measured from what is convention.
  4. 4Open Advanced to set sizes and weights. The weight menus offer only what each family publishes.
  5. 5Copy the CSS, the link tags, the Tailwind config, the SCSS or the styled-components snippet.

How it works

The central claim of a font pairing tool is not measurable, and this page says so rather than dressing taste up as method. There is no standard for whether two faces go together, no conformance suite and no second implementation that could disagree, so the 25 pairings here are a curated list and nothing on the page is evidence for any of them. What IS measurable is everything around that claim, and all of it has a decider.

Under the preview is a panel of notes, each marked as a measurement or as a convention. The measurements are read off the faces the browser has actually loaded: the x-height and cap height as fractions of the em, taken from the drawn glyph bounds of `x` and `H`, and the ratio between the two faces, which is the one typographic number that decides whether a heading and a paragraph look like the same size. The conventions, such as pairing a serif with a sans-serif, are labelled as conventions.

The rest is against the Google Fonts CSS API, which answers for itself: a family it does not serve is a 400, and so is a weight a family does not publish. All 46 families the tool names are real, which was already true and is now checked family by family. Two things were not. **Every family was offered the same seven heading weights and five body weights**, so Bebas Neue, which publishes 400 and nothing else, was offered six it does not have: 26 of the 46 families were offered at least one unpublished weight, 77 combinations in all. The selects now offer exactly what each family publishes and say what that is. And **the weight you chose never reached the link**: the tag asked for the pair's own weight while the CSS variables carried the select's, so 16 of 16 choices produced CSS asking for a weight the accompanying link never loaded, which a browser then fakes by smearing the outlines. Both weights go into one URL now.

One more, measured on the page itself. **Only the selected pair had a link**, so of eight families named on screen six rendered identically to the fallback: the browse list of pairings was largely a list of the same two fallback faces. Every family the list will draw is now loaded in one request, and the driver checks it by measuring a string against the fallback rather than by asking `document.fonts.check`, which is true for every family when the stack contains a generic.

Practical scenarios

  • Blog and editorial design

    Pick a readable body font paired with a distinctive heading font for content-heavy sites.

  • Landing page typography

    Find a bold display font that pairs naturally with a clean body font for marketing pages.

  • Presentation slides

    Choose fonts that project well together at both headline and bullet-point sizes.

  • Brand exploration

    Rapidly iterate on typographic direction by previewing dozens of pairings with your actual content.

Frequently asked questions

How many fonts should I use on a website?

Two is the usual answer, one for headings and one for body, and three is about the practical maximum. That is a convention rather than a measurement, and this page labels it as one.

Do font pairings affect page load speed?

Yes, and the weights matter more than the families. Each weight of each family is a separate file, so a link asking for nine weights downloads nine files. The URL this tool writes asks for exactly the weights the CSS uses and no others.

What makes a good pairing?

Nothing that can be checked. There is no standard and no reference implementation, so any tool claiming to apply rules is applying somebody's taste. What can be measured is the x-height ratio, which is shown here: two faces whose x-heights differ by much look mismatched at the same size whatever else is true of them.

Why can I not set every font to 900?

Because most families do not publish it. Bebas Neue publishes 400 and nothing else; Oswald stops at 700. A browser asked for a weight a family does not have synthesises it by smearing the outlines, which is exactly what a typography tool should stop you doing, so the menu offers only what exists and says what that is.

Should I use the @import or the link tag?

The link tag, with the two preconnects, which is what the HTML export gives you. An @import inside a stylesheet is only discovered after that stylesheet has downloaded and parsed, so the font request starts later.

Private by design

This runs as client-side JavaScript. Keys, tokens, payloads, and other inputs never leave your device.