Bitter + Karla

Grumpy wizards make toxic brew

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.

Bitter 700 / Karla 400 — click the text to edit

Why it works

Bitter is a slab serif designed for screens — sturdy rectangular serifs, minimal contrast, a large x-height — so bold headings feel warm and grounded rather than bookish. Karla brings a complementary looseness: its grotesque forms carry small irregularities in spacing and terminals that read as handmade charm at text sizes. Slab-plus-quirky-sans is a classic blog recipe because both faces are low-contrast and even in color, keeping the page cohesive while the serifs supply the personality.

More about each face: Bitter · Karla

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=Bitter:wght@700&family=Karla:wght@400;600&display=swap" rel="stylesheet">
CSS
h1, h2, h3 {
  font-family: 'Bitter', Georgia, 'Times New Roman', serif;
  font-weight: 700;
}

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

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

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

Related pairings