Skip to content

Typography

Our type system ensures clarity and hierarchy. We use Hanken Grotesk for headings, Inter for body, and JetBrains Mono for code and data — following patterns from Stripe, Linear, and Vercel.

RoleFontClassificationBest for
Display / HeadingsHanken GroteskGeometric groteskH1–H4, hero text
Body / UIInterNeo-groteskParagraphs, labels
Code / DataJetBrains MonoMonospaceCode blocks, tokens
Font sizes
LevelSizeWeightLine Height
Display / Hero48–72pxBold 7001.1
H136–48pxBold 7001.2
H224–30pxSemibold 6001.3
H318–24pxSemibold 6001.4
Body16pxRegular 4001.5
Body Small14pxRegular 4001.5
Caption12pxMedium 5001.4
Code14pxRegular 4001.6
Weight scale
WeightValueUsage
Regular400Body text
Medium500Emphasis, links
Semibold600Subheadings, card titles
Bold700Headings, hero text
Line heights
ContextValueNotes
Display1.1Hero, large headings
Heading1.25H1–H3
Body1.5Optimal at 16px
Code1.6Monospace readability

Linear uses Inter as its sole typeface, with hierarchy through weight and size alone. Inter’s tall x-height and distinct letterforms make it ideal for UI.

Stripe pairs a distinctive heading font with readable body font. We follow this with Hanken Grotesk + Inter.

Apple names styles by purpose (“Title 1”, “Body”, “Caption”) not raw size — making the system self-documenting.

Helsinki supports Finnish, Swedish, English with generous line heights (1.5 body, 1.6 small) for cross-alphabet readability.


  • Headings: Hanken Grotesk, sentence case, letter-spacing: -0.02em
  • Body: Inter, 16px minimum, 1.5 line height, 60–80 chars per line
  • Code/Data: JetBrains Mono, 14px, 1.6 line height
  • One H1 per page, nested headings in order