Skip to main content
Back to Examples

Vercel

Add this design system to use its color palette, typography, spacing & other tokens while creating your own designs.

Frontend cloud platform. Monochrome near-black on white, the signature tri-gradient system, engineered Geist type.

13
core colors
2
typefaces
27
tokens
Now playing — motion preview
01

Palette

surface
#FFFFFF
surface-secondary
#FAFAFA
on-surface
#171717
on-surface-secondary
#4D4D4D
on-surface-tertiary
#8F8F8F
hairline
#EBEBEB
inverse
#000000
on-inverse
#FFFFFF
blue
#0070F3
purple
#7C3AED
cyan
#50E3C2
warning
#F5A623
error
#EE0000
02

Typography

displayThe quick brown fox jumpsGeist, Arial, sans-serif
56px
headingThe quick brown fox jumpsGeist, Arial, sans-serif
24px
body-mdThe quick brown fox jumpsGeist, Arial, sans-serif
16px
eyebrow-monoThe quick brown fox jumps"Geist Mono", ui-monospace, monospace
12px
03

Spacing & Shape

TokenValuePreview
base4px
x28px
x312px
x416px
x624px
x832px
x1664px
x2496px
04

Border Radius

TokenValuePreview
sm6px
full9999px
05

design.md

design.mdreadable by AI agents
tokens (raw)
name: vercel-design
version: alpha
description: >
  The Geist design system: a near-white developer canvas (#fafafa) with a crisp
  HSL-stepped neutral greyscale and near-black ink (gray-1000, hsl 0 0% 9%).
  Two faces only — Geist (grotesque) for everything and Geist Mono for labels,
  eyebrows and code, set UPPERCASE. Pure-black pill buttons, sharp technical
  grid lines with plus-mark intersections, and the iconic prismatic
  yellow→white→green spectrum behind the triangle logo are the signatures.
  Color is reserved: blue for Pro/links, purple for Enterprise. Surfaces studied
  via Playwright: home (computed :root --ds/--geist tokens + elements).
colors:
  # Surface
  surface: '#FFFFFF'              # ds-background-100
  surface-secondary: '#FAFAFA'    # ds-background-200, page canvas
  # Text (greyscale, HSL 0 0% L)
  on-surface: '#171717'           # ds-gray-1000 (9% L)
  on-surface-secondary: '#4D4D4D' # ds-gray-900 (30% L)
  on-surface-tertiary: '#8F8F8F'  # ds-gray-700 (56% L)
  hairline: '#EBEBEB'             # ds-gray-200 (92% L)
  # Inverse / buttons
  inverse: '#000000'              # pure black pill buttons
  on-inverse: '#FFFFFF'
  # Accents (reserved)
  blue: '#0070F3'                 # ds-blue-700 (hsl 212 100% 48%) — Pro, links (#0072F5)
  purple: '#7C3AED'               # ds-purple-900 (hsl 274 71% 43%) — Enterprise
  cyan: '#50E3C2'                 # geist-cyan
  warning: '#F5A623'              # geist-warning
  error: '#EE0000'                # geist-error
typography:
  display:                        # "Build and deploy on the AI Cloud."
    fontFamily: 'Geist, Arial, sans-serif'
    fontSize: 56px
    fontWeight: 600
    lineHeight: 56px
    letterSpacing: -2.2px
  heading:
    fontFamily: 'Geist, Arial, sans-serif'
    fontSize: 24px
    fontWeight: 600
    lineHeight: 32px
    letterSpacing: -0.96px
  body-md:
    fontFamily: 'Geist, Arial, sans-serif'
    fontSize: 16px
    fontWeight: 400
    lineHeight: 24px
    letterSpacing: 0
  eyebrow-mono:                   # "GET STARTED", "LOADING STATUS…"
    fontFamily: '"Geist Mono", ui-monospace, monospace'
    fontSize: 12px
    fontWeight: 400
    lineHeight: 16px
    letterSpacing: 0
    transform: uppercase
rounded:
  sm: 6px                         # inline link chips, small controls
  full: 9999px                    # pill buttons
spacing:                          # --geist-space, 4px base
  base: 4px
  x2: 8px
  x3: 12px
  x4: 16px
  x6: 24px
  x8: 32px
  x16: 64px
  x24: 96px
components:
  button-primary:                 # "Start Deploying"
    backgroundColor: '{colors.inverse}'
    textColor: '{colors.on-inverse}'
    typography: '{typography.body-md}'
    rounded: '{rounded.full}'
    padding: '12px 20px'
    note: 'leading triangle glyph'
  button-secondary:               # "Get a Demo"
    backgroundColor: '{colors.surface}'
    textColor: '{colors.on-surface}'
    border: '1px solid {colors.hairline}'
    rounded: '{rounded.full}'
  chip:                           # "Enterprise" / "Security" inline tokens
    backgroundColor: '{colors.surface}'
    border: '1px solid {colors.hairline}'
    rounded: '{rounded.full}'
    note: 'leading 16px icon'
  link-inline:
    textColor: '{colors.blue}'
    rounded: '{rounded.sm}'
    padding: '0 4px'
motion:
  easing-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
  duration-standard: 200ms
  note: 'fast, near-instant; prismatic gradient animates subtly'
icons:
  style: line / geometric
  stroke: 1.5px
  sizes: { sm: 16px, md: 20px, lg: 24px }
  color-rule: 'monochrome ink; the black triangle is the brand mark'

Vercel

v alpha · Geist Design System · "Build and deploy on the AI Cloud."

Overview. Vercel runs on Geist, its in-house design system: a near-white developer canvas (#FAFAFA) with a precise, HSL-stepped neutral greyscale and near-black ink (#171717, gray-1000 at 9% lightness). The type system is two faces only — Geist grotesque for display and body, Geist Mono for eyebrows, labels and code, always UPPERCASE. The chrome is monochrome and technical: pure-black pill buttons, thin grid lines with plus-mark intersections framing the hero, and the unmistakable prismatic yellow→white→green spectrum glowing behind the black triangle logomark. Color is rationed and semantic — blue for Pro and links, purple for Enterprise — never decorative.

Colors

  • Greyscale (HSL 0 0% L) is the whole palette: ink #171717 (gray-1000), secondary #4D4D4D (900), tertiary #8F8F8F (700), hairline #EBEBEB (200), canvas #FAFAFA (background-200), surface #FFFFFF (100). Defined as HSL steps for perfect tonal control.
  • Pure black #000000 {colors.inverse} — primary buttons only (darker than the ink used for text).
  • Blue #0070F3 {colors.blue} (ds-blue-700) — links and the word "Pro".
  • Purple #7C3AED {colors.purple} (ds-purple-900) — the word "Enterprise".
  • System accents — cyan #50E3C2, warning #F5A623, error #EE0000, surfaced rarely.

Typography

Geist (grotesque; the brand's own; substitute Inter) and Geist Mono (substitute JetBrains Mono). Display is tracked dramatically tight (-2.2px at 56px). Mono is used UPPERCASE for eyebrows and status text — a core Geist tell.

TokenFamilySizeWeightLine-heightTrackingUsage
displayGeist56px60056px-2.2pxhero h1
headingGeist24px60032px-0.96pxsection h2
body-mdGeist16px40024px0body, buttons
eyebrow-monoGeist Mono12px40016px0 (UPPER)labels, status

Layout

Centered hero on an explicit technical grid with hairline columns/rows and + marks at intersections. Spacing follows a strict 4px base scale (--geist-space: 4/8/12/16/24/32/64/96). Footer is a dense multi-column link sitemap with mono uppercase headers.

Elevation & Depth

Flat and precise. Buttons and cards are defined by borders and tint, not shadow. The only "depth" is the soft prismatic gradient bloom behind the logo.

Shapes

Two radii: pill (9999px) for buttons and chips, 6px for inline link chips/small controls. Crisp and minimal — no large rounded cards.

Components

  • button-primary "Start Deploying": black pill, white label, leading triangle glyph.
  • button-secondary "Get a Demo": white pill, hairline border, ink label.
  • chip: white pill with hairline border and a leading 16px icon (inline "Enterprise"/"Security").
  • link-inline: blue text with a 6px hover chip.

Motion

Fast and near-instant (~200ms) with a standard ease — befitting a deploy platform. The prismatic spectrum animates subtly; otherwise motion is restrained.

Iconography

1.5px geometric line icons, monochrome ink, 16/20/24px. The solid black triangle is the singular brand mark; status badges ("NEW") render as mono uppercase pills.

Do's and Don'ts

  • Do build the palette from the HSL greyscale; use #000 only for buttons, #171717 for text.
  • Do set eyebrows and status labels in Geist Mono, UPPERCASE.
  • Do track display type very tight (-2.2px).
  • Do keep color semantic: blue = Pro/links, purple = Enterprise.
  • Don't use color decoratively or add drop shadows — Geist is flat and technical.
  • Don't round large surfaces; reserve pills for buttons and 6px for small controls.