My favorite typefaces for interfaces
- Typography
- Design
Choosing type for an interface is mostly about deciding what you want the product to sound like. A typeface is a voice before it’s a style. These are the voices I reach for most often.
Geist
Geist has become my default for anything that wants to feel modern without shouting. The proportions are neutral, the spacing is generous, and the variable weight axis makes it easy to build a hierarchy without adding another family.
What I like most is how it handles small sizes. Captions stay legible without feeling like a different typeface from the headings. That consistency is worth a lot when you’re designing systems rather than pages.
Inter
Inter is the typeface I recommend when someone wants zero surprises. It’s been optimised for screens from the beginning, the character set is enormous, and it behaves predictably at every size.
The trade-off is familiarity. Inter is everywhere, so it rarely carries a strong point of view. Sometimes that’s exactly right. An interface that stays out of the way is doing its job.
IBM Plex Mono
For code, metadata, and anything that benefits from a mechanical rhythm, Plex Mono is hard to beat. It has personality — a little quirky, a little technical — without becoming a costume.
I use it for timestamps, counters, and the occasional label. Set it small and quiet, and it makes a layout feel measured.
Söhne
Söhne is the typeface I’d pick if I could only pick one for an editorial interface. It has warmth and authority at the same time, and the spacing is beautifully judged. Headlines feel written rather than rendered.
It isn’t free, which is part of why it still feels distinct. But when a project justifies it, the difference is immediate.
A note on pairing
Most of the time, one family with a wide weight range will take you further than two families that need to be balanced. Add a mono for the mechanical bits, and you’re done.