BrandToPrompt

Wa Design System: Functional, Friendly & Global UI

Visit Site

Explore Wa's design system - colors, typography, spacing, and components. Build universally accessible UIs with Wa's visual language.

6 min read1,086 words

Brand Identity

Color Palette

Primary
Secondary

Typography

Primary Font
Helvetica Neue
Secondary Font
-apple-system

Design Style

Style
functional, flat, high-contrast with friendly rounded shapes
Visual Density
compact grid-based with consistent 8px spacing
Border Style
large pills and full-circle shapes with 50px and 50% radii

Full Analysis

Wa Brand Design System Deep Dive

1. Brand Overview

WhatsApp ("Wa" here) isn’t just a messaging app — it’s a social utility with a distinct personality. Their design language is rooted in clarity, trust, and low-friction interaction. This is not a glossy, ornamental brand. It’s functional first, emotional second. You can see it in the way they use color: deep greens for trust and familiarity, bright greens for action, and neutral dark grays for the foundation. The vibe is utilitarian but friendly.

The site design (extracted from https://api.whatsapp.com/) reflects a long-lived brand that has evolved without breaking its core visual DNA. Rounded shapes dominate — 50px radii for pills, 50% radii for avatars. Typography is system-safe: Helvetica Neue and -apple-system stacks. They’re not chasing typographic fashion; they’re chasing legibility on every device, everywhere.

The whole thing runs on an 8px-based spacing system (with some 4px and 6px thrown in). It’s consistent enough to feel intentional but flexible enough to handle the quirks of multilingual layouts.

Their component styling is minimal. No shadows — depth comes from borders and color contrast. Links have subtle hover states (underline, color change). Inputs are pill-shaped, white-bordered, and high-contrast against dark backgrounds. Border radii are consistent, making the UI feel cohesive across contexts.

This brand is for billions of users in every market. They optimize for universality: safe fonts, high-contrast colors, touch-friendly targets. The design philosophy is pragmatic: make it work everywhere, make it feel friendly, don’t overcomplicate.


2. Color System

2.1 Primary Colors

The core brand color is #25d366 (rgb(37, 211, 102)) — the bright WhatsApp green. It’s used selectively: CTAs, highlights, hover states for important links. Psychologically, green signals “go” and “safe” — perfect for a messaging app where you want to encourage action without aggression.

Backgrounds lean toward #111b21 — a deep charcoal. Text is almost always white (#ffffff) against dark backgrounds, or dark (#111b21 / #1c1e21 / #1c1e21) against light surfaces. This gives maximum contrast in either mode.

Compared to competitors (Messenger’s blue, Telegram’s light blues), WhatsApp’s green stands out in a sea of social blues. It’s instantly identifiable.

2.2 Complete Palette

Color NameHexRoleUsage
Deep Charcoal#111b21Primary background, dark UI baseBackgrounds, dark surfaces
Pure White#ffffffText on dark, backgroundsText, icons, borders
WhatsApp Green#25d366Primary action, accentCTAs, hover states
Dark Gray (rgba 0.2 alpha)rgba(17, 27, 33, 0.2)Divider linesLight borders on dark
Dark Gray (rgba 0.4 alpha)rgba(17, 27, 33, 0.4)Divider linesSubtle separators
Near-black#1c1e21Text on light backgroundsLinks, body text
Bright Blue#027eb5Accent linksLinks
Secondary Blue#0373e9Accent linksLinks
Green Border#43cd66Accent borderRare emphasis
Dark Green Border#33463fDividersSection boundaries

2.3 Color Relationships

Contrast is high almost everywhere. White text (#ffffff) on #111b21 yields a contrast ratio ~13.3:1 — way above WCAG AAA. Green (#25d366) on #111b21 is ~3.4:1 — borderline for AAA but acceptable for large text and UI affordances. This is why they use it mostly for accents, not body text.

Dark mode is the default aesthetic. The palette flips cleanly for light surfaces by swapping text to dark gray (#1c1e21) and keeping accents consistent.

2.4 Usage Guide

Works well:

  • #25d366 (accent) on dark backgrounds (#111b21) — eye-catching CTAs.
  • White text on dark charcoal for maximum legibility.

Avoid:

  • Green on white for body text — contrast is insufficient.
  • Mixing multiple blues (#027eb5 and #0373e9) in the same context — they’re used for different link types.

3. Typography

3.1 Font Families

They lean heavily on safe, OS-native stacks:

  • Helvetica Neue, Helvetica, Arial — primary for headings and links.
  • -apple-system stack — system UI fonts for buttons and some headings.

No Google Fonts, no Adobe Fonts. This ensures performance and cross-platform consistency.

3.2 Type Scale

ElementFont FamilySize (px/rem)WeightLine HeightSpacing
heading-1Helvetica Neue24px / 1.50rem4001.00-0.72px
heading-1Helvetica23px / 1.44rem4001.13null
linkHelvetica Neue18px / 1.13rem4001.39-0.18px
heading-1Helvetica Neue18px / 1.13rem4001.39-0.18px
linkHelvetica Neue16px / 1.00rem4001.20null
heading-1Helvetica Neue16px / 1.00rem4001.20null
heading-1-apple-system16px / 1.00rem5001.20null
button-apple-system16px / 1.00rem4001.38-0.16px
heading-1-apple-system16px / 1.00rem4001.38-0.16px
heading-1Helvetica Neue16px / 1.00rem4001.38-0.16px
linkHelvetica Neue16px / 1.00rem4001.38-0.16px
linkHelvetica16px / 1.00rem4001.63null
linkHelvetica13px / 0.81rem6001.460.26px (uppercase)
captionHelvetica12px / 0.75rem4001.34null
linkHelvetica12px / 0.75rem4001.34null
linkHelvetica Neue12px / 0.75rem4001.34null
captionHelvetica Neue12px / 0.75rem4001.30-0.36px
captionHelvetica Neue12px / 0.75rem4001.34-0.12px
captionHelvetica Neue12px / 0.75rem4001.20null

3.3 Hierarchy

They use subtle size changes: 24px for large headings, 18px for sub-headings/links, 16px for body buttons, 13px uppercase for labels, 12px for captions. The hierarchy is functional — enough differentiation without breaking flow. This keeps the interface tight and readable.


4. Spacing & Layout

4.1 Spacing Scale

Base scale: 8px grid, but with some irregulars (4px, 6px, 10px, 15px).
Common values:

ValueRemCountUse Cases
1px0.06rem6Hairline borders
4px0.25rem2Tiny gaps
6px0.38rem2Micro padding
10px0.63rem1Tight padding
12px0.75rem480Buttons, small gaps
15px0.94rem4Misc spacing
16px1.00rem43Body padding
18px1.13rem43Medium gaps
20px1.25rem12Section padding
24px1.50rem16Component spacing
32px2.00rem7Large gaps
37px2.31rem7Hero padding
45px2.81rem6Big sections
56px3.50rem5Hero sections
70px4.38rem1Extra-large
80px5.00rem1XL spacing
88px5.50rem1XL spacing
90px5.63rem2XL spacing
96px6.00rem1XL spacing
176px11.00rem2Huge gaps

4.2 Layout

Breakpoints at: 319px, 400px, 500px, 639px, 640px, 767px, 768px, 770px, 800px, 801px, 1023px, 1024px, 1095px, 1096px, 1200px.
This shows a mobile-first approach with fine-grained breakpoints (even single-pixel variations) — likely to handle specific device quirks.


5. Visual Elements

Border Radius System:

RadiusCountComponents
5px2Small anchors
25px7Medium pills
50px13Links, listboxes
50%32Avatars, social icons

They love large radii and full circles. No small rounding except in edge cases.

Shadow System:
None. This is flat design — depth is via color and borders.

Borders:

  • 1px solid #ffffff — primary on dark backgrounds.
  • 2px solid #ffffff — for select inputs.
  • rgba(17,27,33,0.2) — light separators.
  • 1px solid #1c1e21 — on light backgrounds.
  • Occasional green (#43cd66) borders for emphasis.

6. Components

6.1 Buttons

No standalone button data in extract — they’re using links styled as buttons or select elements with button-like styles.

Example: select-one default:

  • background: #111b21
  • color: #ffffff
  • border: 2px solid #ffffff
  • border-radius: 50px (pill)
  • padding: 16px 28px

Several link styles:

  1. Color: #1c1e21, hover → underline + white.
  2. Color: #ffffff, font-weight 600, hover → underline.
  3. Color: #027eb5, hover → underline.
  4. Color: #111b21, hover → underline + green (#25d366).
  5. Color: #0373e9, hover → underline + white.

6.3 Forms

Only select-one data:

  • Dark background, white text, white border, pill shape.

No focus styles extracted.

6.4 Cards

No explicit card component in extract — likely built from container styles.


7. Design Tokens

:root {
  /* Colors */
  --color-charcoal: #111b21;
  --color-white: #ffffff;
  --color-green: #25d366;
  --color-dark-gray-20: rgba(17, 27, 33, 0.2);
  --color-dark-gray-40: rgba(17, 27, 33, 0.4);
  --color-near-black: #1c1e21;
  --color-blue-bright: #027eb5;
  --color-blue-secondary: #0373e9;
  --color-green-border: #43cd66;
  --color-dark-green-border: #33463f;

  /* Typography */
  --font-helvetica-neue: "Helvetica Neue", Helvetica, Arial;
  --font-system: -apple-system, system-ui, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue;
  --font-helvetica: Helvetica, Arial;

  /* Spacing */
  --space-1: 1px;
  --space-4: 4px;
  --space-6: 6px;
  --space-10: 10px;
  --space-12: 12px;
  --space-15: 15px;
  --space-16: 16px;
  --space-18: 18px;
  --space-20: 20px;
  --space-24: 24px;
  --space-32: 32px;
  --space-37: 37px;
  --space-45: 45px;
  --space-56: 56px;
  --space-70: 70px;
  --space-80: 80px;
  --space-88: 88px;
  --space-90: 90px;
  --space-96: 96px;
  --space-176: 176px;

  /* Border Radius */
  --radius-sm: 5px;
  --radius-md: 25px;
  --radius-lg: 50px;
  --radius-full: 50%;

  /* Borders */
  --border-white-1: 1px solid #ffffff;
  --border-white-2: 2px solid #ffffff;
  --border-dark-gray-20: 1px solid rgba(17, 27, 33, 0.2);
  --border-dark-gray-40: 1px solid rgba(17, 27, 33, 0.4);
  --border-near-black: 1px solid #1c1e21;
  --border-green: 1px solid #43cd66;
}

8. AI Coding Assistant Prompt

# Wa Design System Specification

You are a Wa (WhatsApp) design expert. Build UIs matching their visual language exactly.

## Brand Context
Wa's design is functional, friendly, and globally accessible. It uses high-contrast colors, safe system fonts, and rounded shapes for a cohesive feel. No shadows — depth is via borders and color contrast.

## Color Palette
- Charcoal: #111b21 — primary background for dark mode
- Pure White: #ffffff — text on dark, icon color, borders
- WhatsApp Green: #25d366 — primary action accents, hover states
- Dark Gray 20%: rgba(17, 27, 33, 0.2) — subtle dividers
- Dark Gray 40%: rgba(17, 27, 33, 0.4) — separators
- Near Black: #1c1e21 — text on light backgrounds
- Bright Blue: #027eb5 — link color variant
- Secondary Blue: #0373e9 — link color variant
- Green Border: #43cd66 — rare accent border
- Dark Green Border: #33463f — section divider border

## Typography
Fonts:
- Headings, body: "Helvetica Neue", Helvetica, Arial
- Buttons/system UI: -apple-system, system-ui, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue

Sizes:
| Level      | Size  | Weight | Line Height | Use |
|------------|-------|--------|-------------|-----|
| Heading 1  | 24px  | 400    | 1.00        | Page titles |
| Heading 1  | 23px  | 400    | 1.13        | Section titles |
| Link/H2    | 18px  | 400    | 1.39        | Sub-headings, links |
| Body       | 16px  | 400    | 1.20-1.38   | Paragraphs, buttons |
| Label      | 13px  | 600    | 1.46        | Uppercase labels |
| Caption    | 12px  | 400    | 1.20-1.34   | Meta info |

## Spacing & Grid
Base: 8px grid
Scale: 1px, 4px, 6px, 10px, 12px, 15px, 16px, 18px, 20px, 24px, 32px, 37px, 45px, 56px, 70px, 80px, 88px, 90px, 96px, 176px

## Border Radius
- sm: 5px — small anchors
- md: 25px — medium pills
- lg: 50px — pill buttons, select inputs
- full: 50% — avatars, social icons

## Shadows & Depth
Flat design — use borders and color contrast. No shadows.

## Component Specifications

### Primary Button
```css
.btn-primary {
  background: var(--color-charcoal);
  color: var(--color-white);
  padding: 16px 28px;
  border-radius: var(--radius-lg);
  border: 2px solid var(--color-white);
  font-family: var(--font-system);
  font-size: 16px;
  line-height: 1.38;
}
.btn-primary:hover {
  background: var(--color-green);
}
.btn-primary:focus {
  outline: 2px solid var(--color-white);
}
.btn-primary:disabled {
  opacity: 0.5;
}
```

### Navigation Link
```css
.nav-link {
  color: var(--color-near-black);
  text-decoration: none;
  font-weight: 400;
}
.nav-link:hover {
  text-decoration: underline;
  color: var(--color-white);
}
```

### Input Field
```css
.input-select {
  background: var(--color-charcoal);
  color: var(--color-white);
  border: 2px solid var(--color-white);
  border-radius: var(--radius-lg);
  padding: 16px 28px;
}
```

## Layout & Responsive Rules
- Responsive breakpoints: 319px, 400px, 500px, 639px, 640px, 767px, 768px, 770px, 800px, 801px, 1023px, 1024px, 1095px, 1096px, 1200px

## Interaction Rules
- Transition: 150ms ease for hover/focus changes
- Focus: solid outline matching current text/border color
- Hover: underline for links, color change for buttons

## DO List
- Use only colors from palette
- Maintain 8px-based spacing
- Use large, consistent border radii
- Keep text high-contrast
- Rely on system fonts for performance

## DON'T List
- Add shadows
- Mix sharp and rounded corners
- Invent new colors
- Reduce contrast below WCAG AA
- Use decorative fonts

## Code Examples

Primary Button:
```css
.btn-primary {
  background: #111b21;
  color: #ffffff;
  padding: 16px 28px;
  border-radius: 50px;
  border: 2px solid #ffffff;
}
.btn-primary:hover { background: #25d366; }
```

Card Container:
```css
.card {
  background: #111b21;
  border: 1px solid rgba(17, 27, 33, 0.2);
  border-radius: 25px;
  padding: 24px;
}
```

Form Input:
```css
.input {
  background: #111b21;
  color: #ffffff;
  border: 2px solid #ffffff;
  border-radius: 50px;
  padding: 16px 28px;
}
```

9. Summary

TL;DR: Wa’s design system is dark, flat, and friendly. High-contrast colors, pill-shaped components, and safe system fonts make it universal across devices and cultures. No shadows — borders do the work.

Brand Keywords:

  • high-contrast-minimal
  • globally-accessible
  • rounded-friendly
  • flat-functional
  • green-accented