Geist has grown from a monospace face for editors and terminals into Geist Sans for product interfaces and Geist Pixel, which drew on the grids of early computer screens. The newest family member is Geist Serif, a high-contrast display serif built on the same foundations as the other three.
Its serifs are fine and saw-toothed, its hairlines sharp. It was drawn for headlines that must land forcefully, whether printed in the physical world or set on the high-density displays of current devices.
A second voice inside the system
Geist Sans carries the product at Vercel, but headlines called for something else: a second voice belonging to the same system rather than a stranger from a font drop-down. Many tech brands have traded clean sans-serifs for personality borrowed from vintage computer ads. Geist Serif takes another direction — fashion, editorial design, magazine headlines — as an homage to the artists behind Rolling Stone and Harper's Bazaar. Each Geist family reads from a chapter of type history: the Swiss design movement, early terminal and DOS computing, and now editorial print.
Drawings, then a display face
The face began as sketches by Evil Rabbit, expanded by Andrés Briganti; the first letters already showed an expressive serif in the spirit of typefaces like Victor Serif and Stanley. When Mark Davis took over the drawings, the decision was to ship a display face for headlines, posters and other large sizes first, and continue the full family in parallel. Fine hairlines and sharp serifs have always been hard for print to hold, but modern displays tolerate a high level of detail. Every downstroke was thinned by 50% and sidebearings tightened, pushing contrast as far as it would go. Each serif carries a wedge on one side and a curve on the other: classical proportions that look right in print, with a new construction tuned for digital devices.
"We created something that could only be made for today. Not overly blocky for screens from a decade ago, not filled with mechanical compromises for physical ink. Just serifs at perfect points."
Mark Davis, founder & font designer at WORDMARK
The first prototype was shared on April 1, 2026. Comparing that prototype's rendering of the word "Geist" with the display drawing shipping today shows how far the shapes traveled.
Geist grew teeth
Even with letters overlapping, the serif had to stay tied to the sans. Geist Serif's stems match Geist Sans, and the two share widths and postures. The saw-toothed serifs and high contrast supply the editorial voice; one phrase recurred as each character was drawn: "Geist grew teeth." Cap height and x-height are identical to Geist Sans as well, so the serif drops into any Geist layout without moving a line. Mix Sans, Mono, Pixel and Serif in one sentence and every word still reads at the same size.
The Element Shape axis
As with Geist Pixel, a variable axis changes the shape of every dot in the font — those on i and j included, plus punctuation. The axis is called Element Shape (ELSH) and offers four variants: Regular with round dots (the default), Square, Triangle (a nod to the Vercel logo) and Heart. Each also ships as a static file; with the variable font, select a variant through font-variation-settings.
Counts and details
In July the font had 227 glyphs; it now has 894 and covers 352 Latin-script languages, with more than 52,000 kerning pairs worked through for correct spacing. Some details are tiny — the eye of the g, for instance, tilts exactly 7°.
Geist Serif ships with:
- 1 weight (Regular)
- 4 variants (Regular, Square, Triangle, Heart)
- 894 glyphs
- 5 stylistic sets (
ss01toss05) - 352 supported languages
Using it
Geist Serif ships in the same package as the rest of the family:
Metric | Geist Sans | Geist Serif |
|---|---|---|
UPM | 1000 | 1000 |
Cap height | 710 | 710 |
x-height | 530 | 530 |
Ascender | 710 | 750 |
Descender | -150 | -200 |
Exports and their CSS variables:
GeistSerif(variable, all shapes):--font-geist-serifGeistSerifRegular:--font-geist-serif-regularGeistSerifSquare:--font-geist-serif-squareGeistSerifTriangle:--font-geist-serif-triangleGeistSerifHeart:--font-geist-serif-heart
Every export has its own entry point, so only the font file you use gets shipped. In layout.tsx, for example, with GeistSerifRegular:
npm i geist
The font files can be downloaded, and every stylistic set and glyph inspected, at vercel.com/font.
Where the family goes next
Regular is the first style out; the rest of the family is already in progress, tested while this release was built.
Weights from Thin to Black
The variable font will range from Thin (100) to Black (900). In this week's proofs, the g in Black is the letter the team can't stop looking at.
Toward a text face
A foundry tool built to explore a text version measures strokes, including where they meet, and thickens the display outlines. It edits outlines directly, so real words can be set to see which strokes need more weight.
Italics, built rule by rule
An italic is being generated entirely in Python. Existing italics were slanted back upright and compared with their romans; with the angle removed, the remaining differences stand out, and those observations became rules that can be tested and revised. This italic won't be the final version, but breaking glyphs in code finds the limits faster.
More scripts, and Google Fonts
Cyrillic support is planned to match Geist Sans and Geist Mono, and Geist Serif will arrive on Google Fonts after launch.
With Geist Sans, Geist Mono, Geist Pixel and now Geist Serif, one family spans UI text, code and expressive display type, and all four feel at home together.

Mark Davis, founder & font designer at WORDMARK

