Spotify Brand Design System Deep Dive
1. Brand Overview
Spotify’s interface isn’t trying to be neutral. It’s opinionated. The vibe is unmistakably “music-first” — dark, saturated, high-contrast, with neon-like accents that pop against a black canvas. This is a design language that says: “You're here for the music, let's keep you in that mood.”
The primary green (#1ed760) is their signature — it’s not muted, not pastel. It’s loud. In an ocean of tech brands leaning toward soft blues and grays, Spotify chooses a shade that feels energizing, almost kinetic. It’s a color that jumps out of your peripheral vision on a dark background, perfect for play buttons, CTAs, and brand marks.
The typography stack is custom (SpotifyMixUI and SpotifyMixUITitle), with fallbacks across multiple language scripts. That tells you they care about global consistency — the UI should feel “Spotify” whether you’re in Tokyo or São Paulo. The type has a geometric, modern feel with generous weight control, supporting both bold headlines and subdued captions.
The layout system is rigid in a good way: an 8px base grid, and they stick to it. Spacing tokens from 1px all the way to 171.5px (yes, oddly specific) are used with intention. Breakpoints cover everything from micro layouts (95px) to large desktop (1280px), signaling a responsive approach that still allows for very small embedded contexts (think mini-player).
UI elements are rounded — aggressively so in some cases. Avatars and pill buttons get a 9999px radius. Search bars and big interactive pills go up to 500px radius. This is not a sharp-corner brand. Even the square-ish elements are softened.
Shadows are subtle but present. Dark, semi-transparent glows (rgba(0,0,0,0.5)) are used to lift elements just enough without breaking the dark mode immersion.
This is a design system for a product that lives in the background of your life — it wants to feel immersive but not distracting. The interface supports long engagement sessions without visual fatigue, while still being visually distinctive enough to be instantly recognizable.
2. Color System
2.1 Primary Colors
The primary is Spotify Green: rgb(30, 215, 96) → #1ed760.
Psychologically, this green feels fresh, energetic, and action-oriented. It’s brighter than typical “success” greens and sits closer to the neon spectrum. Competitors like Apple Music use pink/red accents; YouTube Music leans into red; Spotify’s green stands apart in the music app space.
This green is almost always paired with black or very dark gray backgrounds. That contrast makes it scream without being gaudy. It’s also a signal color: “Play,” “Sign Up,” “Go Premium” — all tend to be green.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Primary Green | #1ed760 | Brand / CTA | Play buttons, primary CTAs, brand accents |
| Light Gray | #b3b3b3 | Secondary text | Subdued labels, inactive icons |
| Black | #000000 | Background / text | Page background, body text |
| Medium Gray | #696969 | Secondary UI | Category headers |
| Darker Gray | #555555 | Controls / borders | Close icons, link buttons |
| Charcoal | #2a2a2a | Hover/focus background | Dark hover states |
| Almost Black | #222222 | Hover/focus background | Darker hover |
| White | #ffffff | Text / icon | Text on dark backgrounds, icons |
| Deep Gray | #1f1f1f | Hover/focus background | Button states |
| Gradient Bottom | #181818 | Background gradient | Dark mode canvas |
2.3 Color Relationships
The UI is built for dark mode first. Black (#000) and near-black backgrounds dominate, with gray scales for secondary content. The primary green is the only major saturated color in regular use. Blue (rgb(30, 174, 219)) appears in hover/focus states for certain buttons — a secondary accent.
Contrast ratios are strong: white text on black is WCAG AAA-compliant. Green on black is also highly accessible for large text. The only potential accessibility issue is light gray (#b3b3b3) on black — it’s legible but borderline for small text.
2.4 Usage Guide
- Works well: Green + black, white + black, blue hover on dark backgrounds.
- Avoid: Green on white — kills the vibrancy. Light gray on green — poor contrast.
- Secondary accents: Blue for hover/focus, used sparingly to keep green as the hero.
3. Typography
3.1 Font Families
Two main families:
- SpotifyMixUITitle — Bold, geometric. Used for headings and prominent links.
- SpotifyMixUI — Regular and bold weights. Used for body text, captions, buttons.
Fallback stack:
CircularSp-Arab, CircularSp-Hebr, CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva, Helvetica Neue, helvetica, arial, Hiragino Sans, Hiragino Kaku Gothic ProN, Meiryo, MS Gothic
No Google Fonts or Adobe Fonts — these are custom fonts served in-app.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| heading-1 | SpotifyMixUITitle | 24px | 700 | — |
| link | SpotifyMixUITitle | 24px | 700 | — |
| link | SpotifyMixUI | 16px | 400 | — |
| heading-1 | SpotifyMixUI | 16px | 400 | — |
| button | SpotifyMixUI | 16px | 700 | — |
| heading-1 | SpotifyMixUI | 16px | 700 | — |
| button | SpotifyMixUI | 16px | 400 | — |
| button | SpotifyMixUI | 16px | 400 | — |
| button | SpotifyMixUI | 14.4px | 400 | 2.64 |
| button | SpotifyMixUI | 14.4px | 700 | 1.00 |
| link | SpotifyMixUI | 14px | 700 | — |
| caption | SpotifyMixUI | 14px | 700 | — |
| button | SpotifyMixUI | 14px | 700 | — |
| caption | SpotifyMixUI | 14px | 400 | — |
| link | SpotifyMixUI | 14px | 400 | — |
| caption | SpotifyMixUI | 14px | 600 | 1.50 |
| caption | SpotifyMixUI | 13.6px | 400 | — |
| button | SpotifyMixUI | 13.3333px | 400 | — |
| caption | SpotifyMixUI | 13.3333px | 400 | — |
| link | SpotifyMixUI | 12.992px | 400 | 1.50 |
| caption | SpotifyMixUI | 12.992px | 400 | 1.50 |
| caption | SpotifyMixUI | 12px | 400 | — |
| link | SpotifyMixUI | 12px | 700 | — |
| button | SpotifyMixUI | 12px | 700 | 1.00 |
| link | SpotifyMixUI | 12px | 400 | — |
| caption | SpotifyMixUI | 11px | 400 | — |
| caption | SpotifyMixUI | 10.5px | 600 | 1.33 |
3.3 Hierarchy
The jump from 24px bold to 16px regular is sharp — headings really stand out. Buttons often use bold 16px, giving them strong presence. Captions drop to 12–14px, often with medium (600) weight for emphasis. This keeps UI text crisp and readable at small sizes.
4. Spacing & Layout
4.1 Spacing Scale
Base: 8px grid. They use multiples and fractions of this.
| Value (px) | Rem | Count | Usage |
|---|---|---|---|
| 1 | 0.06rem | 7 | Hairline spacing |
| 2 | 0.13rem | 15 | Tight gaps |
| 3 | 0.19rem | 1 | Rare |
| 4 | 0.25rem | 12 | Icon padding |
| 5 | 0.31rem | 4 | Micro offsets |
| 6 | 0.38rem | 2 | Small gap |
| 7 | 0.44rem | 1 | Rare |
| 8 | 0.50rem | 107 | Base unit |
| 10 | 0.63rem | 23 | Small gaps |
| 11 | 0.69rem | 1 | Rare |
| 11.2 | 0.70rem | 14 | Button text spacing |
| 12 | 0.75rem | 142 | Common |
| 15 | 0.94rem | 7 | Tight section gaps |
| 16 | 1.00rem | 167 | Common |
| 20 | 1.25rem | 5 | Section gap |
| 24 | 1.50rem | 5 | Headline spacing |
| 25 | 1.56rem | 2 | Rare |
| 32 | 2.00rem | 11 | Card padding |
| 40 | 2.50rem | 3 | Large gaps |
| 171.5 | 10.72rem | 56 | Hero sections |
4.2 Layout
Breakpoints:
- Mobile starts as low as
95px— supports mini-player embeds. - Common responsive points:
400px,768px,1024px,1280px.
They adapt gracefully from tiny widgets to full desktop layouts.
5. Visual Elements
Border Radius
They love rounded corners.
| Value | Count | Usage |
|---|---|---|
| 2px | 35 | Badges, small controls |
| 2.5px | 1 | Regions |
| 3px | 2 | Divs |
| 4px | 3 | Inputs, kbd |
| 6px | 153 | Lists, images, cards |
| 8px | 6 | Sections, dialogs |
| 10px | 4 | Divs |
| 17px | 1 | Filters |
| 20px | 6 | Spans |
| 32px | 1 | Buttons |
| 50px | 1 | Search fields |
| 500px | 57 | Combobox, large pills |
| 9999px | 138 | Search, create playlist, pills |
| 50% | 37 | Avatars, icons |
Shadows
Two main:
rgba(0,0,0,0.5) 0px 8px 24pxrgba(0,0,0,0.3) 0px 8px 8px
Subtle depth, always dark-toned.
Borders
Mostly 1px solid. Color ranges from white to muted grays (#b3b3b3, #7c7c7c). Rarely used for separation; shadows do most of the lifting.
6. Components
6.1 Buttons
Variant 1 — Circular dark button
Default:
background: #1f1f1f; color: #ffffff; padding: 12px; border-radius: 50%;
Hover: background: #1eaedb; opacity: 0.9
Active: color: #656565; opacity: 0.7
Focus: outline: 2px solid #000; background: #1eaedb;
Variant 2 — White pill button
Default:
background: #ffffff; color: #000; padding: 8px 32px; border-radius: 9999px;
Hover: color: #ffffff
Variant 3 — Outlined pill with icon space
Default:
background: transparent; color: #ffffff; border: 1px solid #7c7c7c; padding: 4px 16px 4px 36px; border-radius: 9999px;
Hover: border: 1px solid #000; background: #1eaedb;
Active: border: 1px solid #818181; opacity: 0.7
Variant 4 — Green pill button
Default:
background: #1ed760; color: #000; border-radius: 9999px;
Hover: color: #ffffff
Variant 5 — Icon-only dark button
Default:
background: #292929; color: #b3b3b3; border-radius: 50%;
Hover: background: #ffffff; color: #2285f7; opacity: 0.6
Active: background: #2c6415; border: 1px solid rgba(162,192,169,0.5)
6.2 Links
Four styles: white, blue, gray, black — all toggle underline on hover.
6.3 Forms
Search input:
Default: background: #1f1f1f; color: #ffffff; border-radius: 500px; padding: 12px 96px 12px 48px;
Focus: background: #1eaedb; border: 1px solid #000;
7. Design Tokens (CSS Custom Properties)
:root {
/* Colors */
--color-primary-green: #1ed760;
--color-light-gray: #b3b3b3;
--color-black: #000000;
--color-medium-gray: #696969;
--color-dark-gray: #555555;
--color-charcoal: #2a2a2a;
--color-almost-black: #222222;
--color-white: #ffffff;
--color-deep-gray: #1f1f1f;
--gradient-color-bottom: #181818;
--color-hover-blue: #1eaedb;
/* Typography */
--font-title: SpotifyMixUITitle, CircularSp-Arab, CircularSp-Hebr, CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva, "Helvetica Neue", helvetica, arial, "Hiragino Sans", "Hiragino Kaku Gothic ProN", Meiryo, "MS Gothic";
--font-body: SpotifyMixUI, CircularSp-Arab, CircularSp-Hebr, CircularSp-Cyrl, CircularSp-Grek, CircularSp-Deva, "Helvetica Neue", helvetica, arial, "Hiragino Sans", "Hiragino Kaku Gothic ProN", Meiryo, "MS Gothic";
/* Spacing */
--space-1: 1px;
--space-2: 2px;
--space-3: 3px;
--space-4: 4px;
--space-5: 5px;
--space-6: 6px;
--space-7: 7px;
--space-8: 8px;
--space-10: 10px;
--space-11: 11px;
--space-11-2: 11.2px;
--space-12: 12px;
--space-15: 15px;
--space-16: 16px;
--space-20: 20px;
--space-24: 24px;
--space-25: 25px;
--space-32: 32px;
--space-40: 40px;
--space-171-5: 171.5px;
/* Radius */
--radius-2: 2px;
--radius-2-5: 2.5px;
--radius-3: 3px;
--radius-4: 4px;
--radius-6: 6px;
--radius-8: 8px;
--radius-10: 10px;
--radius-17: 17px;
--radius-20: 20px;
--radius-32: 32px;
--radius-50: 50px;
--radius-500: 500px;
--radius-full: 9999px;
--radius-circle: 50%;
/* Shadows */
--shadow-lg: rgba(0,0,0,0.5) 0px 8px 24px 0px;
--shadow-md: rgba(0,0,0,0.3) 0px 8px 8px 0px;
}8. AI Coding Assistant Prompt
# Spotify Design System Specification
You are a Spotify design expert. Build UIs matching their visual language exactly.
## Brand Context
Spotify’s design is dark-first, with neon green as the signature accent. Rounded corners dominate, typography is custom and bold, spacing follows an 8px grid. The UI is immersive, minimal in ornamentation, and optimized for long listening sessions.
## Color Palette
- Primary Green: #1ed760 — Play buttons, primary CTAs
- Light Gray: #b3b3b3 — Secondary text
- Black: #000000 — Backgrounds, body text
- Medium Gray: #696969 — Category headers
- Dark Gray: #555555 — Controls, close icons
- Charcoal: #2a2a2a — Hover/focus backgrounds
- Almost Black: #222222 — Dark hover states
- White: #ffffff — Text, icons
- Deep Gray: #1f1f1f — Button backgrounds
- Gradient Bottom: #181818 — Page background gradient
- Hover Blue: #1eaedb — Hover/focus accents
## Typography
Font Families:
- Headings: SpotifyMixUITitle, fallback stack
- Body/UI: SpotifyMixUI, fallback stack
Type Sizes:
| Level | Size | Weight | Line Height | Use For |
|-------------|-----------|--------|-------------|---------|
| Heading 1 | 24px | 700 | — | Page titles |
| Link Large | 24px | 700 | — | Prominent links |
| Body | 16px | 400 | — | Main copy |
| Button Bold | 16px | 700 | — | Primary buttons |
| Caption | 14px | 400-700| 1.5 | Labels, meta text |
| Small | 12px | 400-700| — | Secondary UI text |
## Spacing & Grid
Base: 8px. Scale: 1px, 2px, 4px, 8px, 10px, 12px, 16px, 20px, 24px, 32px, 40px, 171.5px.
Use multiples of 8px for layout, smaller increments for icon/text padding.
## Border Radius
- xs: 2px — badges
- sm: 4px — inputs
- md: 6px — cards
- lg: 8px — modals
- xl: 20px — large pills
- full: 9999px — pill buttons, avatars
- circle: 50% — icons, profile images
- large-pill: 500px — search bars
## Shadows & Depth
- Large: rgba(0,0,0,0.5) 0px 8px 24px
- Medium: rgba(0,0,0,0.3) 0px 8px 8px
## Component Specifications
### Primary Button
Default: background #1ed760, color #000, border-radius 9999px, font-size 13.3333px, font-weight 400.
Hover: color #fff.
Focus: outline none.
Active: no change.
### Secondary Button (Outlined)
Default: transparent background, color #fff, border 1px solid #7c7c7c, padding 4px 16px 4px 36px, radius 9999px.
Hover: border 1px solid #000, background #1eaedb.
Active: border 1px solid #818181, opacity 0.7.
### Icon Button
Default: background #292929, color #b3b3b3, radius 50%.
Hover: background #fff, color #2285f7.
Active: background #2c6415, border 1px solid rgba(162,192,169,0.5).
### Input Fields
Search:
Default: background #1f1f1f, color #fff, radius 500px, padding 12px 96px 12px 48px.
Focus: background #1eaedb, border 1px solid #000.
## Layout & Responsive Rules
Breakpoints: 95px, 400px, 768px, 1024px, 1280px.
Mobile: full-width content, 16px padding.
Desktop: max-width 1280px, 32px padding.
## Interaction Rules
- Transition: 150ms ease for hover/focus
- Focus: solid outline (#000 or #1eaedb depending on context)
- Hover: slight opacity change + background swap
## DO List
- Use only colors from palette
- Maintain 8px grid
- Keep rounded corners consistent
- Use bold weight for CTAs
- Keep dark mode backgrounds
## DON'T List
- Don't use sharp corners
- Don't introduce new accent colors
- Don't reduce contrast for small text
- Don't add drop shadows beyond defined tokens
## Code Examples
Button:
```css
.btn-primary {
background: #1ed760;
color: #000;
padding: 8px 32px;
border-radius: 9999px;
font-weight: 700;
font-size: 16px;
border: none;
transition: background 150ms ease;
}
.btn-primary:hover {
color: #fff;
}
```
Input:
```css
.input-search {
background: #1f1f1f;
color: #fff;
border-radius: 500px;
padding: 12px 96px 12px 48px;
border: none;
}
.input-search:focus {
background: #1eaedb;
border: 1px solid #000;
}
```9. Summary
TL;DR — Spotify’s design is dark mode by default, with neon green as the hero accent. Rounded everything, bold custom type, and an 8px grid keep it consistent. Green is for actions, blue is for hover, gray handles the rest.
Brand Keywords:
- neon-immersive
- dark-mode-first
- rounded-consistent
- global-type-stack
- music-centric