The documentation stack

Inter for headings · Source Serif 4 for body · JetBrains Mono for code — all three set live below.

Display · Inter 600

Details make the difference

Body · Source Serif 4 400

Good type pairing is quiet craft: a display face with character, a body face that gets out of the way, and a monospace that keeps code honest. Set them together and a page finds its rhythm — headings announce, paragraphs settle, and the details stay precise.

Mono · JetBrains Mono 400
function pair(display, body, mono) {
  return { display, body, mono }; // three roles, one system
}

Why these three

Docs live or die on scannability and long-form comfort. Inter's tall x-height and even color make headings and nav labels legible at small sizes without shouting, while Source Serif 4 slows the eye just enough for paragraphs and API prose to feel readable rather than clipped. JetBrains Mono carries the code: generous letter-spacing, a tall x-height that matches the body, and disambiguated 0/O and 1/l/I so nobody mistypes a token. Three faces, three clear jobs, one calm page.

Copy the CSS

CSS — all three roles
:root {
  --font-display: 'Inter', -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif;
  --font-body: 'Source Serif 4', Georgia, 'Times New Roman', serif;
  --font-mono: 'JetBrains Mono', 'SF Mono', Menlo, Consolas, 'Courier New', monospace;
}

h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 600;
}

body {
  font-family: var(--font-body);
  font-weight: 400;
}

code, pre, kbd {
  font-family: var(--font-mono);
  font-weight: 400;
}

Read more

More about each face: Inter · Source Serif 4 · JetBrains Mono

Choosing type for this? Fonts for SaaS products