Tools

Design tokens from any website as CSS variables

Enter a website address and get its design tokens as CSS custom properties: colors, type styles, spacing, radii, shadows and content width, measured from the page as it renders.

Trystripe.comlinear.appairbnb.com

airbnb.com

Measured 4 days ago.

background#ffffffsurface#ddddddsurface-2#f2f2f2foreground#222222muted-foreground#6c6c6cprimary#da1249on-primary#ffffffborder#ffffff
tokens.css
/* Design tokens extracted from https://www.airbnb.com/ (2026-10-27) */
:root {
  --color-background: #ffffff; /* Page background */
  --color-surface: #dddddd; /* Cards, panels, raised or recessed surfaces */
  --color-surface-2: #f2f2f2; /* Secondary surface */
  --color-foreground: #222222; /* Primary text */
  --color-muted-foreground: #6c6c6c; /* Secondary text, captions */
  --color-primary: #da1249; /* Candidate accent (semantic role inferred) */
  --color-on-primary: #ffffff; /* Text on the accent */
  --color-border: #ffffff; /* Hairlines, dividers, input borders */
  --font-sans: "Airbnb Cereal VF", "Inter", sans-serif;
  --font-display: "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
  /* observed; source h1 */
  --text-headline-display: 700 28px/40.04px "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
  --font-family-headline-display: "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
  --font-weight-headline-display: 700;
  --font-size-headline-display: 28px;
  --line-height-headline-display: 40.04px;
  --tracking-headline-display: normal;
  /* observed; source h2 */
  --text-headline-lg: 600 20px/24px "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
  --font-family-headline-lg: "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
  --font-weight-headline-lg: 600;
  --font-size-headline-lg: 20px;
  --line-height-headline-lg: 24px;
  --tracking-headline-lg: -0.18px;
  /* fallback; source h3; inferred: fontSize, fontFamily, fontWeight, lineHeight */
  --text-headline-md: 600 24px/1.4 "Airbnb Cereal VF", "Inter", sans-serif;
  --font-family-headline-md: "Airbnb Cereal VF", "Inter", sans-serif;
  --font-weight-headline-md: 600;
  --font-size-headline-md: 24px;
  --line-height-headline-md: 1.4;
  --tracking-headline-md: normal;
  /* fallback; source body; inferred: fontSize, fontFamily, fontWeight, lineHeight */
  --text-body-md: 400 14px/1.4 "Airbnb Cereal VF", "Inter", sans-serif;
  --font-family-body-md: "Airbnb Cereal VF", "Inter", sans-serif;
  --font-weight-body-md: 400;
  --font-size-body-md: 14px;
  --line-height-body-md: 1.4;
  --tracking-body-md: normal;
  /* observed; source label */
  --text-label-md: 400 12px/1.33 "Airbnb Cereal VF", "Inter", sans-serif;
  --font-family-label-md: "Airbnb Cereal VF", "Inter", sans-serif;
  --font-weight-label-md: 400;
  --font-size-label-md: 12px;
  --line-height-label-md: 1.33;
  --tracking-label-md: normal;
  /* observed; source button */
  --text-button: 400 14px/18px "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
  --font-family-button: "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
  --font-weight-button: 400;
  --font-size-button: 14px;
  --line-height-button: 18px;
  --tracking-button: normal;
  --space-unit: 4px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 44px;
  --space-7: 48px;
  --radius-none: 0px;
  --radius-2xl: 100px;
  --radius-xl: 20px;
  --radius-md: 8px;
  --radius-lg: 14px;
  --radius-full: 9999px;
  --radius-button: 100px;
  --radius-input: 0px;
  --radius-card: 0px;
  --shadow-1: color(srgb 0 0 0 / 0.02) 0px 0px 0px 1px, color(srgb 0 0 0 / 0.04) 0px 2px 6px 0px, color(srgb 0 0 0 / 0.1) 0px 4px 8px 0px;
  --shadow-2: rgba(0, 0, 0, 0.5) 0px -6px 15px 0px, rgba(0, 0, 0, 0.08) 0px 4px 4px 0px, rgba(0, 0, 0, 0.18) 0px 12px 15px 0px;
  --shadow-3: rgba(218, 218, 218, 0.6) 0px 0.5px 1px 0px, rgba(0, 0, 0, 0.12) 0px -0.502px 1.004px 0px, rgba(0, 0, 0, 0.04) 0px -1.5px 3.5px 0px, rgba(0, 0, 0, 0.05) 0px 3px 5px 0px, rgba(0, 0, 0, 0.2) 0px 0.75px 1px 0px inset, rgba(34, 34, 34, 0.6) 0px -0.5px 5px 1px inset, rgba(0, 0, 0, 0.16) 0.502px 0.5px 2px 0px inset, rgba(0, 0, 0, 0.12) 0px -3px 7px 0px inset, rgba(0, 0, 0, 0.05) 0.502px 2px 4px 0px inset, rgba(0, 0, 0, 0.04) 1.004px 4px 4px 0px inset, rgba(184, 72, 155, 0.2) 0px -3px 7px 0px inset;
  --shadow-4: rgba(0, 0, 0, 0.16) 0px 2px 2px 0px, rgba(255, 255, 255, 0.04) 1px 1.5px 3px 0px inset, rgba(255, 255, 255, 0.04) -1px 1.25px 3px 0px inset, rgba(255, 56, 92, 0.3) 0px -1px 3px 0px inset, rgba(0, 0, 0, 0.16) 0px -1px 2px 0px inset;
}
​
/* Load fonts.css first. Apply a complete role class, including non-shorthand font settings. */
.sp-type-headline-display {
  font: var(--text-headline-display);
  letter-spacing: var(--tracking-headline-display);
  font-style: normal;
  font-stretch: 100%;
  font-variation-settings: normal;
  font-feature-settings: normal;
  font-optical-sizing: auto;
  font-synthesis: none;
}
.sp-type-headline-lg {
  font: var(--text-headline-lg);
  letter-spacing: var(--tracking-headline-lg);
  font-style: normal;
  font-stretch: 100%;
  font-variation-settings: "DRKM" 0;
  font-feature-settings: normal;
  font-optical-sizing: auto;
  font-synthesis: none;
}
.sp-type-headline-md {
  font: var(--text-headline-md);
  letter-spacing: var(--tracking-headline-md);
  font-style: normal;
  font-stretch: normal;
  font-variation-settings: normal;
  font-feature-settings: normal;
  font-optical-sizing: auto;
  font-synthesis: none;
}
.sp-type-body-md {
  font: var(--text-body-md);
  letter-spacing: var(--tracking-body-md);
  font-style: normal;
  font-stretch: normal;
  font-variation-settings: normal;
  font-feature-settings: normal;
  font-optical-sizing: auto;
  font-synthesis: none;
}
.sp-type-label-md {
  font: var(--text-label-md);
  letter-spacing: var(--tracking-label-md);
  font-style: normal;
  font-stretch: normal;
  font-variation-settings: normal;
  font-feature-settings: normal;
  font-optical-sizing: auto;
  font-synthesis: none;
}
.sp-type-button {
  font: var(--text-button);
  letter-spacing: var(--tracking-button);
  font-style: normal;
  font-stretch: 100%;
  font-variation-settings: normal;
  font-feature-settings: normal;
  font-optical-sizing: auto;
  font-synthesis: none;
}

How it works

Stylepack opens the site in a real browser, measures what renders (not what the stylesheet says) at four widths and in both themes, and stores the result as a design pack. A site already measured answers at once; a new one takes under a minute. Every value on this page comes from that pack.

Questions

What is a design token?

A named design value (a color, a font size, a spacing step) used across a product. As CSS variables, tokens let you restyle a whole site by changing one declaration.

Where do the names come from?

From the role each value plays on the measured page: --color-primary is the accent, --text-headline-lg a heading style, --space-4 a spacing step. The pack's tokens.json carries the same names in the W3C format.

Is this the whole design system?

It is the values. The design pack adds the behavior (hover, focus, menus, motion, responsive layout, dark mode), the component recipes and screenshots, in the form AI coding agents build from.