OpenAI Design System
Generated 17/04/2026 · 4 extracted colors · 30 type tokens · 22 spacing steps · 5 breakpoints · 9 motion tokens
openai.com 2026
Color Palette
Extracted Colors — Fewest in this series (4 tokens)
Black (dominant)
#000000 · ×1180
Light Gray (border)
#E5E7EB · ×1016
White
#FFFFFF · ×11
Light Gray 2
#F1F1F1 · ×3
:root Semantic Alpha Scale — Primary (black at opacity steps)
Primary 2%
--color-primary-2
Primary 4%
--color-primary-4
Primary 12%
--color-primary-12
Primary 44%
--color-primary-44
Primary 60%
--color-primary-60
Primary 80%
--color-primary-80
Primary 100%
--color-primary-100
:root Accent Hues — Lime, Magenta, Blue, Yellow
Lime
--color-hue-lime
Magenta
--color-hue-magenta
Blue
--color-hue-blue
Yellow
--color-hue-yellow
:root Syntax Highlighting Colors — Code editor palette
copy error operator variable string data keyword function const
The :root layer defines a complete code editor theme for OpenAI's documentation and API playground. These are not surfaced as UI design tokens but as a dedicated syntax highlighting sub-system.
Typography
--font-family-base · OpenAI Sans (proprietary)
OpenAI Sans
Used at scale across openai.com, ChatGPT, and the API platform. Single font family for all UI — no secondary serif or display typeface.
Regular · 400 Medium · 500 Semibold · 600
Fluid type scale — clamp() from :root
Fluid sizing system
The :root layer defines --type-xl-size through --type-2xs-size as fluid clamp() expressions interpolating between 375px and 1440px viewports. Sub-pixel extracted sizes are rendered instances of this system.
xl: clamp(4rem → 7rem) h1: clamp(2rem → 4rem) h2: clamp(2rem → 3rem)
Introducing GPT-5
Display · 43.39px · Medium · line-height: 50.15px · letter-spacing: −1.209px (most negative in series)
Explore the API
Heading XL · 28px · Medium · line-height: 34px · letter-spacing: −0.214px
Powerful language models
Heading LG · 21.42px · Medium · line-height: 28px · letter-spacing: −0.174px
Build on the most capable AI models in the world. Start with our models, fine-tune them for your use case, or build your own.
Body · 17px · Regular · line-height: 26.65px · letter-spacing: −0.17px
Get started with the OpenAI API. Access GPT-4, DALL·E, Whisper, and more.
Body Default · 16px · Regular · line-height: 19.6px · letter-spacing: −0.16px
Last updated 2 minutes ago · Free tier · 100 requests/min
Body Small · 14px · Regular · line-height: 22.11px
PRODUCTS · RESEARCH · SAFETY · COMPANY
Nav/Label · 13px · Medium · letter-spacing: +0.3px (sole positive token)
Line Heights — 10 tokens
Tight
13px
Snug
14px
Normal
19.6px
Relaxed
22.11px
Loose
22.68px
LH-6
24px
LH-7
26.65px
LH-8
28px
LH-9
34px
LH-10 (display)
50.15px
Letter Spacing — 6 negative + 1 positive (−1.209px tightest in series)
Display hero
--letter-spacing-tight
−1.209px · 43px+ display · most negative in entire series
Heading text
--letter-spacing-normal
−0.214px · sub-pixel heading compression
Body default
--letter-spacing-widest
−0.16px · 16px body text
NAV LABELS
--letter-spacing-ls-7
+0.3px · sole positive · uppercase nav items
Spacing
Spacing Scale
22 steps — 3.9px → 392.805px · dense sub-pixel cluster at 3.9–4.797px then standard steps through to 392.8px (viewport-scale hero spacing)
3.9
4
4.2
4.4
4.8
8
10
12
16
18
20
24
32
40
48
52
64
80
111.5
120
179
393
Borders
Border Radii — 5 tokens (4px to 9999px pill)
sm
4px · ×4
md (dominant)
6.08px · ×42
lg
24px · ×1
xl (button)
40px · ×7
2xl (pill)
9999px · ×15
The sub-pixel 6.08px radius is the computed value of a rem-based token — the dominant card radius. The 40px radius is applied to OpenAI's signature pill-style CTA buttons.
Border Widths
--border-width-hairline
1px · ×24 — single universal border width throughout the system
Shadows / Elevation
Shadow Tokens
2 tokens — 6-stop shadows with 4 transparent leading layers · ultra-subtle elevation
sm — Card default
×5
6-stop: 4 transparent layers + 2% 4px 6px + 5% ambient 2px — imperceptible elevation, definition from border
md — Raised card
×1
6-stop: 4 transparent layers + 6% 2px 5px + 1% 4px 4px — minimal lift for interactive elements
Z-Index
9 layers — clean 1→10→40→50→51→52→56→57→103. The 50–52 cluster handles OpenAI's navigation system (desktop nav, mobile nav, nav overlay). The gap from 57 to 103 suggests a deliberate jump for the highest priority overlay — likely the ChatGPT interface modal.
LayerValueUsage
--z-1 (Base)1Base content stacking context
--z-2 (Navigation)10Sticky navigation, announcement bar
--z-3 (Overlay bg)40Overlay backgrounds, backdrop
--z-4 (Nav cluster 1)50Navigation layer — desktop nav start
--z-5 (Nav cluster 2)51Navigation layer — nav dropdown
--z-6 (Nav cluster 3)52Navigation layer — nav top rail
--z-7 (Priority 1)56Priority overlays, tooltips
--z-8 (Priority 2)57High-priority popovers, drawers
--z-9 (Absolute top)103Modals, critical overlays — ChatGPT interface panels
Breakpoints
5 breakpoints — 640px → 1536px. Standard Tailwind CSS breakpoints: sm/md/lg/xl/2xl. The :root layer also encodes fluid clamp() type scales interpolating from 375px to 1440px for continuous responsive typography.
--breakpoint-xs
640px
sm (Tailwind)
--breakpoint-sm
768px
md (Tailwind)
--breakpoint-md
1024px
lg (Tailwind)
--breakpoint-lg
1280px
xl (Tailwind)
--breakpoint-xl
1536px
2xl (Tailwind)
Opacity
— No opacity tokens detected —
OpenAI's design system encodes opacity as named CSS custom properties in the --color-primary-* and --color-secondary-* alpha scale rather than standalone opacity properties. For example, --color-primary-44: #00000070 represents 44% opacity black — opacity is baked into the color token itself.
Accessibility
WCAG 2.1: AA ≥ 4.5:1 · AA Large ≥ 3:1 · AAA ≥ 7:1. OpenAI's extracted palette is extreme — #000000 vs #FFFFFF at 21:1 (maximum possible). The #E5E7EB border color (×1016) creates complexity when used as background.
Text ColorBackground ColorRatioWCAG Rating
#000000 (Black)#FFFFFF (White)21:1AAA
#000000 (Black)#F1F1F1 (Lt Gray 2)18.1:1AAA
#000000 (Black)#E5E7EB (Lt Gray)15.8:1AAA
#FFFFFF (White)#000000 (Black)21:1AAA
#000000 (Black)#8f8f8f (Solid-44)3.9:1AA Large
#000000 (Black)#666 (Solid-60)5.74:1AA
#FFFFFF (White)#333 (Solid-80)12.63:1AAA
#000000 (Black)#f5f5f5 (Solid-4)19.5:1AAA
#9dca1c (Hue Lime)#000000 (Black)7.1:1AAA
#9dca1c (Hue Lime)#FFFFFF (White)2.95:1Fail
#29bdfd (Hue Blue)#000000 (Black)9.1:1AAA
#29bdfd (Hue Blue)#FFFFFF (White)2.3:1Fail
#ffaf00 (Hue Yellow)#000000 (Black)9.8:1AAA
#ffaf00 (Hue Yellow)#FFFFFF (White)2.14:1Fail
#eb56c5 (Hue Magenta)#000000 (Black)4.5:1AA
CSS Variables Reference
Colors (Extracted)
Black (dominant ×1180)--color-black#000000
Light Gray (border ×1016)--color-light-gray#E5E7EB
White (bg ×11)--color-white#FFFFFF
Light Gray 2 (bg ×3)--color-light-gray-2#F1F1F1
OpenAI Sans (proprietary)--font-family-baseOpenAI Sans
Regular / Medium / Semiboldweights400/500/600
Display (sub-pixel fluid)--font-size-4xl43.3878px
Heading XL--font-size-3xl28px
Body default--font-size-base16px
Display tight (most extreme)--letter-spacing-tight−1.209px
Nav labels (sole positive)--letter-spacing-ls-7+0.3px
Motion, Borders & Layers
Instant · ×142--duration-instant0.1s
Fast · ×13--duration-fast0.15s
Normal · ×443--duration-normal0.2s
Slow (dominant ×1472)--duration-slow0.25s
Slower · ×148--duration-slower0.3s
No easing tokens detectedeasing
No opacity tokens detectedopacity
sm--radius-sm4px
md (dominant ×42)--radius-md6.08px
xl (CTA button ×7)--radius-xl40px
2xl (pill ×15)--radius-2xl9999px
Base--z-11
Navigation--z-210
Nav cluster (50/51/52)--z-4/5/650/51/52
Modal / Critical--z-9103
OpenAI Design System · Generated 17/04/2026 · 4 extracted colors (most minimal in series) · 1 font family (OpenAI Sans) · 3 font weights · 9 font sizes (sub-pixel fluid) · 10 line heights · 7 letter-spacing (6 negative, 1 positive at −1.209px extreme) · 22 spacing steps · 5 radius · 1 border width · 2 shadows (6-stop) · 9 durations · no easing tokens · no opacity tokens · 9 z-index layers · 5 breakpoints (Tailwind)