Vercel's Geist design system describes its icons as a set tailored for developer tools. On the Geist pages the icons render as 16 by 16 SVGs on a 16 unit viewBox, colored with currentColor, drawn as filled outlines with an even-odd fill rule rather than live strokes. The search glyph's ring runs from radius 5 to 6.5, a 1.5 unit line on the 16 grid, and its handle ends square. The package naming seen is PascalCase with an Icon prefix, imported from @vercel/geistcn-assets.
A small fixed grid with one line thickness keeps icons quiet next to compact UI text. Inheriting the text color means an icon never needs its own color decision.
Developer tools, technical docs, dense dashboards and navigation, minimal monochrome brands
Steal it for your brand
The same system, written in your colors, type and shapes. Nothing of Vercel's look comes with it.
typography.body.weight / 267 px (1.5 px for regular body text).style.radius is under 2 px.palette.ink in body copy, palette.ink muted in secondary text and palette.on accent inside an accent button; never assign an icon its own color.{
"recipe": {
"canvas_px": 16,
"stroke_px_at_16": "{typography.body.weight} / 267",
"color": "currentColor",
"linecap": "butt",
"linejoin": "miter",
"corner_radius_px": {
"by": "style.button_shape",
"map": {
"rounded": 1,
"pill": 1.5
},
"default": 1
},
"construction": "outline strokes to fills, even-odd",
"size_by_density": {
"by": "style.density",
"map": {
"dense": 14,
"balanced": 16,
"airy": 20
},
"default": 16
},
"square_when_radius_below_px": 2
},
"fallbacks": {
"palette.ink_muted": "{palette.ink}",
"palette.on_accent": "{palette.paper}",
"style.radius": 8
},
"steps": [
"Take an open line set and redraw or rescale it onto a 16 unit canvas, keeping one line thickness of about {typography.body.weight} / 267 px (1.5 px for regular body text).",
"Cut open ends square and keep joins mitered; round small corners by 1 px (1.5 px for pill buttons), or leave them sharp when {style.radius} is under 2 px.",
"Expand the strokes to filled outlines with an even-odd fill rule so the icons render identically at every size.",
"Color every icon with currentColor so it takes {palette.ink} in body copy, {palette.ink_muted} in secondary text and {palette.on_accent} inside an accent button; never assign an icon its own color.",
"Render at 16 px beside body text; drop to 14 px for dense layouts and go to 20 px for airy ones, without changing line thickness relative to the canvas."
]
}The lesson
Show an icon set as an even grid in one gray, so consistency is visible before anyone reads a rule.
The Geist landing page gives Icons a card with rows of thin outline glyphs in a single gray at the same size: grid, arrow, bar chart, clock, globe, flag and bell among them. A neighbouring Colors card shows saturated vertical pills in gray, blue, purple, pink, red, orange, green and teal. The title reads "Geist Design System".
Don't copy these glyph subjects if your product isn't developer tooling. Keep the single-gray, one-weight set and the habit of showing it as a plain grid.