Youtu (YouTube) Design System Deep Dive
1. Brand Overview
YouTube’s interface is a study in utilitarian brand design. It’s not here to win beauty awards — it’s here to hold up an infinite scroll of video content without getting in the way. The vibe: functional, slightly corporate, with flashes of brand personality in the reds and blues.
If you strip away the thumbnails, YouTube’s UI is a stark monochrome scaffold. Black (#000000) and near-black (#0f0f0f) dominate, providing a high-contrast backdrop for vivid media. The reds (#ff0000, #ff0033, #c00) are reserved for brand anchors — the logo, play buttons, notification badges. Blues (#065fd4, #005fcc) show up in CTAs and links, and they’re bright enough to stand out against the dark shell.
The philosophy here is minimal chrome. Buttons are lean, typography is clean, spacing is tight but consistent, and the grid adapts across an absurd number of breakpoints (literally hundreds). YouTube’s design system is built for scale — every pixel has to survive in dozens of layouts, languages, and contexts.
Who’s this for? Heavy content consumers. Creators tracking analytics. Casual browsers. The design system has to work for all three without alienating any. That’s why it leans neutral — the content carries the emotion, not the UI.
I love how ruthlessly they limit decorative elements. Shadows are rare. Gradients are nonexistent. Borders are functional, not ornamental. This works because YouTube’s brand is built on utility. It’s a container brand — the “frame” for billions of pieces of user-generated art, comedy, news, and noise.
2. Color System
2.1 Primary Colors
The primary brand color is pure black (#000000). This is unusual — most brands pick a chromatic hue. YouTube uses black as the structural base, letting the famous red (#ff0000) do the brand signaling. Black conveys authority, neutrality, and makes thumbnails pop.
The red family is the emotional hook:
- Brand Red (
#ff0000) — logo, play icon, key brand anchors. - Static Brand Red (
#ff0033) — alternative brand red, used in component states. - Medium Red (
#cc0000) — darker variant, likely for hover/active states. - Brand Red Contrast (
#c30027) — used for text or elements on red backgrounds.
Blue is the action color:
- Action Blue (
#065fd4) — links, CTAs. - Dark Blue (
#005fcc) — hover/focus states for blue actions. - Enabled Send Button Blue (
#4285f4) — live chat send button.
The rest of the palette is neutral grays and functional colors (error, warning, success).
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Primary Black | #000000 | Base | Backgrounds, text |
| Near Black | #0f0f0f | Base | Surfaces, buttons |
| Light Gray | #eeeeee | Neutral | Text on dark, icons |
| Medium Gray | #606060 | Neutral | Secondary text |
| Action Blue | #065fd4 | Accent | Links, CTAs |
| Light Neutral Gray | #e3e3e3 | Neutral | Menus, skeleton loading |
| White | #ffffff | Base | Text on dark, surfaces |
| Dark Blue | #005fcc | Accent | Hover/focus actions |
| Very Light Gray | #f0f0f0 | Neutral | Hover/focus surfaces |
| Mid Gray | #c6c6c6 | Neutral | Hover/focus borders |
| Transparent Black 10% | rgba(0,0,0,0.1) | Overlay | Hover/focus states |
| Light Blue Tint | #def1ff | Accent | Hover/focus backgrounds |
| Transparent Black 5% | rgba(0,0,0,0.05) | Overlay | Hover/focus surfaces |
| Static Brand Red | #ff0033 | Brand | Brand states |
| Brand Medium Red Alpha 30 | rgba(204,0,0,0.3) | Overlay | Red overlays |
| Brand Light Red Alpha 30 | rgba(255,78,69,0.3) | Overlay | Red overlays |
| Brand Medium Red | #cc0000 | Brand | Darker red variant |
| Brand YouTube Red | #ff0000 | Brand | Primary logo red |
| Brand Red Contrast | #c30027 | Brand | Contrast text on red |
| Enabled Send Button Blue | #4285f4 | Accent | Live chat send button |
| Light Accent Pink | #ff80ab | Accent | Light theme accents |
| Dark Accent Pink | #f50057 | Accent | Dark theme accents |
| Primary Indigo | #3f51b5 | Accent | Primary theme color |
| Accent Pink | #ff4081 | Accent | Links/highlights |
| Error Orange | #dd2c00 | Functional | Error states |
| Dark Theme Background | #212121 | Base | Dark mode background |
| Light Primary Indigo | #c5cae9 | Accent | Light theme variant |
| Dark Primary Indigo | #303f9f | Accent | Dark theme variant |
| Live Chat Sponsor Green | #107516 | Functional | Sponsor badge |
| Live Chat Moderator Blue | hsl(225,84%,66%) | Functional | Moderator badge |
| Live Interactivity BG | #264c8a | Functional | Interactivity component |
2.3 Color Relationships
Black and white give maximum contrast. Reds are saturated — they scream for attention. Blues are bright enough to stand out on black but still WCAG-compliant for text. Grays are carefully stepped: #606060 is readable on white, #eeeeee works on black.
Dark mode is native: #212121 background, light grays for text. The same palette adapts — just swap background and text colors.
2.4 Usage Guide
- Primary actions: Use Action Blue (
#065fd4) for links and buttons. Hover to Dark Blue (#005fcc). - Brand anchors: Use Brand Red (
#ff0000) for logo/play buttons. Avoid overusing red — it’s for brand, not generic actions. - Text: On dark backgrounds, use white (
#ffffff) or light gray (#eeeeee). On light backgrounds, use near black (#0f0f0f). - Error states: Use Error Orange (
#dd2c00) for validation. - Avoid mixing red and blue in the same button — it looks like conflicting actions.
- Keep overlays translucent — use alpha variants for focus rings or hover states.
3. Typography
3.1 Font Families
Two main custom families: YouTube Noto and YouTube Sans. Both fall back to Roboto, then system fonts (Arial, Helvetica). Roboto Mono is also loaded.
Sources:
- Google Fonts: Roboto, YouTube Sans, Roboto Mono.
- Variable fonts: Yes.
- Adobe Fonts: No.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| heading-1 | YouTube Noto | 23.98px | 500 | 1.30 |
| heading-1 | Roboto | 20px | 700 | — |
| heading-1 | YouTube Noto | 20px | 400 | 1.30 |
| heading-1 | YouTube Sans | 20px | 700 | 1.40 |
| heading-1 | YouTube Noto | 19.25px | 400 | 1.30 |
| heading-1 | YouTube Noto | 18px | 400 | 1.30 |
| heading-1 | YouTube Noto | 18px | 700 | 1.30 |
| heading-1 | Roboto | 18px | 400 | 1.44 |
| heading-1 | YouTube Noto | 17.05px | 400 | 1.17 |
| heading-1 | Roboto | 16px | 400 | 1.38 |
| heading-1 | YouTube Noto | 16px | 400 | 1.30 |
| heading-1 | YouTube Noto | 14.96px | 400 | 1.34 |
| button | YouTube Noto | 14.96px | 400 | 1.34 |
| heading-1 | YouTube Noto | 14.3px | 500 | 1.30 |
| caption | Roboto | 14px | 500 | 1.43 |
| button | Roboto | 14px | 500 | 2.57 |
| link | Roboto | 14px | 500 | 2.57 |
| caption | Roboto | 14px | 400 | 1.43 |
| caption | YouTube Noto | 14px | 400 | 1.30 |
| caption | YouTube Noto | 14px | 500 | 1.30 |
| button | YouTube Noto | 14px | 500 | 1.30 (uppercase) |
| button | YouTube Noto | 14px | 500 | 2.86 |
| caption | YouTube Noto | 13.97px | 500 | 1.30 (uppercase) |
| button | Arial | 13.33px | 400 | 0.00 |
| caption | Arial | 13.33px | 400 | 0.00 |
| button | YouTube Noto | 13.0691px | 400 | 3.60 |
| caption | YouTube Noto | 13.0691px | 500 | 1.84 |
| link | Roboto | 13px | 500 | 1.38 |
| caption | YouTube Noto | 13px | 400 | 1.00 |
| caption | YouTube Noto | 12px | 400 | 1.30 |
| caption | YouTube Noto | 12px | 500 | 1.30 |
| caption | Roboto | 12px | 400 | 1.25 |
| button | YouTube Noto | 11.99px | 400 | 4.67 |
| caption | YouTube Noto | 11.99px | 400 | 4.67 |
| caption | Roboto | 11.7px | 700 | — |
| caption | YouTube Noto | 11px | 400 | 1.30 |
| button | YouTube Noto | 11px | 400 | 1.30 |
| caption | Roboto | 10px | 400 | — |
| link | Roboto | 10px | 400 | — |
| button | Roboto | 10px | 400 | — |
| caption | Roboto | 0px | 400 | — (uppercase transform) |
3.3 Hierarchy
Headings hover around 18–24px. Buttons and captions are tight at 14px or smaller. Line heights are generally compact (1.30), except buttons with large vertical padding (line height > 2). This keeps the UI dense without feeling cramped. The uppercase transform on some captions and buttons adds emphasis without changing size.
4. Spacing & Layout
4.1 Spacing Scale
Base scale: 8px grid with some half-steps (2.5px, 6px, 7px).
| Value | rem | Count | Usage |
|---|---|---|---|
| 1px | 0.06rem | 3 | Hairline borders |
| 2.5px | 0.16rem | 3 | Icon spacing |
| 4px | 0.25rem | 37 | Tight gaps |
| 5px | 0.31rem | 14 | Icon padding |
| 6px | 0.38rem | 9 | Small gaps |
| 7px | 0.44rem | 13 | Compact spacing |
| 8px | 0.50rem | 61 | Base unit |
| 10px | 0.63rem | 11 | Button padding |
| 11px | 0.69rem | 2 | Rare |
| 12px | 0.75rem | 62 | Common gaps |
| 15px | 0.94rem | 2 | Rare |
| 16px | 1.00rem | 12 | Section padding |
| 18px | 1.13rem | 11 | Form fields |
| 20px | 1.25rem | 8 | Card padding |
| 24px | 1.50rem | 9 | Larger gaps |
| 32px | 2.00rem | 3 | Section spacing |
| 50px | 3.13rem | 2 | Hero spacing |
| 56px | 3.50rem | 1 | Hero elements |
| 100px | 6.25rem | 2 | Modals |
| 120px | 7.50rem | 1 | Hero |
4.2 Layout
Breakpoints are exhaustive — from tiny (2px) up to massive (2244px). This suggests responsive tuning for countless device widths. No fixed container width — the grid adapts fluidly.
5. Visual Elements
Border Radius
A mixed system: small radii (2–12px) for most UI, large (18px) for pills, 50% for circles/avatars.
Notable:
- 18px for pill buttons.
- 28px for large rounded buttons.
- 50% for avatars, icons, circular buttons.
Shadows
Rare. Values are subtle:
rgba(0,0,0,0.1) 0px 8px 23px— soft drop.- Multiple-layer shadows for elevation (
rgba(0,0,0,0.16) 0px 2px 5px, rgba(0,0,0,0.2) 0px 3px 6px).
This is mostly flat design — depth is minimal.
Borders
Mostly 1px solid black or rgba black. Functional dividers.
6. Components
6.1 Buttons
Variant 1 (yt-spec-button-shape-next)
Default: rgba(0,0,0,0.05) bg, #0f0f0f text, 18px radius, 0px border. Hover: #e5e5e5 bg, scale(1.67). Active: white text, 0.5 opacity, scale(0.94). Focus: black bg, white text, 2px white border.
Variant 2 (ytSearchboxComponentSearchButton)
Default: #f8f8f8 bg, 0px/40px radius, 1px #d3d3d3 border. Hover: #e5e5e5 bg, #c6c6c6 border. Same active/focus as above.
Variant 3 (yt-spec-button-shape-next with blue)
Default: transparent bg, #065fd4 text, 18px radius, 1px rgba black border. Hover: #2266cc bg, black text. Active: white text, 0.5 opacity. Focus: black bg, white text, white border.
6.2 Links
Variants:
- Black (
#0f0f0f) text, no underline. - Dark gray (
#030303) text. - Blue (
#065fd4) text, medium weight. - Gray (
#606060) text.
Hover: color inherits, no underline.
6.3 Forms
Text inputs: Transparent bg, black text, no border. Focus: overlay bg, 2px solid call-to-action color, border color = secondary text.
6.4 Cards
No explicit card data, but radii suggest 8–12px corners, minimal shadows.
7. Design Tokens
:root {
/* Colors */
--color-primary-black: #000000;
--color-near-black: #0f0f0f;
--color-light-gray: #eeeeee;
--color-medium-gray: #606060;
--color-action-blue: #065fd4;
--color-light-neutral-gray: #e3e3e3;
--color-white: #ffffff;
--color-dark-blue: #005fcc;
--color-very-light-gray: #f0f0f0;
--color-mid-gray: #c6c6c6;
--color-brand-red: #ff0000;
--color-static-brand-red: #ff0033;
--color-brand-medium-red: #cc0000;
--color-brand-red-contrast: #c30027;
--color-enabled-send-button-blue: #4285f4;
--color-light-accent-pink: #ff80ab;
--color-dark-accent-pink: #f50057;
--color-primary-indigo: #3f51b5;
--color-accent-pink: #ff4081;
--color-error-orange: #dd2c00;
--color-dark-theme-bg: #212121;
--color-light-primary-indigo: #c5cae9;
--color-dark-primary-indigo: #303f9f;
--color-live-chat-sponsor-green: #107516;
--color-live-chat-moderator-blue: hsl(225,84%,66%);
--color-live-interactivity-bg: #264c8a;
/* Typography */
--font-youtube-noto: "YouTube Noto", Roboto, Arial, Helvetica;
--font-youtube-sans: "YouTube Sans", Roboto;
--font-roboto: Roboto, Arial;
--font-arial: Arial;
/* Spacing */
--space-1: 1px;
--space-2-5: 2.5px;
--space-4: 4px;
--space-5: 5px;
--space-6: 6px;
--space-7: 7px;
--space-8: 8px;
--space-10: 10px;
--space-11: 11px;
--space-12: 12px;
--space-15: 15px;
--space-16: 16px;
--space-18: 18px;
--space-20: 20px;
--space-24: 24px;
--space-32: 32px;
--space-50: 50px;
--space-56: 56px;
--space-100: 100px;
--space-120: 120px;
/* Radius */
--radius-sm: 2px;
--radius-md: 4px;
--radius-lg: 8px;
--radius-xl: 10px;
--radius-xxl: 12px;
--radius-pill: 18px;
--radius-full: 50%;
/* Shadows */
--shadow-soft: rgba(0,0,0,0.1) 0px 8px 23px 0px;
--shadow-medium: rgba(0,0,0,0.16) 0px 2px 5px, rgba(0,0,0,0.2) 0px 3px 6px;
}8. AI Coding Assistant Prompt
# YouTube Design System Specification
You are a YouTube design expert. Build UIs matching their visual language exactly.
## Brand Context
YouTube's UI is utilitarian, content-first, and neutral. Black and white define the frame, with red as the brand anchor and blue for actions. Shadows are rare, borders are functional.
## Color Palette
- Primary Black: #000000 — Backgrounds, text
- Near Black: #0f0f0f — Surfaces, buttons
- Light Gray: #eeeeee — Text on dark, icons
- Medium Gray: #606060 — Secondary text
- Action Blue: #065fd4 — Links, CTAs
- Dark Blue: #005fcc — Hover/focus actions
- White: #ffffff — Text on dark, surfaces
- Brand Red: #ff0000 — Logo, play icons
- Static Brand Red: #ff0033 — Brand states
- Brand Medium Red: #cc0000 — Darker variant
- Brand Red Contrast: #c30027 — Contrast text
- Enabled Send Button Blue: #4285f4 — Live chat send
- Error Orange: #dd2c00 — Error states
- Light Accent Pink: #ff80ab — Light theme accent
- Dark Accent Pink: #f50057 — Dark theme accent
- Primary Indigo: #3f51b5 — Theme color
- Accent Pink: #ff4081 — Links/highlights
- Dark Theme Background: #212121 — Dark mode bg
## Typography
Fonts:
- Headings: "YouTube Noto", Roboto, Arial, Helvetica
- Body: Roboto, Arial
- UI Labels: "YouTube Sans", Roboto
Type Sizes:
| Level | Size | Weight | Line Height | Use For |
|-------|------|--------|-------------|---------|
| H1 | 23.98px | 500 | 1.30 | Page titles |
| H1 | 20px | 700 | — | Section headings |
| Body | 14px | 400 | 1.43 | Paragraphs |
| Button | 14px | 500 | 1.30 | CTAs |
| Caption | 12px | 400 | 1.30 | Labels |
## Spacing & Grid
Base: 8px grid.
Scale: 4px, 8px, 12px, 16px, 20px, 24px, 32px, 50px, 100px.
## Border Radius
- none: 0 — tables
- sm: 2px — inputs
- md: 4px — small cards
- lg: 8px — cards, modals
- xl: 10px — navigation items
- pill: 18px — buttons
- full: 50% — avatars
## Shadows & Depth
Mostly flat. Use:
- Soft: rgba(0,0,0,0.1) 0px 8px 23px
- Medium: rgba(0,0,0,0.16) 0px 2px 5px, rgba(0,0,0,0.2) 0px 3px 6px
## Components
### Primary Button
```css
.btn-primary {
background: rgba(0,0,0,0.05);
color: #0f0f0f;
padding: 0 16px;
border-radius: 18px;
font-weight: 500;
font-size: 14px;
border: none;
}
.btn-primary:hover { background: #e5e5e5; transform: scale(1.67); }
.btn-primary:focus { background: #0f0f0f; color: #fff; border: 2px solid #fff; }
.btn-primary:active { opacity: 0.5; transform: scale(0.94); }
```
### Secondary Button
```css
.btn-secondary {
background: #f8f8f8;
color: #0f0f0f;
border-radius: 0 40px 40px 0;
border: 1px solid #d3d3d3;
}
.btn-secondary:hover { background: #e5e5e5; border-color: #c6c6c6; }
```
### Input Field
```css
.input {
background: transparent;
color: #0f0f0f;
border: none;
padding: 1px 0;
}
.input:focus {
background: var(--yt-spec-overlay-tonal-hover);
border: 2px solid var(--yt-spec-call-to-action);
}
```
## Layout & Responsive Rules
No fixed max width. Fluid grid across breakpoints from 2px to 2244px.
## Interaction Rules
- Transition: 150ms ease for hover/active states
- Focus: 2px border in white or action color
## DO List
- Use only colors from palette
- Maintain 8px grid
- Reserve red for brand anchors
- Blue for actions
- Keep shadows subtle
## DON'T List
- No custom colors
- No heavy shadows
- Don’t mix sharp and rounded corners in same component
- Don’t underline links
## Code Examples
See above for button and input CSS.9. Summary
TL;DR — YouTube’s design system is black-and-white scaffolding with red for brand and blue for action. It’s dense, responsive to extremes, and keeps decorative elements minimal.
Brand Keywords:
- content-first
- neutral-framework
- brand-red
- action-blue
- flat-functional