BrandToPrompt

ChatGPT Design System: Minimalist High-Contrast UI

Visit Site

Explore ChatGPT's design system - minimalist colors, typography, and components. Learn how its high-contrast UI builds trust and usability.

6 min read1,130 words

Brand Identity

Color Palette

Primary
Secondary

Typography

Primary Font
ui-sans-serif

Design Style

Style
minimalist with disciplined accents and high-contrast monochrome palette
Visual Density
compact with consistent 8px grid-based spacing
Border Style
8px rounded corners and full pill-shaped buttons

Full Analysis

ChatGPT Brand Design System Deep Dive

1. Brand Overview

ChatGPT’s public-facing design language is deliberately restrained. This isn’t a brand screaming for attention through loud gradients or quirky typography — it’s a system built for trust, clarity, and functional efficiency. You can feel it the second you land on chatgpt.com: the primary color is an uncompromising near-black (#0d0d0d), paired with pure white (#ffffff). It’s the kind of minimalism that says, “We’re here to help you think, not distract you.”

There’s a strong focus on usability. Buttons are big pill shapes with absurdly high border-radius values (3.35544e+07px), making them unmistakably tappable. Typography sticks to a safe, system-based sans-serif stack — no boutique fonts here, just dependable rendering across devices. This choice reinforces the product’s ubiquity: ChatGPT isn’t “your quirky AI friend,” it’s “your everywhere assistant.”

The design philosophy here reads as:

  1. Neutral foundation — Monochrome base for maximum compatibility with content.
  2. Functional accents — Blues, greens, purples, oranges, yellows, and pinks show up in theme contexts, user interactions, and status states — but never dominate the layout.
  3. Accessible contrast — The black/white core ensures text meets WCAG AA standards without fuss.
  4. Consistent shapes — Rounded pills, consistent 8px corners, and no unexpected sharp edges.

Audience-wise, this is for a broad demographic: from casual mobile users to enterprise clients. It avoids tech-startup flamboyance, leaning instead on a sober, utilitarian tone. That’s smart — it keeps the interface future-proof and easy to brand-adapt for different contexts (consumer, business, developer portals).

I like the confidence here. No logo overload, no ornamental fluff. Just a toolkit for interaction. And because the palette is so disciplined, it’s easy to imagine layering brand-specific skins on top without breaking the underlying UX.


2. Color System

2.1 Primary Colors

The semantic primary is rgb(13,13,13) (#0d0d0d). This is a deep neutral — almost pure black, but softened just enough to avoid harsh pixel contrast on modern displays. It communicates seriousness and authority. Paired with the semantic secondary rgb(255,255,255) (#ffffff), you get the highest possible contrast.

Psychology: Black here is about stability and focus. It’s a “content-first” color — it doesn’t impose emotion like a blue or red would. The white balances it with openness.

Compared to other tech brands:

  • Apple uses a similar black/white base but leans into greys for subtlety.
  • Google’s Material Design defaults to white backgrounds and blue accents — far more colorful.
  • ChatGPT’s approach feels closer to Stripe’s — understated, letting typography and spacing do the heavy lifting.

2.2 Complete Palette

Color NameHexRoleUsage
Primary Surface#0d0d0dSemantic primaryBackgrounds, text on white, primary button fill
Neutral Dark Gray#5d5d5dNeutralSecondary text, icon strokes, low-emphasis UI labels
Secondary Surface#ffffffSemantic secondaryBackgrounds, text on black, secondary button fill
Neutral Mid Gray#8f8f8fNeutralHover backgrounds, subtle dividers
Semi-transparent Whiteoklab(0.930993 0... / 0.5)OverlayHover/focus overlays
Accent Blue#005fccAccentHover/focus outlines, link highlights
Semi-transparent Blackoklab(0.159065 0... / 0.08)OverlayHover/focus states
--bg-primary#ffffffTokenPage background
--text-placeholder#000000b3TokenPlaceholder text
--text-accent#66b5ffTokenLinks, highlights
--interactive-bg-accent-muted-press#e0efffTokenButton pressed state
--blue-theme-secondary-btn-bg#e5f3ffTokenSecondary button background in blue theme
--orange-theme-secondary-btn-bg#ffe7d9TokenSecondary button background in orange theme
--interactive-bg-primary-hover#0d0d0dccTokenHover state on primary background
--black-theme-submit-btn-bg#000000TokenBlack theme submit button
--composer-blue-bg#daeeffTokenComposer input background
--text-danger#e02e2aTokenError messages
--interactive-bg-secondary-default#0d0d0d00TokenTransparent secondary background
--bg-tertiary#f3f3f3TokenTertiary background
--bg-status-warning#fff5f0TokenWarning background
--yellow-theme-submit-btn-bg#ffc300TokenYellow theme submit button
--blue-theme-submit-btn-bg#0285ffTokenBlue theme submit button
--orange-theme-secondary-btn-text#4a2206TokenOrange theme secondary button text
--interactive-bg-accent-press#99ceffTokenAccent press background
--green-theme-user-msg-bg#d9f4e4TokenGreen theme user message background
--purple-theme-user-selection-bglab(60.99% 39.17 -56.72/.35)TokenPurple theme selection background
--purple-theme-user-msg-text#2c184aTokenPurple theme user text
--theme-attribution-highlight-bg#ffeeb8TokenAttribution highlight
--pink-theme-secondary-btn-text#4d1f34TokenPink theme secondary button text
--black-theme-user-selection-bglab(82.40% -.0000596 0/.4)TokenBlack theme selection background
--bg-scrim#0d0d0d80TokenModal scrim overlay
--interactive-bg-secondary-press#0d0d0d0dTokenSecondary press state
--interactive-bg-accent-muted-context#ebf4ff80TokenMuted accent in context
--text-error#f93a37TokenError text
--interactive-bg-danger-primary-hover#fa423eTokenDanger hover background
--blue-theme-user-selection-bglab(62.19% -3.77 -58.64/.35)TokenBlue theme selection background
--scrollbar-color-hover#0003TokenScrollbar hover color
--theme-secondary-btn-bg#ecececTokenSecondary button base background
--purple-theme-submit-btn-bg#924ff7TokenPurple theme submit button
--yellow-theme-secondary-btn-text#4d3b00TokenYellow theme secondary button text
--interactive-bg-accent-muted-hover#ebf4ffTokenMuted accent hover
--purple-theme-user-msg-bg#efe5feTokenPurple theme user message background
--green-theme-user-msg-text#003716TokenGreen theme user text
--green-theme-submit-btn-bg#04b84cTokenGreen theme submit button
--bg-secondary#e8e8e8TokenSecondary background
--pink-theme-user-msg-bg#ffe8f3TokenPink theme user message background
--text-quaternary#00000030TokenVery low-emphasis text
--interactive-bg-danger-primary-press#ba2623TokenDanger press state
--blue-theme-user-msg-text#00284dTokenBlue theme user text
--yellow-theme-user-msg-bg#fff6d9TokenYellow theme user message background
--pink-theme-user-selection-bglab(72.41% 48.89 -7.27/.35)TokenPink theme selection background
--interactive-bg-secondary-hover#0d0d0d05TokenSecondary hover state
--orange-theme-user-selection-bglab(69.08% 44.32 53.21/.35)TokenOrange theme selection background
--theme-user-msg-bg#e9e9e980TokenUser message background
--yellow-theme-user-selection-bglab(86.38% 6.24 73.40/.35)TokenYellow theme selection background
--bg-status-error#fff0f0TokenError background
--hint-bg#b3dbffTokenHint background
--pink-theme-submit-btn-bg#ff66adTokenPink theme submit button
--hint-text#08fTokenHint text
--interactive-bg-accent-hover#cce6ffTokenAccent hover background
--orange-theme-submit-btn-bg#fb6a22TokenOrange theme submit button
--text-status-warning#e25507TokenWarning text
--scrollbar-color#0000001aTokenScrollbar base color
--brand-purple#ab68ffTokenBrand purple accent
--interactive-bg-primary-press#0d0d0de5TokenPrimary press state

2.3 Color Relationships

The primary #0d0d0d against #ffffff is textbook high contrast — ratio well above 7:1. Even secondary text (#5d5d5d) on white clocks in around 12:1, still AAA compliant. Accent colors like #66b5ff on black or white also pass accessibility, but some lighter theme backgrounds (e.g., #ffe8f3) may require careful text color pairing to meet AA.

Dark mode is essentially the inverse: black surfaces, white text, accents remain consistent. Transparency overlays (multiple oklab and rgba values) are used to soften transitions between states.


2.4 Usage Guide

  • Primary actions: #0d0d0d background + #ffffff text.
  • Secondary actions: White background, black text, light border (rgba(0,0,0,0.15)).
  • Status: Use themed backgrounds (--bg-status-warning, --bg-status-error) with high-contrast text tokens.
  • Avoid: Placing light text over light backgrounds. For example, don’t use #66b5ff over #e5f3ff without checking contrast.
  • Combos that work: Black + brand purple (#ab68ff), white + blue (#0285ff).
  • Combos to avoid: Pink text (#4d1f34) over pink background (#ffe8f3) unless for decorative accents — otherwise accessibility suffers.

3. Typography

3.1 Font Families

Everything uses ui-sans-serif with a safe fallback stack:
-apple-system, system-ui, Segoe UI, Helvetica, Apple Color Emoji, Arial, Segoe UI Emoji, Segoe UI Symbol

No Google Fonts, no Adobe Fonts, no variable fonts. The choice is pragmatic — render fast, look native across OS.


3.2 Type Scale

ElementFontSizeWeightLine HeightLetter Spacing
Heading-1ui-sans-serif28px4001.210.38px
Heading-1ui-sans-serif24px6001.50
Buttonui-sans-serif18px4001.56
Heading-1ui-sans-serif18px4001.56
Linkui-sans-serif16px4001.50
Buttonui-sans-serif16px4001.50
Heading-1ui-sans-serif16px4001.50
Heading-1ui-sans-serif16px4001.50-0.32px
Heading-1ui-sans-serif16px6001.50
Linkui-sans-serif14px4001.64-0.14px
Buttonui-sans-serif14px4001.64-0.14px
Captionui-sans-serif14px4001.64-0.14px
Buttonui-sans-serif14px5001.43
Captionui-sans-serif14px4001.00
Linkui-sans-serif14px4001.00
Buttonui-sans-serif13px6001.50
Captionui-sans-serif13px6001.50
Captionui-sans-serif13px5001.50
Buttonui-sans-serif13px5001.50
Captionui-sans-serif12px4001.33

3.3 Hierarchy

Hierarchy is subtle — size differences are minimal, relying more on weight shifts (400 vs 600) and spacing. This keeps UI density consistent. Large headings (28px) are rare; most interface text sits between 14–16px. That’s a conscious choice: shorter line lengths, less scroll, better scanability.


4. Spacing & Layout

4.1 Spacing Scale

Base grid: 8px. Common values:

ValueRemCountNotes
4px0.25rem2Icon gaps
6px0.38rem12Tight padding
8px0.50rem106Default element gap
10px0.63rem12Secondary padding
16px1.00rem14Section padding
24px1.50rem1Large section spacing
28px1.75rem1Large heading spacing
307.406px19.21rem1Likely a fixed container width

4.2 Layout

Breakpoints aren’t explicitly listed — Tailwind CSS classes suggest responsive modifiers are used. Layout is mobile-first, scaling up with consistent horizontal padding in multiples of 8px.


5. Visual Elements

  • Border Radius:

    • 8px (51 instances) — cards, buttons, containers.
    • 10px (1 instance) — rare, maybe a specific component.
    • 28px (1 instance) — large visual element.
    • 3.35544e+07px — full pill shapes (buttons, avatars).
  • Shadows:

    • Used sparingly. Most depth comes from subtle rgba shadows like rgba(0,0,0,0.1) 0px 10px 15px -3px.
  • Borders:

    • 1px solid with low-opacity blacks (rgba(13,13,13,0.1)).
    • Often used for separation instead of shadows.

6. Components

6.1 Buttons

Primary Button (btn-primary):

  • Background: #0d0d0d
  • Text: #ffffff
  • Padding: 0px 12px
  • Border-radius: 3.35544e+07px (pill)
  • Border: 1px solid transparent
  • Font: 14px, weight 500

Secondary Button:

  • Background: #ffffff
  • Text: #0d0d0d
  • Border: 1px solid rgba(0,0,0,0.15)
  • Same pill radius.

Icon Button:

  • Background: transparent
  • Border: 1px solid rgba(13,13,13,0.1)
  • Padding: 8px
  • Font: 13px, weight 600

Muted Button:

  • Background: #ececec
  • No border
  • Padding: 8px
  • Font: 16px, weight 400

Two styles:

  • Black (#0d0d0d) with underline.
  • Gray (#5d5d5d) with underline.

6.3 Forms

Text inputs:

  • Transparent background.
  • Borderless by default.
  • Padding bottom: 16px.
  • Color: #0d0d0d.

6.4 Cards

No explicit card data, but border-radius and shadow tokens suggest 8px corners, light shadows for lift.


7. Design Tokens

:root {
  /* Colors */
  --primary-surface: #0d0d0d;
  --secondary-surface: #ffffff;
  --neutral-dark-gray: #5d5d5d;
  --neutral-mid-gray: #8f8f8f;
  --accent-blue: #005fcc;
  --brand-purple: #ab68ff;
  /* ... all other tokens from data ... */

  /* Typography */
  --font-family-ui-sans: -apple-system, system-ui, Segoe UI, Helvetica, Apple Color Emoji, Arial, Segoe UI Emoji, Segoe UI Symbol;
  --font-size-h1: 28px;
  --font-size-h2: 24px;
  /* ... all sizes ... */

  /* Spacing */
  --space-4: 4px;
  --space-6: 6px;
  --space-8: 8px;
  --space-10: 10px;
  --space-16: 16px;
  --space-24: 24px;
  --space-28: 28px;

  /* Radius */
  --radius-sm: 8px;
  --radius-md: 10px;
  --radius-lg: 28px;
  --radius-full: 33554400px;

  /* Shadows */
  --shadow-md: rgba(0,0,0,0.1) 0px 10px 15px -3px, rgba(0,0,0,0.1) 0px 4px 6px -4px;
}

8. AI Coding Assistant Prompt

# ChatGPT Design System Specification

You are a ChatGPT design expert. Build UIs matching their visual language exactly.

## Brand Context
ChatGPT’s design is minimal, neutral, and functional. Black and white dominate, with accent colors used sparingly for states and themes. Shapes are consistent and rounded, typography is system-based for reliability.

## Colors
- Primary Surface: #0d0d0d — backgrounds, primary buttons
- Secondary Surface: #ffffff — backgrounds, text over dark
- Neutral Dark Gray: #5d5d5d — secondary text
- Neutral Mid Gray: #8f8f8f — hover states
- Accent Blue: #005fcc — focus outlines
- Brand Purple: #ab68ff — decorative accents
- Text Accent: #66b5ff — links
- Text Danger: #e02e2a — error text
- ... (include all tokens from dataset)

## Typography
Font Family: ui-sans-serif, -apple-system, system-ui, Segoe UI, Helvetica, Apple Color Emoji, Arial, Segoe UI Emoji, Segoe UI Symbol

| Level    | Size | Weight | Line Height | Use For |
|----------|------|--------|-------------|---------|
| H1       | 28px | 400    | 1.21        | Page titles |
| H1 Bold  | 24px | 600    | 1.50        | Section titles |
| Body     | 16px | 400    | 1.50        | Paragraph text |
| Caption  | 14px | 400    | 1.64        | Small labels |
| Button   | 14px | 500    | 1.43        | CTAs |

## Spacing & Grid
Base: 8px. Scale: 4px, 6px, 8px, 10px, 16px, 24px, 28px.
Use multiples for padding, margins, and gaps.

## Border Radius
- sm: 8px — cards, small buttons
- md: 10px — rare components
- lg: 28px — large visual elements
- full: 33554400px — pills, avatars

## Shadows & Depth
Subtle shadows only: rgba(0,0,0,0.1) 0px 10px 15px -3px, rgba(0,0,0,0.1) 0px 4px 6px -4px.

## Components

### Primary Button
```css
.btn-primary {
  background: #0d0d0d;
  color: #ffffff;
  padding: 0 12px;
  border-radius: 33554400px;
  font-weight: 500;
  font-size: 14px;
  border: 1px solid transparent;
}
.btn-primary:hover { background: #0d0d0dcc; }
.btn-primary:focus { outline: 2px solid #005fcc; }
.btn-primary:disabled { opacity: 0.5; }
```

### Secondary Button
```css
.btn-secondary {
  background: #ffffff;
  color: #0d0d0d;
  padding: 0 12px;
  border-radius: 33554400px;
  font-weight: 500;
  font-size: 14px;
  border: 1px solid rgba(0,0,0,0.15);
}
```

### Input Field
```css
.input {
  background: transparent;
  color: #0d0d0d;
  border: none;
  padding-bottom: 16px;
}
.input:focus { outline: none; }
```

## Layout
Mobile-first, multiples of 8px for padding and gaps.

## Interaction Rules
- Transition: 150ms ease for state changes
- Focus indicators: solid outline with accent color
- Disabled states: 50% opacity

## DO
- Use only colors from the palette
- Maintain 8px grid
- Stick to system font stack
- Use full-radius pills for buttons

## DON'T
- Introduce custom colors
- Mix sharp and rounded corners
- Overuse shadows

## Code Examples

Primary Button (Tailwind):
```html
<button class="bg-[#0d0d0d] text-white px-3 rounded-full text-sm font-medium">Click Me</button>
```

Card:
```html
<div class="bg-white rounded-[8px] shadow-md p-4">Card content</div>
```

Input:
```html
<input class="bg-transparent text-[#0d0d0d] border-b border-[#0d0d0d] pb-4" placeholder="Type here" />
```

9. Summary

TL;DR: ChatGPT’s design system is black-and-white minimalism with disciplined accents, system fonts, and pill-shaped buttons. Everything lives on an 8px grid, corners are consistently rounded, and color tokens cover all interaction states.

Brand Keywords:

  • neutral-functional
  • high-contrast-minimal
  • rounded-consistent
  • theme-aware