Airbnb Design Tokens
Online marketplace for lodging and experiences
Image gallery lazy loading
Observed with Dembrandt. Semantic roles, gradients, and breakpoints come from live extractions where available; contrast is computed from the real palette. Try the CLI for the complete W3C token export.
Design tokens observed from publicly visible CSS. Dembrandt does not host, copy, or redistribute any brand assets.
Colors
#ff385c
#222222
#6a6a6a
#ebebeb
#f7f7f7
#ffffff
primary#ff385c
background#ffffff
text#222222
Typography
Airbnb Cereal VF, Circular, sans-serif
hero:28px / 700
body:16px / 400
button:14px / 600
weights:400, 600, 700
leading:1, 1.1, 1.4, 1.6
tracking:-0.02em, 0, 0.04em
Shadows
sm
md
lg
Spacing
4px8px12px16px24px32px
Border Radius
8px
14px
32px
50%
Borders
1px solid #dddddd
1px solid rgba(255, 255, 255, 0.5)
Links
Link text#222222 · no underline
Gradients
linear-gradient(#ffffff 39.9%, #f8f8f8 100%)
Opacity
0
0.04
0.08
0.16
0.4
0.64
0.92
1
Breakpoints
320px480px768px1024px1280px1920px
Motion
Duration120ms180ms280ms420ms
Easingcubic-bezier(0.4, 0, 0.2, 1)cubic-bezier(0.16, 1, 0.3, 1)linear
Contrast · WCAG 2.2
Aa
Button label
3.52:1
Aa
Body text
15.91:1
Button States
React + Next.jsDefault
#ff385cHover
#e00b41Active
#c40036Focus
focusDisabled
disabledLoading
loadingradius: 8pxpadding: 14px 24px
output.json
{
"$schema": "https://design-tokens.org/schema.json",
"color": {
"palette-1": {
"$type": "color",
"$value": "#ff385c"
},
"palette-2": {
"$type": "color",
"$value": "#222222"
},
"palette-3": {
"$type": "color",
"$value": "#6a6a6a"
},
"palette-4": {
"$type": "color",
"$value": "#ebebeb"
},
"palette-5": {
"$type": "color",
"$value": "#f7f7f7"
},
"palette-6": {
"$type": "color",
"$value": "#ffffff"
},
"primary": {
"$type": "color",
"$value": "#ff385c"
},
"background": {
"$type": "color",
"$value": "#ffffff"
},
"text": {
"$type": "color",
"$value": "#222222"
},
"link": {
"$type": "color",
"$value": "#222222"
}
},
"border": {
"border-1": {
"$type": "border",
"$value": "1px solid #dddddd"
},
"border-2": {
"$type": "border",
"$value": "1px solid rgba(255, 255, 255, 0.5)"
}
},
"gradient": {
"gradient-1": {
"$type": "gradient",
"$value": "linear-gradient(#ffffff 39.9%, #f8f8f8 100%)"
}
},
"fontFamily": {
"base": {
"$type": "fontFamily",
"$value": "Airbnb Cereal VF, Circular, sans-serif"
}
},
"fontWeight": {
"weight-400": {
"$type": "fontWeight",
"$value": 400
},
"weight-600": {
"$type": "fontWeight",
"$value": 600
},
"weight-700": {
"$type": "fontWeight",
"$value": 700
}
},
"dimension": {
"space-1": {
"$type": "dimension",
"$value": "4px"
},
"space-2": {
"$type": "dimension",
"$value": "8px"
},
"space-3": {
"$type": "dimension",
"$value": "12px"
},
"space-4": {
"$type": "dimension",
"$value": "16px"
},
"space-5": {
"$type": "dimension",
"$value": "24px"
},
"space-6": {
"$type": "dimension",
"$value": "32px"
},
"radius-1": {
"$type": "dimension",
"$value": "8px"
},
"radius-2": {
"$type": "dimension",
"$value": "14px"
},
"radius-3": {
"$type": "dimension",
"$value": "32px"
},
"radius-4": {
"$type": "dimension",
"$value": "50%"
}
},
"shadow": {
"shadow-1": {
"$type": "shadow",
"$value": "0 1px 2px rgba(0,0,0,0.08)"
},
"shadow-2": {
"$type": "shadow",
"$value": "0 6px 20px rgba(0,0,0,0.12)"
},
"shadow-3": {
"$type": "shadow",
"$value": "0 16px 40px rgba(0,0,0,0.2)"
}
},
"opacity": {
"opacity-0": {
"$type": "number",
"$value": 0
},
"opacity-1": {
"$type": "number",
"$value": 0.04
},
"opacity-2": {
"$type": "number",
"$value": 0.08
},
"opacity-3": {
"$type": "number",
"$value": 0.16
},
"opacity-4": {
"$type": "number",
"$value": 0.4
},
"opacity-5": {
"$type": "number",
"$value": 0.64
},
"opacity-6": {
"$type": "number",
"$value": 0.92
},
"opacity-7": {
"$type": "number",
"$value": 1
}
},
"duration": {
"duration-1": {
"$type": "duration",
"$value": "120ms"
},
"duration-2": {
"$type": "duration",
"$value": "180ms"
},
"duration-3": {
"$type": "duration",
"$value": "280ms"
},
"duration-4": {
"$type": "duration",
"$value": "420ms"
}
},
"cubicBezier": {
"ease-1": {
"$type": "cubicBezier",
"$value": "cubic-bezier(0.4, 0, 0.2, 1)"
},
"ease-2": {
"$type": "cubicBezier",
"$value": "cubic-bezier(0.16, 1, 0.3, 1)"
},
"ease-3": {
"$type": "cubicBezier",
"$value": "linear"
}
},
"breakpoint": {
"bp-1": {
"$type": "dimension",
"$value": "320px"
},
"bp-2": {
"$type": "dimension",
"$value": "480px"
},
"bp-3": {
"$type": "dimension",
"$value": "768px"
},
"bp-4": {
"$type": "dimension",
"$value": "1024px"
},
"bp-5": {
"$type": "dimension",
"$value": "1280px"
},
"bp-6": {
"$type": "dimension",
"$value": "1920px"
}
},
"contrast": {
"button-label": {
"ratio": 3.52,
"grade": "AA Large"
},
"body-text": {
"ratio": 15.91,
"grade": "AAA"
}
}
}
// ...and moreOther token exports
--dtcgW3C token JSON, checked by the DTCG Validator
--design-mdDESIGN.md for agents and docs
--brand-guideBrand guide PDF
--wcagPalette-wide contrast report
All flags in the CLI quickstart. Same tokens in your editor via the MCP server.
$npx dembrandt airbnb.com