Design System Analysis of Vercel

Vercel's Geist system is an exercise in subtraction: near-black ink on a near-white sheet, where a single tone carries every heading, CTA, and 1px border, and the only color allowed is a multi-stop mesh gradient confined to the hero. Geist Sans drives tightly-tracked display type, Geist Mono labels the technical eyebrows, and black pill buttons mark the marketing CTAs.

01 — Foundations

Color Palette

Ink

#171717

Primary text, CTA fill, logo, borders' darkest tone.

Body

#4d4d4d

Standard paragraph & secondary copy, nav links.

Mute

#8f8f8f

Lower-emphasis captions, logo-strip labels.

Hairline

#ebebeb

The 1px border on every card, input, divider.

Canvas

#fafafa

Near-white page background.

Elevated

#ffffff

Pure white for cards, buttons, inputs.

Vercel Blue

#0070f3

Links, focus, pricing highlights.

Violet

#7928ca

Gradient stop / illustration accent.

Cyan

#50e3c2

Gradient stop / illustration accent.

Pink

#ff0080

Gradient stop / illustration accent.

Error

#ee0000

Validation / destructive.

Warning

#f5a623

Caution states.

02 — Foundations

Typography

Geist Sans for UI and tightly-tracked display type, Geist Mono for code and uppercase section eyebrows (Inter shown as substitute). Hierarchy is built from size + negative tracking; weight is binary — 600 headings, 500 buttons, 400 body.

display-xl
48px · 600 · lh 48px · ls -2.4px
Build and deploy on the AI Cloud.
heading-lg
32px · 600 · lh 40px · ls -1.28px
Your app, delivered.
heading-md
20px · 600 · lh 28px · ls -0.4px
Composable Commerce
label-sm
14px · 500 · lh 20px · ls -0.28px
Frameworks
mono-eyebrow
12px · 500 · lh 16px · ls 0
DEPLOY · PREVIEW · SHIP
body-lg
16px · 400 · lh 24px · ls 0
Deploy your first app in seconds with zero configuration.
body-md
14px · 400 · lh 20px · ls 0
Vercel provides the developer tools and cloud infrastructure to build, scale, and secure a faster, more personalized web.
body-sm
12px · 400 · lh 16px · ls 0
Trusted by the best frontend teams.
code
14px · 400 · lh 20px · ls 0
vercel deploy --prod
03 — Components

Button Variants

button-primary · black pill, 100px

The signature marketing CTA — fully-rounded ink pill, white label.

button-secondary · white pill

Inverted pill — white fill, ink label, hairline edge.

button-primary-sm · 6px square

The nav / app CTA — tight 6px square, not a pill.

button-category-pill · 64px

Category-tab pill.

04 — Components

Cards & Surfaces

feature-card

White surface, 1px hairline, 12px corners. The workhorse grid tile — often holding a node-graph or code illustration.

feature-card-elevated

Same chrome lifted on a finely-layered, very-low-alpha shadow — menus and featured tiles.

ink surface

The near-black ink used for the CTA band and inverted featured tiers.

05 — Components

Form Elements

text-input · 6px

White field, 1px hairline, tight 6px corners.

code-block · Geist Mono
06 — Foundations

Spacing Scale

4px base unit. Card interiors sit at lg–xl (24–32px); section bands run 4xl (96px) up to section (128px).

xxs · 4px
xs · 8px
sm · 12px
md · 16px
lg · 24px
xl · 32px
2xl · 40px
3xl · 64px
4xl · 96px
section · 128px
07 — Foundations

Border Radius

Bimodal: tight 6px squares for functional chrome (nav buttons, inputs), full pills (100px) for marketing CTAs and 64px for category tabs, with 12–16px on content cards in between.

0px
none · 0px
6px
sm · 6px
12px
md · 12px
16px
lg · 16px
64
pill-category · 64px
100
pill · 100px
full · 9999px
08 — Foundations

Elevation & Depth

Level 0 — flat, 1px hairline only. Default feature cards, inputs, dividers.
Level 2 — finely-layered, very-low-alpha shadow stack (never one heavy drop). Menus, modals, tooltips.
09 — Responsive

Responsive Behavior

NameWidthKey changes
Mobile< 768pxSingle column; nav → hamburger; CTAs + pricing tiers stack full-width
Tablet768–1023pxGrids collapse toward 2-up / 1-up; nav condenses
Laptop1024–1279pxTightened gutters; 3-col grids retained
Desktop≥ 1280pxFull multi-column grids; centred ~1200px column
375
768
1024
1280
1440

Touch targets: pill CTAs and nav buttons clear 44×44 WCAG-AAA via line-height-driven height. Collapsing: nav collapses to a menu; hairline-card grids reflow to one column; code-editor and node-graph illustrations scale or scroll; pricing tiers stack.