Choosing a font

The right typeface depends on what you are building. This guide gives you a decision framework, then the practical layers underneath: categories, pairing, variable fonts, performance, accessibility, and the licensing that makes open-source type safe to ship. Every recommendation links to a font you can preview on this site.

You can browse all fonts, open your favorites, or compare candidates side by side while you read.

How to choose

Work through three questions in order. Where will it run?A 14px label on a phone in sunlight has different needs from a 60px landing headline or a printed poster. Screen work wants tall x-heights, open apertures, and hinting; display work rewards personality.

What must it cover? Count the weights you actually use (most products need 400, 500, 600, and one 700), the scripts (Latin only? Cyrillic? Arabic?), and the special cases — tabular figures for prices, a mono sibling for code samples. A family that covers everything you need beats a prettier one that doesn't.

What should it feel like? This is the brand question. Neutral (Inter), technical (Space Grotesk), editorial (Fraunces), warm (Manrope). Write three adjectives for your product, then audition fonts against them with your own copy — never with the specimen paragraph.

By use case

SaaS applications

Primary
Inter, Poppins, Roboto
Secondary
Lato, IBM Plex Sans
Why
Neutral, open shapes stay readable at small interface sizes.

Tech startups

Primary
Inter, JetBrains Mono, Fira Code
Secondary
Space Grotesk, IBM Plex Sans
Why
Geometric and monospace faces give product UI a technical character.

Corporate business

Primary
Roboto, Lato, IBM Plex Sans
Secondary
Source Sans Pro, Libre Franklin
Why
Established humanist families work across print and screen.

Blogs and content

Primary
Merriweather, Lora, Playfair Display
Secondary
Crimson Text, IBM Plex Serif
Why
Serifs with generous x-heights keep long articles comfortable.

Mobile apps

Primary
Inter, Roboto, Poppins
Secondary
Ubuntu, IBM Plex Sans
Why
Compact apertures and tall x-heights survive small screens.

Code and technical

Primary
Fira Code, JetBrains Mono, Source Code Pro
Secondary
IBM Plex Mono, Inconsolata
Why
Fixed-width columns keep code and indentation aligned.

Editorial and culture

Primary
Fraunces, Newsreader, Instrument Serif
Secondary
Bricolage Grotesque, Clash Display
Why
Opinionated display faces carry a voice; quiet text faces carry the words.

E-commerce

Primary
Archivo, Outfit, Inter
Secondary
Manrope, Figtree
Why
Compact, neutral sans with clear tabular figures for prices and quantities.

Font categories

Sans-serif

Letters without finishing strokes. Suited to interfaces, dashboards, and applications where clarity at small sizes matters.

InterPoppinsRobotoIBM Plex Sans

Serif

Letters with finishing strokes. Suited to long-form reading, editorial layouts, and traditional brands.

MerriweatherPlayfair DisplayIBM Plex SerifLora

Monospace

Fixed-width letters. Built for code, terminal output, and technical documentation.

Fira CodeJetBrains MonoSource Code ProIBM Plex Mono

Display

Faces designed for large sizes: posters, headlines, landing-page hero text. Detail that sings at 48px+ turns to noise in body copy — pair them with a quiet text face.

Clash DisplayBricolage GrotesqueSatoshi

Handwriting

Script and hand-drawn forms. Powerful for accents, signatures, and warmth; keep them away from anything a user must read quickly or enter.

CaveatDM Serif DisplayPlayfair Display

Pairing

Two families are usually enough; three is the practical maximum. The reliable recipe is contrast in exactly one dimension: a serif for reading with a sans for interface, or a loud display face for headlines with a neutral text face underneath. Faces that differ in every dimension fight; faces that differ in none blend into mush.

Build hierarchy with weight and size before you reach for another family — a single variable family at 400/500/700 covers most products. When you do pair, match the x-heights (mismatched x-heights read as a mistake at every size) and test on real devices, not scaled-down desktop screenshots.

The pairings page lists curated heading-plus-body combinations from the catalog, and every font's page shows its similar and alternative families.

Variable fonts and weights

A variable font is one file that spans an axis — usually weight (100–900), sometimes width or optical size. You get every weight for roughly the download cost of two static ones, and intermediate weights (a true 550) when your scale needs them.

For interfaces, prefer families that ship a variable build or at least 400/500/600/700 statics. Weight is your strongest hierarchy tool after size; a family with one weight forces you into fake-bold territory, which renders poorly. For code, a mono family with a 400 and a 700 is usually enough.

Optical size (the opsz axis) is worth knowing: the face subtly adjusts contrast and spacing for the size it is set at. Fraunces is a good example — its display sizes are dramatically different from its text sizes, from the same file.

Loading and performance

Web fonts are a performance budget line like any other asset. Ship WOFF2, subset to the scripts you use, and set font-display: swapso text renders in the fallback immediately instead of sitting invisible.

Choose a fallback with similar metrics (x-height, width) to reduce layout shift when the web font lands, and preload only the one or two files used above the fold. Self-hosting (what the install snippets on each font page give you) removes a DNS + connection round trip versus a third-party CSS payload and makes the request count visible in your own waterfall.

Each font page on this site ships copy-ready snippets — HTML link tags, CSS@import, @font-face for self-hosting, and npm packages where the family publishes one.

Accessibility

Keep text contrast at 4.5:1 for body copy and 3:1 for large text. The typeface itself is rarely the contrast problem — thin weights on busy backgrounds are. When a font offers a 300 weight, treat it as a display luxury, not a body option.

Respect user motion and size settings: size text in relative units so browser zoom and system scaling work, and never put information in a decorative face a user must read under time pressure. Verify zero/one, capital-i/lowercase-L, and O/zero legibility in any face used for codes, identifiers, or prices — monospaces exist largely to solve this.

Finally, check script coverage against your actual audience. A beautiful Latin face with tacked-on Cyrillic glyphs can render inconsistent weight and rhythm between scripts; families designed across scripts (IBM Plex, Noto, Rubik) are the safe multilingual pick.

Licensing

Every font in this catalog is free to use, but the licenses differ in ways that matter when you embed, modify, or redistribute.

SIL Open Font License (OFL)
The most common. Use in any product, embed freely, modify for internal use. The one rule: if you redistribute a modified version, it must also be OFL and carry a different name. Reserved Font Name clauses mean you can't ship a renamed-but-identical copy.
Apache License 2.
Effectively the same freedoms for your use, with an explicit patent grant and NOTICE file requirements if you redistribute. Common for Roboto-adjacent Google families.
UFL and custom
Ubuntu Font License (Ubuntu family) and a few custom terms. Always readable, rarely restrictive for product use — but read them before bundling into an app you distribute, where "embedding" terms bite.

The practical rule: using a font in a website or app is almost always fine; redistributing the files (bundling in a desktop app, shipping in an SDK, forking the design) is where the license text earns its keep. Each font page names its license; when in doubt, the family page on Google Fonts or the foundry's site has the authoritative text.

Using Fontista

The site is built for exactly this workflow. Filter thegallery by category, weight, or source; open a font to see it set in itself with pairing suggestions and copy-ready install snippets.

Put candidates in the compare tray andview them side by side with your own sample text — the fastest way to settle a shortlist. Theplaygroundrenders any font inside realistic surfaces: blog, docs, SaaS, shop, chat, and article layouts, plus a phone mockup, so you see the face doing real work instead of posing on a specimen card.

Everything you favorite or collect is stored locally in your browser — no account, no tracking — and can be exported as a file or link and imported on another machine from thecollections page.