Roboto Mono + Roboto

Grumpy wizards make toxic brew

A standfirst set in Roboto, one size up — where a pairing starts earning trust.

The five boxing wizards jump quickly over the lazy dog, mixing jugs of quiet vodka while the jury watches. Click anywhere in this preview and type your own text to try the pairing.

“Type is a beautiful group of letters, not a group of beautiful letters.”

— Matthew Carter

Fig. 1 — Roboto Mono over Roboto, in the wild.

Roboto Mono 700 / Roboto 400 — click any section and type your own copy.

Why it works

The monospace-headline trick executed inside a single family: Roboto Mono's fixed-pitch rhythm signals code and terminals instantly, while Roboto supplies the proportional body text that monospace can't sustain over paragraphs. Because both faces share Christian Robertson's letterforms, the switch between them feels like a register change, not a font change. Ideal for developer tools and API documentation where JetBrains Mono feels too stylised.

More about each face: Roboto Mono · Roboto

Use this pairing

HTML — Google Fonts embed
<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=Roboto+Mono:wght@700&family=Roboto:wght@400;700&display=swap" rel="stylesheet">
CSS
h1, h2, h3 {
  font-family: 'Roboto Mono', 'Courier New', Courier, monospace;
  font-weight: 700;
}

body {
  font-family: 'Roboto', Helvetica, Arial, sans-serif;
  font-weight: 400;
}
Next.js — next/font
import { Roboto_Mono, Roboto } from "next/font/google";

const heading = Roboto_Mono({
  subsets: ["latin"],
  weight: "700",
  variable: "--font-heading",
});

const body = Roboto({
  subsets: ["latin"],
  weight: "400",
  variable: "--font-body",
});

Related pairings