YouTube Brand Design System Deep-Dive
1. Brand Overview
YouTube’s design system is the visual backbone of the largest video-sharing platform on the planet. This is a product used by billions of people every month, across every device imaginable. That scale shows in the design choices — everything is engineered for clarity, speed, and familiarity. There’s no experimental typography here, no eccentric layouts. It’s utility-first.
The YouTube UI is designed primarily for content immersion. The platform’s brand is secondary to the content creators’ brands. YouTube’s own visual language is restrained: headline red, heavy use of black, white, and neutral greys, and a type stack built for performance. This works because the product’s job is to frame video, not upstage it.
Navigation, search, and interaction affordances are immediately obvious. Buttons are large enough for touch and mouse users. States are clear — hover, active, focus — with distinct visual changes. They’ve built a system that can scale from a 4K TV to a low-end Android phone without losing clarity.
The design philosophy is “functional consistency.” The same patterns repeat across watch pages, home feed, and channel pages. Even live chat and interactive overlays follow the same radius, color, and typography rules. This is not about visual experimentation — it’s about maintaining a mental model for the user.
For designers and developers, YouTube’s system is a masterclass in brand restraint. They’ve got a globally recognized red, but they deploy it sparingly. The UI lives mostly in shades of black, grey, and white. That makes creator thumbnails and video content pop — the UI fades back.
And importantly: this is an interface designed to survive over a decade of small incremental changes. The base grid, the palette, the typography stack — all are stable foundations that have shifted only slightly over the years. That’s exactly what you want in a platform with this kind of scale.
2. Color System
2.1 Primary Colors
The primary brand color is red. Specifically, #ff0000 (--yt-brand-youtube-red). This is instantly recognizable and psychologically loaded — urgency, excitement, attention. YouTube uses it for brand marks (logo, play button) and sparingly for UI elements like "Subscribe" buttons or live badges.
The “spec” brand red is also defined as #ff0033 (--yt-spec-static-brand-red). This is a slightly warmer, pinker variant used in overlays and certain brand contexts. They also have deeper reds (#c00 and #c30027) for contrast requirements.
Competitor comparison: Netflix leans heavily into red backgrounds with white text; YouTube avoids large red fields in the UI entirely. Their red is an accent, not a background.
2.2 Complete Palette
Here’s every extracted color in a structured table:
| Color Name / Variable | Hex | Role | Usage |
|---|---|---|---|
Primary Black (primary) | #000000 | Base text, icons, dark theme bg | Default text, dark UI backgrounds |
Secondary Transparent (secondary) | rgba(0,0,0,0) | Overlay base | Transparent surfaces |
| Dark Grey | #0f0f0f | Dark theme panels | Cards, headers in dark mode |
| Light Grey 1 | #eeeeee | Light surfaces | Backgrounds, dividers |
| Medium Grey | #606060 | Secondary text | Metadata, captions |
| Brand Blue | #065fd4 | Links, CTAs | Link text, accent buttons |
| Light Grey 2 | #e3e3e3 | Borders | Input borders, dividers |
| White | #ffffff | Background / text | Light mode background, text on dark |
| Deep Blue | #005fcc | Hover/focus accents | Link hover states |
| Light Grey 3 | #f0f0f0 | Hover bg | Hovered list items |
| Mid Grey | #c6c6c6 | Hover borders | Button hover borders |
| Light Blue Tint | #def1ff | Hover bg for info | Notification hovers |
Brand Red (--yt-brand-youtube-red) | #ff0000 | Brand | Logo, subscribe buttons |
Spec Brand Red (--yt-spec-static-brand-red) | #ff0033 | Brand accent | Overlays, CTA backgrounds |
| Brand Medium Red | #cc0000 | Darker brand red | Hover states |
| Brand Red Contrast | #c30027 | Contrast on red | Text over brand red |
| Overlay Brand | rgba(225,0,45,0.9) | Overlay scrim | Modal backgrounds |
| CTA Blue | #4285f4 | Send buttons | Live chat send |
| Error Orange | #dd2c00 | Error states | Validation, error banners |
| Sponsor Green | #107516 | Success states | Sponsor badges |
| Moderator Blue | hsl(225,84%,66%) | Role badge | Live chat moderator |
| Mention Orange | #ff5722 | Mentions | Live chat mentions |
| Disabled Grey | #9b9b9b | Disabled text | Disabled buttons |
(Plus many role-specific chat colors defined as HSL/HSLA in CSS variables.)
2.3 Color Relationships
Contrast: Text colors (#000, #0f0f0f, #606060) over white (#fff) easily pass WCAG AA. The brand red (#ff0000) on white is high contrast; white text over brand red also passes when using the darker contrast variant (#c30027).
Dark mode uses #0f0f0f as the base with white text. Secondary text in dark mode is light grey (#bcbcbc) for readability.
2.4 Usage Guide
- Use red sparingly — only for brand marks, primary CTAs like Subscribe, or live indicators.
- Blue (#065fd4) is the interaction color. Use it for links and secondary actions.
- Greys create the hierarchy: darker for important text (#0f0f0f), mid (#606060) for metadata, light greys for dividers.
- Avoid combining brand red with brand blue — they fight for attention.
- In dark mode, maintain high contrast by pairing #0f0f0f backgrounds with #fff text.
3. Typography
3.1 Font Families
YouTube uses a mix of:
- YouTube Noto — custom variant of Noto Sans, primary UI font.
- YouTube Sans — for certain headings.
- Roboto — fallback and for smaller UI text.
- Fallbacks: Arial, Helvetica.
All are sourced from Google Fonts (Roboto, Roboto Mono) or custom-hosted (YouTube Sans, YouTube Noto). Variable fonts are supported.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| Heading-1 | YouTube Noto | 23.98px (1.50rem) | 500 | 1.30 |
| Heading-1 | Roboto | 20px (1.25rem) | 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 |
| Caption | Arial | 13.33px | 400 | 0 |
| Button | YouTube Noto | 13.07px | 400 | 3.60 |
| Caption | YouTube Noto | 13.07px | 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) |
3.3 Hierarchy
Hierarchy is subtle. The largest heading in the UI is 23.98px, which isn’t huge — content thumbnails dominate. Sizes step down in small increments (20px, 19.25px, 18px…), keeping density high. Weight shifts (400 vs 500 vs 700) do more work than size shifts in defining importance.
This works because the UI is busy — smaller type keeps the chrome from overwhelming the feed.
4. Spacing & Layout
4.1 Spacing Scale
Base unit: 8px grid, with occasional half-steps (4px) and odd values for specific tweaks.
| Value | Rem | Count | Usage |
|---|---|---|---|
| 1px | 0.06rem | 3 | Hairline borders |
| 2.5px | 0.16rem | 3 | Icon offsets |
| 4px | 0.25rem | 37 | Tight gaps |
| 5px | 0.31rem | 14 | Small paddings |
| 6px | 0.38rem | 9 | Icon padding |
| 7px | 0.44rem | 13 | Micro spacing |
| 8px | 0.50rem | 61 | Core grid unit |
| 10px | 0.63rem | 11 | Button padding |
| 12px | 0.75rem | 62 | Common gap |
| 15px | 0.94rem | 2 | Specific layout |
| 16px | 1.00rem | 12 | Section padding |
| 18px | 1.13rem | 11 | Card padding |
| 20px | 1.25rem | 8 | Section padding |
| 24px | 1.50rem | 9 | Grid gaps |
| 32px | 2.00rem | 3 | Large padding |
| 50px | 3.13rem | 2 | Hero spacing |
| 56px | 3.50rem | 1 | Hero spacing |
| 100px | 6.25rem | 2 | Huge gaps |
| 120px | 7.50rem | 1 | Hero section |
4.2 Layout
Breakpoints are granular — dozens of pixel-specific ones from 250px to 2244px. This suggests highly tuned responsive layouts for different embed contexts and device classes. No single “container max width” — it’s fluid.
5. Visual Elements
Border Radius
Ranges from sharp (0px) to full circles (50%). Common values:
- 4px, 8px, 10px: cards, buttons, badges.
- 18px: pill buttons.
- 50%: avatars, round icons.
- Odd custom radii:
0px 40px 40px 0px(search button),28px 0px 0px 28px(rounded on one side).
Shadows
Minimal. A few low-opacity black shadows for elevation:
rgba(0,0,0,0.1) 0px 8px 23pxrgba(0,0,0,0.16) 0px 2px 5pxetc.
Shadows are rare — borders and background colors handle separation.
Borders
Mostly 1px solid in grey or black, low opacity. Dividers use rgba(0,0,0,0.1) or light grey.
6. Components
6.1 Buttons
Variant 1: Neutral Pill Button
- Default: bg
rgba(0,0,0,0.05), text #0f0f0f, padding0 16px, radius18px, border none. - Hover: bg #e5e5e5, scale(1.67).
- Active: bg
rgba(255,255,255,0.3), inset shadow, 50% opacity. - Focus: bg #0f0f0f, white text, 2px white border.
Variant 2: Search Button
- Default: bg #f8f8f8, border
1px solid #d3d3d3, radius0px 40px 40px 0px. - Hover: bg #e5e5e5, border
1px solid #c6c6c6, scale(1.67). - Active/Focus: same pattern as above.
Variant 3: Outline Blue
- Default: transparent bg, text #065fd4, border
1px solid rgba(0,0,0,0.1), radius18px. - Hover: bg #2266cc, border #3a3a3a, box-shadow overlay.
- Focus: bg #0f0f0f, white text, 2px white border, inset blue glow.
6.2 Links
Four styles:
- Black (#0f0f0f) no underline.
- Darker black (#030303) no underline.
- Blue (#065fd4) bold.
- Grey (#606060) bold.
Hover: color inherit, still no underline.
6.3 Forms
Text inputs: transparent bg, no border by default. On focus: bg var(--yt-spec-overlay-tonal-hover), border 2px solid var(--yt-spec-call-to-action).
7. Design Tokens (CSS Custom Properties)
:root {
/* Colors */
--color-primary-black: #000000;
--color-dark-grey: #0f0f0f;
--color-light-grey-1: #eeeeee;
--color-medium-grey: #606060;
--color-brand-blue: #065fd4;
--color-light-grey-2: #e3e3e3;
--color-white: #ffffff;
--color-deep-blue: #005fcc;
--color-light-grey-3: #f0f0f0;
--color-mid-grey: #c6c6c6;
--color-light-blue-tint: #def1ff;
--color-brand-red: #ff0000;
--color-spec-brand-red: #ff0033;
--color-brand-medium-red: #cc0000;
--color-brand-red-contrast: #c30027;
--color-overlay-brand: rgba(225,0,45,0.9);
--color-cta-blue: #4285f4;
--color-error-orange: #dd2c00;
--color-sponsor-green: #107516;
--color-moderator-blue: hsl(225,84%,66%);
--color-mention-orange: #ff5722;
--color-disabled-grey: #9b9b9b;
/* 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-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;
/* Border Radius */
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 10px;
--radius-xl: 18px;
--radius-full: 50%;
/* Shadows */
--shadow-1: rgba(0,0,0,0.1) 0px 8px 23px 0px;
--shadow-2: rgba(0,0,0,0.16) 0px 2px 5px 0px, rgba(0,0,0,0.2) 0px 3px 6px 0px;
}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 design is functional, content-first, and globally recognizable. UI chrome is restrained to black, white, and neutral greys, with brand red and blue accents for key actions. Typography is compact, sans-serif, and optimized for dense information layouts.
## Color Palette
- Primary Black: #000000 — default text, dark theme backgrounds
- Dark Grey: #0f0f0f — dark panels, headers
- Light Grey 1: #eeeeee — light surfaces, dividers
- Medium Grey: #606060 — secondary text
- Brand Blue: #065fd4 — links, CTAs
- Light Grey 2: #e3e3e3 — borders
- White: #ffffff — backgrounds, text on dark
- Deep Blue: #005fcc — hover/focus accents
- Light Grey 3: #f0f0f0 — hover backgrounds
- Mid Grey: #c6c6c6 — hover borders
- Light Blue Tint: #def1ff — info hover backgrounds
- Brand Red: #ff0000 — logo, subscribe buttons
- Spec Brand Red: #ff0033 — overlays, CTA backgrounds
- Brand Medium Red: #cc0000 — hover states
- Brand Red Contrast: #c30027 — text on red
- Overlay Brand: rgba(225,0,45,0.9) — modal backgrounds
- CTA Blue: #4285f4 — send buttons
- Error Orange: #dd2c00 — errors
- Sponsor Green: #107516 — success
- Moderator Blue: hsl(225,84%,66%) — role badges
- Mention Orange: #ff5722 — live chat mentions
- Disabled Grey: #9b9b9b — disabled text
## Typography
- Headings: "YouTube Noto", Roboto, Arial, Helvetica
- Secondary Headings: "YouTube Sans", Roboto
- Body: Roboto, Arial
- Fallback: Arial
| Level | Size | Weight | Line Height | Use For |
|-------|------|--------|-------------|---------|
| H1 | 23.98px | 500 | 1.30 | Page titles |
| H1 Alt | 20px | 700 | — | Section titles |
| Body | 14px | 400 | 1.43 | Paragraph text |
| Button | 14px | 500 | 1.30 | Interactive labels |
| Caption | 12px | 400 | 1.30 | Metadata |
## Spacing & Grid
Base: 8px grid. Available: 1px, 2.5px, 4px, 5px, 6px, 7px, 8px, 10px, 12px, 15px, 16px, 18px, 20px, 24px, 32px, 50px, 56px, 100px, 120px.
## Border Radius
- none: 0px — flat edges
- sm: 4px — small cards, inputs
- md: 8px — buttons, cards
- lg: 10px — larger containers
- pill: 18px — pill buttons
- full: 50% — avatars, circular buttons
## Shadows & Depth
Minimal shadows. Use:
- rgba(0,0,0,0.1) 0px 8px 23px 0px
- rgba(0,0,0,0.16) 0px 2px 5px 0px, rgba(0,0,0,0.2) 0px 3px 6px 0px
## Component Specifications
### Primary Button (Neutral Pill)
Default: bg rgba(0,0,0,0.05), color #0f0f0f, padding 0 16px, radius 18px, no border.
Hover: bg #e5e5e5, scale(1.67).
Active: bg rgba(255,255,255,0.3), inset shadow, opacity 0.5.
Focus: bg #0f0f0f, color #fff, border 2px solid #fff.
### Search Button
Default: bg #f8f8f8, border 1px solid #d3d3d3, radius 0 40px 40px 0.
Hover: bg #e5e5e5, border #c6c6c6.
Focus: same as primary.
### Outline Blue Button
Default: transparent bg, text #065fd4, border 1px solid rgba(0,0,0,0.1), radius 18px.
Hover: bg #2266cc, border #3a3a3a.
Focus: bg #0f0f0f, white text, 2px white border.
### Links
- Default: no underline, color #065fd4 for interactive, #0f0f0f/#030303/#606060 for others.
- Hover: color inherit, no underline.
### Input Fields
Default: transparent bg, no border.
Focus: bg var(--yt-spec-overlay-tonal-hover), border 2px solid var(--yt-spec-call-to-action).
## Layout & Responsive Rules
Fluid width with breakpoints at: 250px, 300px, 768px, 1024px, 1280px, 1600px, 2244px (and many intermediates).
## Interaction Rules
- Transitions: ~150ms ease on state changes.
- Focus indicators: 2px solid white or brand blue inset glow.
- Hover scaling: up to 1.67 for some buttons.
## DO
- Use only defined palette.
- Maintain 8px grid.
- Keep red usage minimal and intentional.
- Use compact type sizes to keep UI density.
- Keep shadows subtle.
## DON'T
- Flood UI with red backgrounds.
- Introduce unapproved colors.
- Mix sharp and rounded corners arbitrarily.
- Overuse shadows.
## Code Examples
### Primary Button
```css
.btn-primary {
background: rgba(0,0,0,0.05);
color: #0f0f0f;
padding: 0 16px;
border-radius: 18px;
border: none;
font-weight: 500;
font-size: 14px;
}
.btn-primary:hover {
background: #e5e5e5;
transform: scale(1.67);
}
.btn-primary:focus {
background: #0f0f0f;
color: #fff;
border: 2px solid #fff;
}
```
### Search Button
```css
.btn-search {
background: #f8f8f8;
border: 1px solid #d3d3d3;
border-radius: 0 40px 40px 0;
}
.btn-search:hover {
background: #e5e5e5;
border-color: #c6c6c6;
}
```
### Input
```css
.input {
background: transparent;
border: none;
}
.input:focus {
background: var(--yt-spec-overlay-tonal-hover);
border: 2px solid var(--yt-spec-call-to-action);
}
```9. Summary
TL;DR — YouTube’s design language is content-first, with a restrained palette, compact typography, and consistent spacing. Red is sacred. Blue is functional. Everything else is neutral. The system is built for scale and familiarity, not novelty.
Brand Keywords:
- content-first
- restrained-functional
- global-accessible
- high-density
- brand-disciplined