Airbnb Brand Design System Deep Dive
1. Brand Overview
Airbnb’s design system is built to feel warm, human, and approachable — but with precision that makes it scale globally. This isn’t a tech company that hides behind sterile grids and corporate blues. It’s a hospitality brand that sells experiences, not just rooms. The design language has to make you feel safe enough to book a stranger’s apartment yet inspired enough to dream about adventures.
The vibe: bright primary red-pink (#FF385C) that’s unmistakable in the marketplace. Soft neutrals. Rounded corners everywhere — nothing feels sharp or hostile. Typography is custom (“Airbnb Cereal VF”), which gives them control over personality and legibility in every language. There’s a clear 8px spacing logic, but they sneak in half-steps like 5.5px and 2px for micro-alignment. That’s a sign of obsessive refinement.
Who’s this for? Travelers, hosts, and anyone who interacts with the platform on any device. The system has to work from mobile app to web to email. They need consistent tokens so that a “Book” button feels the same in Tokyo as it does in Paris.
Design philosophy: human-first, detail-obsessed, scalable. Every color, radius, and shadow plays a role in building trust and emotional connection. Nothing is purely decorative — even gradients have semantic meaning (core, luxe, plus tiers).
2. Color System
2.1 Primary Colors
The primary brand color is #FF385C — a saturated pinkish-red. It’s not pure red (too aggressive) and not pure pink (too soft). This is a confident, emotional color. It conveys warmth, excitement, and passion without drifting into danger or romance clichés.
Compared to competitors:
- Booking.com leans into deep blue (trust, stability).
- Expedia uses yellow (optimism).
- Airbnb’s red-pink stands out in feeds and app grids. It’s instantly recognizable.
They use gradients (#E61E4D → #D70466) to add depth and tier differentiation. Luxe offerings get a deep purple gradient (#59086E → #440589).
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Bg Primary Core | #FF385C | Primary brand | CTAs, primary buttons |
| Bg Secondary Core RTL | linear-gradient(to left,#E61E4D 0%,#E31C5F 50%,#D70466 100%) | Gradient brand variant | Large hero buttons, premium CTAs |
| Bg Tertiary Core | #E00B41 | Accent | Alternate actions, hover states |
| Text Secondary Error Hover | #B32505 | Functional | Hover state for error links |
| Bg Secondary Core Hover | radial-gradient(circle at center,#FF385C → #BD1E59) | Interaction | Hover effects |
| Bg Quaternary | #F2F2F2 | Neutral background | Cards, secondary surfaces |
| Bg Primary Luxe | #460479 | Premium tier | Luxe category CTAs |
| Bg Secondary Luxe RTL | linear-gradient(to left,#59086E → #440589) | Premium gradient | Luxe hero banners |
| Text Primary Core | linear-gradient(to right,#E61E4D → #D70466) | Gradient text | Premium headings |
| Bg Secondary Plus Hover | radial-gradient(circle at center,#D70466 → #6C0D63) | Interaction | Plus tier hover states |
| Bg Quaternary Hover | #EBEBEB | Neutral hover | Card hover |
| Material Thick BG | rgba(240,240,240,0.86) | Overlay | Modal backgrounds |
| Text Material Disabled | rgba(0,0,0,0.24) | Disabled text | Inputs, buttons |
| Text Primary Error | #C13515 | Error | Error messages |
| Bg Tertiary | #B0B0B0 | Neutral mid-tone | Dividers |
| Bg Tertiary Hover | #6A6A6A | Hover neutral | Icon hovers |
| Bg Secondary Plus | linear-gradient(to right,#BD1E59 → #861453) | Gradient | Plus tier CTAs |
| Bg Primary Plus | #92174D | Accent | Plus tier solid buttons |
| Text Legal | #428BFF | Legal links | Footer legal links |
| Bg Secondary Luxe | linear-gradient(to right,#59086E → #440589) | Premium gradient | Luxe CTAs |
| Bg Secondary Luxe Hover | radial-gradient(circle at center,#6C0D63 → #3B07BB) | Premium hover | Luxe hover states |
| Text Link Disabled | #929292 | Disabled links | Footer, disabled nav |
| Text Focused | #3F3F3F | Focus state | Active input text |
| Text Primary | #222222 | Body text | Main content |
| rgb(193,193,193) | #C1C1C1 | Neutral | Icons, borders |
| rgb(255,255,255) | #FFFFFF | Surface | Backgrounds, text on dark |
| rgb(221,221,221) | #DDDDDD | Divider | Thin lines |
| rgb(247,247,247) | #F7F7F7 | Hover background | Soft hover |
2.3 Color Relationships
Contrast: Primary text #222222 on #FFFFFF background is 15.9:1 — plenty of contrast. Primary buttons (#FF385C) on white meet WCAG AA easily. Gradients are strong; need careful text color pairing (usually white).
Dark mode: Not explicitly in extracted data, but gradients and high-contrast neutrals suggest they could invert easily.
2.4 Usage Guide
- Pair
#FF385Cwith white for maximum CTA clarity. - Gradients for premium tiers — don’t use them for everyday buttons.
- Neutral grays (
#C1C1C1,#DDDDDD) for dividers and icons — avoid mixing with bright brand colors unless for disabled states. - Error red (
#C13515) only for error messaging, not warnings.
3. Typography
3.1 Font Families
Primary: Airbnb Cereal VF — custom variable font. Fallbacks: Circular, -apple-system, system-ui, Roboto, Helvetica Neue. No Google or Adobe fonts; full control.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| heading-1 | Airbnb Cereal VF | 28px | 700 | 1.43 |
| heading-1 | Airbnb Cereal VF | 22px | 500 | 1.18 |
| heading-1 | Airbnb Cereal VF | 21px | 700 | 1.43 |
| heading-1 | Airbnb Cereal VF | 20px | 600 | 1.20 |
| button | Airbnb Cereal VF | 16px | 500 | 1.25 |
| heading-1 | Airbnb Cereal VF | 16px | 500 | 1.25 |
| link | Airbnb Cereal VF | 14px | 400 | 1.43 |
| caption | Airbnb Cereal VF | 14px | 400 | 1.43 |
| caption | Airbnb Cereal VF | 14px | 600 | 1.29 |
| button | Airbnb Cereal VF | 14px | 400 | 1.43 |
| button | Airbnb Cereal VF | 14px | 500 | 1.29 |
| caption | Airbnb Cereal VF | 14px | 500 | 1.29 |
| caption | Airbnb Cereal VF | 13px | 400 | 1.23 |
| caption | Airbnb Cereal VF | 12px | 400 | 1.33 |
| caption | Airbnb Cereal VF | 12px | 700 | 1.33 |
| caption | Airbnb Cereal VF | 11px | 600 | 1.18 |
| caption | Airbnb Cereal VF | 8px | 400 | 1.43 |
| caption | Airbnb Cereal VF | 8px | 700 | 1.25 |
3.3 Hierarchy
Headings jump from 28px bold to 20px semi-bold — clear steps. Body and captions hover around 14px for UI density. Micro text at 8px (!) for badges — uppercase with letter spacing for legibility.
4. Spacing & Layout
4.1 Spacing Scale
Base: 8px grid. But they use fractional values (5.5px) for fine-tuning.
| Value | Count | Usage |
|---|---|---|
| 2px | 80 | Icon spacing, hairline gaps |
| 3px | 4 | Rare micro-alignments |
| 4px | 176 | Small padding, tight UI |
| 5.5px | 134 | Button icon gaps |
| 6px | 24 | Icon padding |
| 7px | 2 | Rare |
| 8px | 19 | Base spacing |
| 10px | 14 | Small component padding |
| 11px | 2 | Rare |
| 12px | 174 | Button padding, card gaps |
| 15px | 2 | Rare |
| 16px | 3 | Medium padding |
| 24px | 2 | Section padding |
| 28px | 2 | Section headings |
| 32px | 16 | Card padding |
| 48px | 4 | Large spacing |
| 49px | 1 | Odd case |
| 80px | 1 | Hero spacing |
4.2 Layout
Breakpoints from 99px to 2560px — highly responsive. They clearly test for dozens of specific device widths.
5. Visual Elements
Border Radius
| Value | Count | Elements |
|---|---|---|
| 0px 1.5px 1.5px 0px | 1 | span |
| 1.5px 0px 0px 1.5px | 1 | span |
| 2px | 28 | a |
| 4px | 1 | button |
| 4px 40px 40px 4px | 1 | button |
| 8px | 28 | a, tab, button |
| 10px 10px 10px 2px | 2 | span |
| 14px | 67 | div |
| 20px | 241 | button, group, a, div |
| 24px | 1 | div |
| 40px | 2 | search, div |
| 40px 4px 4px 40px | 1 | button |
| 50% | 111 | avatars, icons |
Rounded corners are everywhere. 20px is the workhorse radius.
Shadows
Primary shadow: rgba(0,0,0,0.02) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 6px, rgba(0,0,0,0.1) 0px 4px 8px — subtle depth. No heavy drop shadows.
6. Components
6.1 Buttons
Variant 1 (Pill-ish with asymmetric radius):
Default: transparent bg, #222 text, 40px 4px 4px 40px radius, no shadow.
Hover: #EBEBEB bg, shadow, border.
Active: same bg, scale down, white + gray outline rings.
Focus: transparent border, 2px shadow, bg var(--palette-bg-primary-error).
Variant 2 (Circular icon button):
Default: #F2F2F2 bg, #222 text, 50% radius.
Hover/Active/Focus: same as above.
6.2 Links
Three styles:
- Black (
#222) text, no decoration. - Brand red (
#FF385C), no decoration. - Gray (
#6A6A6A), no decoration.
Hover: color inheritance, still no underline.
6.3 Forms
No text inputs in extracted data — likely styled similarly to neutral buttons with clear focus rings.
7. Design Tokens
:root {
/* Colors */
--palette-bg-primary-core: #FF385C;
--palette-bg-tertiary-core: #E00B41;
--palette-text-secondary-error-hover: #B32505;
--palette-bg-quaternary: #F2F2F2;
--palette-bg-primary-luxe: #460479;
--palette-text-primary-error: #C13515;
--palette-bg-tertiary: #B0B0B0;
--palette-bg-tertiary-hover: #6A6A6A;
--palette-bg-primary-plus: #92174D;
--palette-text-legal: #428BFF;
--palette-text-link-disabled: #929292;
--palette-text-focused: #3F3F3F;
--palette-text-primary: #222222;
--neutral-c1: #C1C1C1;
--neutral-white: #FFFFFF;
--neutral-dd: #DDDDDD;
--neutral-f7: #F7F7F7;
/* Typography */
--font-family-primary: "Airbnb Cereal VF", Circular, -apple-system, system-ui, Roboto, "Helvetica Neue";
--font-size-h1: 28px;
--font-size-h2: 22px;
--font-size-body: 14px;
--font-size-caption: 12px;
--font-size-micro: 8px;
/* Spacing */
--space-2: 2px;
--space-4: 4px;
--space-5_5: 5.5px;
--space-8: 8px;
--space-12: 12px;
--space-16: 16px;
--space-24: 24px;
--space-32: 32px;
--space-48: 48px;
--space-80: 80px;
/* Radius */
--radius-sm: 2px;
--radius-md: 8px;
--radius-lg: 14px;
--radius-xl: 20px;
--radius-full: 50%;
/* Shadows */
--shadow-primary: rgba(0, 0, 0, 0.02) 0px 0px 0px 1px, rgba(0, 0, 0, 0.04) 0px 2px 6px, rgba(0, 0, 0, 0.1) 0px 4px 8px;
}8. AI Coding Assistant Prompt
# Airbnb Design System Specification
You are an Airbnb design expert. Build UIs matching their visual language exactly.
## Brand Context
Airbnb’s design language is human-first, warm, and detail-oriented. Rounded corners, subtle shadows, and a strong primary red-pink define its look. Typography is custom and consistent across all touchpoints.
## Color Palette
- Primary Core: #FF385C — CTAs, primary buttons
- Tertiary Core: #E00B41 — Accent actions
- Secondary Error Hover: #B32505 — Error link hover
- Quaternary: #F2F2F2 — Surfaces
- Primary Luxe: #460479 — Luxe tier CTAs
- Primary Error: #C13515 — Error messages
- Tertiary: #B0B0B0 — Neutral dividers
- Tertiary Hover: #6A6A6A — Neutral hover
- Primary Plus: #92174D — Plus tier buttons
- Legal: #428BFF — Legal footer links
- Link Disabled: #929292 — Disabled links
- Focused: #3F3F3F — Focus text
- Text Primary: #222222 — Body text
- Neutral C1: #C1C1C1 — Icons, borders
- White: #FFFFFF — Background
- Neutral DD: #DDDDDD — Dividers
- Neutral F7: #F7F7F7 — Hover background
## Typography
Font: "Airbnb Cereal VF", Circular, -apple-system, system-ui, Roboto, "Helvetica Neue"
| Level | Size | Weight | Line Height | Use |
|-------|------|--------|-------------|-----|
| H1 | 28px | 700 | 1.43 | Page titles |
| H2 | 22px | 500 | 1.18 | Section headings |
| Body | 14px | 400 | 1.43 | Paragraphs |
| Caption | 12px | 400/700 | 1.33 | Labels |
| Micro | 8px | 700 | 1.25 | Badges |
## Spacing & Grid
Base: 8px. Values: 2, 4, 5.5, 8, 12, 16, 24, 32, 48, 80
Use multiples for padding, margins, gaps.
## Border Radius
- sm: 2px — small links
- md: 8px — cards, tabs
- lg: 14px — div containers
- xl: 20px — buttons, groups
- full: 50% — avatars, circular buttons
## Shadows & Depth
Primary: rgba(0,0,0,0.02) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 6px, rgba(0,0,0,0.1) 0px 4px 8px
## Components
### Primary Button
Default:
```css
background: transparent;
color: #222222;
border-radius: 40px 4px 4px 40px;
border: 1px solid transparent;
font-size: 14px;
font-weight: 400;
```
Hover: background #EBEBEB, shadow var(--shadow-primary), border 1px solid #DDDDDD
Active: scale(0.9375), outline rings
Focus: outline 0, box-shadow 0 0 0 2px #3F3F3F, background #C13515
### Secondary Button
Circular:
Default: background #F2F2F2, radius 50%, no border
Same hover/active/focus as primary
### Navigation Links
Default: color #222 or #FF385C, no underline
Hover: inherit color, no underline
## Layout & Responsive Rules
Breakpoints: 99px → 2560px. Test at all common device widths.
## Interaction Rules
State changes: 150ms ease
Focus: 2px solid #3F3F3F or box-shadow token
Hover: subtle bg change, no drastic color shifts
## DO
- Use only palette colors
- Maintain 8px grid with fine adjustments
- Keep rounded corners consistent
- Use Airbnb Cereal VF for all text
- Apply shadows sparingly
## DON'T
- Invent new colors
- Use heavy drop shadows
- Mix sharp and rounded corners
- Underline links
- Overuse gradients outside tiered CTAs
## Code Examples
Primary Button:
```css
.btn-primary {
background: #FF385C;
color: #FFFFFF;
padding: 12px 24px;
border-radius: 20px;
font-weight: 500;
font-size: 14px;
border: none;
transition: background 150ms ease;
}
.btn-primary:hover { background: #E61E4D; }
```
Card:
```css
.card {
background: #FFFFFF;
border-radius: 14px;
padding: 32px;
box-shadow: var(--shadow-primary);
}
```
Input:
```css
.input {
border: 1px solid #DDDDDD;
border-radius: 8px;
padding: 8px 12px;
font-size: 14px;
}
.input:focus { border-color: #FF385C; outline: none; }
```9. Summary
TL;DR Airbnb’s design system is emotional but disciplined. Primary red-pink dominates CTAs, custom typography keeps brand voice consistent, and rounded corners plus subtle shadows make it feel friendly.
Brand Keywords: warm-humanist, global-scalable, rounded-friendly, detail-obsessive