---
name: spotify-design-reference
provider: DesignSkill (https://designskill.dev)
reference: open.spotify.com
source_url: https://open.spotify.com/
tool: designskill-extract/3.2.0
extracted_at: 2026-07-27T08:31:56.695Z
mode: full-render
classification: reference_only
---

# Spotify — Design Reference (measured)

Measured design tokens extracted from `https://open.spotify.com/` by designskill-extract/3.2.0.
Every value below was observed in the live page (×N = observation count). Values not listed were **not observed** — do not invent them.
This document is `reference_only`: an analysis of a third-party site, not a license to its brand assets.

## Overview

- Extraction mode: **full-render** (viewports 390/768/1440px × light/dark), 1 page(s), 342 observation records.
- Primary action color observed as `#1ed760` (basis: cross-validated, confidence 0.95).
- Dominant font family: **SpotifyMixUI** (×732; secondary SpotifyMixUITitle ×38).
- Type scale observed at 8 sizes from 10px to 24px.
- Corner radius values in use: 4px, 6px, 8px, 2px….
- Not observed in this extraction: nav, forms, cards, badges.

## Colors

### Role Tokens

Semantic roles inferred from observed usage. `basis` tells how the role was established (declared CSS var > cross-validated > inferred).

| Token | Value | Basis | Confidence | Observed |
|---|---|---|---|---|
| `{color.primary}` | `#1ed760` | cross-validated | 0.95 | ×36 |
| `{color.background}` | `#282828` | declared | 0.92 | ×0 — --generic-tooltip-background-color |
| `{color.ink}` | `#ffffff` | cross-validated | 0.94 | ×706 |
| `{color.muted}` | `#939393` | inferred | 0.7 | ×18 |
| `{color.surface}` | `#121212` | inferred | 0.7 | ×120 |
| `{color.accent}` | `#1ed760` | declared | 0.9 | ×36 — --text-bright-accent |

### Observed Palette

Full measured palette ordered by usage share. `Used in` lists the CSS properties the color appeared on.

| Hex | Share | Used in | Observed |
|---|---|---|---|
| `#ffffff` | 55.7% | color, background-color, border-color, --text-base, --background-highlight | ×706 (cross-validated, 0.94) |
| `#b3b3b3` | 13.6% | color, --text-subdued, custom-property | ×173 (cross-validated, 0.92) |
| `#121212` | 9.5% | background-color, --background-base, custom-property, --background-highlight | ×120 (cross-validated, 0.92) |
| `#000000` | 6.6% | background-color, color, filter | ×83 (cross-validated, 0.91) |
| `#1ed760` | 2.8% | color, background-color, --text-bright-accent, custom-property, --background-highlight | ×36 (cross-validated, 0.9) |
| `#939393` | 1.4% | color | ×18 (observed, 0.74) |
| `#a7a7a7` | 1.3% | color, background-color, --text-subdued | ×17 (inferred, 0.59) |
| `#2a2a2a` | 2.7% | background-color, --background-elevated-highlight, custom-property, --decorative-subdued, border-color | ×34 (cross-validated, 0.9) |
| `#535353` | 0.5% | background-color, color, border-color | ×7 (inferred, 0.58) |
| `#1f1f1f` | 0.5% | --decorative-subdued, custom-property | ×7 (inferred, 0.58) |
| `#0d72ea` | 0.7% | background-color, color, --background-base, custom-property, --background-highlight | ×9 (inferred, 0.58) |
| `#1abc54` | 0.8% | --background-press, custom-property, color | ×10 (inferred, 0.58) |
| `#ffa42b` | 0.3% | --background-base, custom-property | ×4 (inferred, 0.57) |
| `#dedede` | 0.3% | --decorative-subdued | ×4 (inferred, 0.57) |
| `#f0f0f0` | 0.2% | --background-highlight | ×3 (inferred, 0.57) |
| `#343434` | 0.5% | --background-press, background-color | ×6 (inferred, 0.58) |

## Typography

### Font Families

| Family | Observed |
|---|---|
| `SpotifyMixUI` | ×732 |
| `SpotifyMixUITitle` | ×38 |
| `CircularSp-Deva` | ×3 |
| `CircularSp-Grek` | ×3 |
| `CircularSp-Arab` | ×3 |
| `CircularSp-Cyrl` | ×3 |

Use **SpotifyMixUI** as the default family — it accounts for the overwhelming majority of observed text nodes.

### Type Scale

| Token | Size | Observed |
|---|---|---|
| `{type.display}` | 24px | ×3 |
| `{type.h1}` | 20px | ×12 |
| `{type.h2}` | 18px | ×4 |
| `{type.h3}` | 16px | ×717 |
| `{type.body-lg}` | 14px | ×4 |
| `{type.body}` | 13px | ×28 |
| `{type.body-sm}` | 11px | ×13 |
| `{type.caption}` | 10px | ×3 |

The most frequently observed size is **16px** (×717) — treat it as the default body size.

## Spacing

| Value | Observed |
|---|---|
| `8px` | ×674 |
| `2px` | ×168 |
| `16px` | ×159 |
| `12px` | ×70 |
| `24px` | ×59 |
| `4px` | ×45 |
| `32px` | ×25 |
| `20px` | ×15 |
| `40px` | ×12 |
| `56px` | ×11 |
| `72px` | ×8 |
| `10px` | ×6 |

## Shape (Border Radius)

| Value | Observed |
|---|---|
| `4px` | ×526 |
| `6px` | ×168 |
| `8px` | ×10 |
| `2px` | ×10 |
| `16px` | ×6 |

## Elevation

| Shadow | Observed |
|---|---|
| `var(--encore-overlay-box-shadow)` | ×4 |
| `var(--encore-focus-box-shadow)` | ×4 |
| `0 4px 40px rgba(0,0,0,.3)` | ×1 |
| `0 16px 24px rgba(0,0,0,.3),0 6px 8px rgba(0,0,0,.2)` | ×1 |
| `0 4px 12px 0 rgba(0,0,0,.3)` | ×1 |
| `0 3px 0 0` | ×1 |

## Motion

| Duration | Observed |
|---|---|
| `0.15s` | ×186 |
| `0.1s` | ×46 |
| `.4s` | ×10 |
| `0.4s` | ×6 |
| `.2s` | ×3 |

### Hero Gradient (observed)

```css
background-image: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.9), rgb(18, 18, 18));
```

## Accessibility (WCAG Contrast)

| FG | BG | Ratio | AA | Source |
|---|---|---|---|---|
| `#ffffff` | `#121212` | 18.73 | pass | observed ×284 |
| `#b3b3b3` | `#121212` | 8.93 | pass | observed ×78 |
| `#939393` | `#2a2a2a` | 4.67 | pass | observed ×9 |
| `#ffffff` | `#2a2a2a` | 14.35 | pass | observed ×6 |
| `#000000` | `#ffffff` | 21 | pass | observed ×3 |
| `#000000` | `#1ed760` | 10.94 | pass | observed ×3 |
| `#ffffff` | `#282828` | 14.74 | pass | ink_on_background |
| `#ffffff` | `#1ed760` | 1.92 | fail | white_on_primary |
| `#939393` | `#282828` | 4.8 | pass | muted_on_background |

1 measured pair(s) fail AA — if you reuse those pairs, adjust lightness until the ratio reaches 4.5:1.

## Usage Rules

### Do
- Use `{color.primary}` (`#1ed760`) for primary actions only — that is where it was observed.
- Default text pairing: `{color.ink}` (`#ffffff`) on `{color.background}` (`#282828`).
- Set all text in `SpotifyMixUI` (fallbacks only for glyph coverage).
- Pick corner radii from the measured set (4px, 6px, 8px, 2px) — no intermediate values were observed.
- Cite this file's token names (`{color.*}`, `{type.*}`) when generating UI so output stays traceable to observations.

### Don't
- Don't invent colors, sizes, shadows, or spacing not listed above — absence means *not observed*, and this document records observations only.
- Don't assume the missing blocks (nav, forms, cards, badges) don't exist on the site — they were simply not captured in this run.
- Don't copy brand assets (logo, wordmark, imagery, copy) — `reference_only` covers measured style values, not brand identity.

## Provenance

- Source: https://open.spotify.com/ (1 page(s))
- Tool: designskill-extract/3.2.0 · extracted 2026-07-27T08:31:56.695Z
- Mode: full-render — 풀렌더 모드 — 3뷰포트 × 라이트/다크 computed style + 상태 관측.
- Blocks observed: 01, 02, 03, 04, 05, 09, 10, 11, 12 · missing: nav, forms, cards, badges

---

<sub>Generated & served by [DesignSkill](https://designskill.dev)</sub>
