Skip to content

Reference · inspire

Proprietary fonts → free alternatives

inspire/references/font-alternatives.md68 linesupdated 16 Sept 2026

Never download, self-host or subset a font file from the source site. Match the tuple instead: classification, x-height/width feel, weight used, then re-tune tracking and leading with the alternative. void extract suggests alternatives per role (dna.json → typography.roles[].alternatives, map in packages/cli/src/extract/fonts.ts); this table adds tuning notes.

Licences: OFL = SIL Open Font License 1.1 (free for commercial use, embedding and self-hosting; can't sell the font alone). All OFL faces below are on next/font/google unless marked.

Sans / grotesk

Source (foundry, licence) Seen on Free alternative (licence) Tuning
Söhne (Klim, commercial) Stripe Inter Tight (OFL) for display, Inter or Geist (OFL) for text Söhne 300 display → Inter Tight 300–400; keep −0.02em; Inter cv01, ss03 for a Söhne-like 1/a
Neue Haas Grotesk / Helvetica Now (Monotype, commercial) hellohello Inter Tight (OFL) display, Inter (OFL) text; Schibsted Grotesk (OFL) for a sturdier poster feel; Arimo (Apache 2.0) metric fallback NHG Bold is wide: Inter Tight 700 needs ~−0.02em more tracking; don't copy −0.04em body tracking onto Inter
Suisse Int'l (Swiss Typefaces, commercial) Clerk Inter or Geist (OFL), Instrument Sans (OFL) Suisse 700 H1 → Geist 600 at −0.03em
GT America / GT Standard (Grilli Type, commercial) — Inter, Geist, Schibsted Grotesk, Hanken Grotesk (OFL) condensed cuts → Instrument Sans wdth 85
GT Walsheim (Grilli Type, commercial) Framer DM Sans, Figtree, Outfit (OFL) Walsheim 500 −0.04em → Figtree 600 −0.03em
Graphik (Commercial Type, commercial) — Geist, Inter, Albert Sans (OFL) —
Circular (Lineto, commercial) — Figtree, DM Sans (OFL) avoid Plus Jakarta Sans (overused)
Akkurat, Brown, Unica 77 (Lineto, commercial) — Inter, Schibsted Grotesk, Instrument Sans (OFL) —
ABC Diatype / ABC Favorit / ABC Oracle (Dinamo, commercial) Resend H2, TBC, Dia Geist, Schibsted Grotesk (OFL); Space Grotesk (OFL) for Favorit's quirk at display only Favorit −0.05em H2 → Space Grotesk −0.035em; never Space Grotesk as body
Aeonik (CoType, commercial) — Manrope, Geist, Figtree (OFL) —
PP Neue Montreal / PP Mori (Pangram Pangram, commercial; free for personal use only) — Inter Tight, Hanken Grotesk, Instrument Sans (OFL) "free for personal" is not a licence for client or company sites
Founders Grotesk (Klim, commercial) — Schibsted Grotesk, Hanken Grotesk (OFL) —
Untitled Sans (Klim, commercial) — Inter, Geist (OFL) —
Basis Grotesque, Apercu (Colophon, commercial) — Hanken Grotesk, DM Sans, Figtree (OFL) —
Proxima Nova, Gotham, Sofia Pro, Avenir/Futura (commercial) — Figtree, Outfit (OFL); Jost (OFL) for Futura geometry Montserrat is the literal match but reads as template; prefer Figtree
SF Pro / system-ui (Apple; not licensed for web embedding) many Inter (OFL); or keep system-ui as a fallback stack only —

Serif

Source Seen on Free alternative Tuning
Tiempos Headline/Text, Domaine, Financier, Untitled Serif (Klim, commercial) Linear accent, Resend H1, Attio Newsreader (OFL, opsz), Source Serif 4 (OFL, opsz); Instrument Serif (OFL) for headlines ≥ 40px Domaine 400 at 96px −0.01em → Newsreader 400 display −0.012em (editorial knob 0.35)
Canela, Ogg, Recoleta, Editorial Old, Saol, Lyon, Publico, Noe Display (commercial) — Instrument Serif, Fraunces (SOFT 50, WONK 0), Newsreader (OFL) high-contrast display: Instrument Serif; soft: Fraunces
GT Super / GT Sectra / GT Alpina (Grilli Type, commercial) — Instrument Serif (display), Newsreader, Fraunces (OFL) —
PP Editorial New (Pangram Pangram, commercial) — Instrument Serif, Cormorant Garamond, Newsreader (OFL) Cormorant only ≥ 32px
Ivar, Tobias, Signifier, Freight, Caslon, Sabon, Minion (commercial) TBC (IvarText) Newsreader, EB Garamond, Source Serif 4 (OFL) EB Garamond needs +1–2px body size

Mono

Source Seen on Free alternative Notes
Berkeley Mono (US Graphics; licence forbids editors/terminals/OSS apps) Linear Geist Mono, JetBrains Mono, Commit Mono (OFL; Commit Mono via @fontsource + next/font/local) local mono: adjustFontFallback: false
Söhne Mono, GT America Mono, Suisse Int'l Mono, ABC Diatype Mono, Aeonik Mono (commercial) TBC labels Geist Mono, IBM Plex Mono (OFL) labels at +0.1–0.15em uppercase via label-mono
ABC Favorit Mono (Dinamo, commercial) Arc, Dia Space Mono, JetBrains Mono (OFL) —
SF Mono, Operator Mono, MonoLisa, Input, PragmataPro (commercial or non-redistributable) — JetBrains Mono, Geist Mono, Commit Mono (OFL) SF Mono only as a fallback stack

Display and custom brand faces

Source Seen on Free alternative Notes
Custom brand faces (CursorGothic, Anthropic Sans/Serif, arcadia, quadrant, melange, "Family", Marlin Soft SQ, Exposure) Cursor, Anthropic, Mercury, Granola, Family, Arc, Dia match classification: Geist / Instrument Sans for grotesks, Newsreader / Instrument Serif for serifs, Fraunces for soft serifs, Figtree or Rubik (OFL) for rounded custom faces are part of trade dress: a different free face is already a departure
Mercury's variable intermediates 360/420/480 Mercury any variable OFL face (Inter, Geist, Figtree) at 420/480 intermediate weights are a premium signal worth borrowing
PP Right Grotesk / PP Neue Machina (commercial display) — Anton, Big Shoulders Display; Space Grotesk / Unbounded (OFL) poster use only

Licence traps

  • Fontshare (Satoshi, General Sans, Cabinet Grotesk, Clash Display, Switzer): ITF Free Font License, not OFL; forbids subsetting/conversion. Don't use in open-source repos or with next/font subsetting.
  • "Free for personal use" (Pangram Pangram, many foundry trials) is not a web licence for a business site.
  • Google-hosted ≠ always OFL: Roboto and Roboto Mono are Apache 2.0 (also fine).
  • Adobe Fonts / Typekit faces can't be self-hosted outside the subscription.
  • Custom brand fonts are never available; don't look for mirrors.

After choosing

  1. Add the loader with the direction's CSS variable name (craft/references/directions.md), or rename the variable in the direction file consistently.
  2. Re-tune --weight-display and --tracking-display against the source tuple, then compare H1 screenshots side by side.
  3. Budget: ≤ 2 families + mono, ≤ 4 files, ≤ 120 KB (perf/font-budget).