Let's work together

Font Pairing Preview

Type a heading font and a body font from Google Fonts' full catalog (1,942 families), hit Generate, and both load live and render across three mockups below so you can judge a pairing on a real layout, not a specimen block. The pairing lives in the URL, so you can copy the address bar to share exactly what you're looking at.

Landing page

Portfolio preview

Building software that ships, scales, and earns its keep.

A preview of how your heading and body fonts read together across a real layout, not just a type specimen. Scroll down to see the same pairing on a blog list and a single post.

Get in touch See the work →

Blog overview

JUL 2026 · 6 MIN READ

The Weight of a Good Default

Most of the decisions that matter in a product happen before anyone opens a settings panel. A short argument for spending more time on the defaults you ship.

JUN 2026 · 9 MIN READ

Why Boring Infrastructure Wins

The systems that stay up are rarely the interesting ones to talk about. Notes on choosing dependability over novelty when it counts.

MAY 2026 · 4 MIN READ

Shipping Small Tools on the Side

A running list of the tiny browser tools I build for myself, why they stay tiny on purpose, and when a side project earns a real page.

Single post

Reading a Font Pairing on a Real Page

A type specimen tells you how a font looks in isolation. It does not tell you how it reads at three sentences a paragraph, next to a headline two sizes up, on a background that might be light or dark depending on who is looking at it. That gap is the whole reason this tool exists.

Where pairings actually fall apart

Most bad pairings are not ugly on their own, they are ambiguous together. A heading font with too much personality can fight a body font that was designed to disappear, and the reader ends up noticing the type instead of reading the sentence.

The fix is rarely a smarter font. It is usually just seeing the pairing somewhere that looks like the page it will actually live on.