Linear vs Vercel: design style comparison
Linear is Dark Precision SaaS & Industrial Craftsmanship; Vercel is Geist Architectural Grid & Swiss Precision Monochrome. Both were extracted with the same taste-skill pipeline, so every value below is directly comparable. 17 of 18 tracked tokens differ.
Side-by-side preview
rgba(255, 255, 255, 0.08)#EBEBEBKey differences
- Linear is a dark design (canvas
#08090A) while Vercel is light (canvas#FAFAFA). - Accent:
#5E6AD2(Linear) vs#0070F3(Vercel). - Headings:
Inter VariablevsGeistSans. - Display type: Linear H1 is
64px / -0.022em (w510); Vercel H1 is64px / -0.06em (w400). - Primary button radius:
9999pxvs6px; height 32px vs 32px. - Depth: Linear uses
rgba(255, 255, 255, 0.05) 0px 0px 0px 1px insetmost; Vercel usesrgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgb(235, 235, 235) 0px 0px 0px 1pxmost. - Motion:
cubic-bezier(0.25, 0.46, 0.45, 0.94)vscubic-bezier(0.4, 0, 0.2, 1).
Token table
| Token | Linear | Vercel |
|---|---|---|
| Canvas | #08090A | #FAFAFA |
| Surface | #0F1011 | #FFFFFF |
| Text | #F7F8F8 | #171717 |
| Muted text | #8A8F98 | #4D4D4D |
| Accent | #5E6AD2 | #0070F3 |
| Border | rgba(255, 255, 255, 0.08) | #EBEBEB |
| Heading font | Inter Variable | GeistSans |
| Body font | Inter Variable | GeistSans |
| Mono font | Berkeley Mono | GeistMono |
| H1 | 64px / -0.022em (w510) | 64px / -0.06em (w400) |
| Button radius | 9999px | 6px |
| Button height same | 32px | 32px |
| Most-used radius | 8px | 6px |
| Most-used shadow | rgba(255, 255, 255, 0.05) 0px 0px 0px 1px inset | rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgb(235, 235, 235) 0px 0px 0px 1px |
| Easing | cubic-bezier(0.25, 0.46, 0.45, 0.94) | cubic-bezier(0.4, 0, 0.2, 1) |
| Duration | 0.7s | 0.1s |
| Container max-width | 1436px | 1448px |
| Mode | dark | light |
Primary buttons
| Rendered | Height | Padding | Radius | Background / Text | Border | Font |
|---|---|---|---|---|---|---|
| Sign up | 32px | 0px 12px | 9999px | #E5E5E6#08090A | 1px solid #E5E5E6 | 13px / 510 |
| Get started | 44px | 0px 20px | 9999px | #E5E5E6#08090A | 1px solid #E5E5E6 | 16px / 510 |
| Contact sales | 44px | 0px 20px | 9999px | rgba(255, 255, 255, 0.05)#F7F8F8 | none | 16px / 510 |
| Rendered | Height | Padding | Radius | Background / Text | Border | Font |
|---|---|---|---|---|---|---|
| Sign Up | 32px | 0px 6px | 6px | #171717#FFFFFF | none | 14px / 500 |
| Deploy now | 40px | 0px 12px | 9999px | #171717#FFFFFF | none | 16px / 500 |
| Log In | 32px | 0px 6px | 6px | #FFFFFF#171717 | none | 14px / 500 |
Which style should you pick?
Pick Linear if you want Ultra-dark #08090A carbon canvas + 1px rgba(255,255,255,0.08) translucent hairlines + Inter Variable 510 weight (-0.022em) + Berkeley Mono telemetry — signals: dark, precision, saas, linear, hairline-borders, bento-grid, issue-tracker, minimalist, micro-shadows, indigo, carbon-black, dashboard, ai-agents.
Pick Vercel if you want Architectural #FAFAFA / #FFFFFF daylight grid with exposed 1px #EBEBEB structural hairlines, corner crosshair markers, ultra-tight -0.06em GeistSans display type, and #171717 monochrome CTAs — signals: light, monochrome, grid, crosshairs, geist, vercel, developer, cloud, infra, minimal, swiss, high-contrast, 1px-grid.
Rules that differ
Linear never:
- NEVER use pure
#000000for large card surfaces or pure#FFFFFFfor body text—always use#08090Acanvas,#0F1011/#141516cards, and#F7F8F8primary text. - NEVER use thick opaque gray borders (
border-gray-700,border-zinc-600)—always use1pxtranslucent white hairlines (border-white/[0.08]orborder-white/[0.05]). - NEVER use standard
font-bold(700or800) on large headlines—Linear uses custom variable medium weight (font-[510]) with tight negative tracking (tracking-[-0.022em]) andleading-none(1.0).
Vercel never:
- NEVER substitute generic uncalibrated gray backgrounds for Vercel’s exact
#FAFAFAcanvas and#FFFFFFsurface pairing. - NEVER replace
GeistSansdisplay typography or ignore its signature scale (64px / -0.06em (w400)). - NEVER use thick opaque borders that clash with
#EBEBEB(1px solid #EBEBEB).
Go deeper
Get all 30 full SKILL.md specs (Cursor / Claude Code / Codex ready) plus the Pro growth skills.
See taste-skill Pro →