---
name: netflix-design-reference
provider: DesignSkill (https://designskill.dev)
reference: netflix.com
source_url: https://www.netflix.com/kr-en/
tool: designskill-extract/3.2.0
extracted_at: 2026-07-27T08:32:32.378Z
mode: full-render
classification: reference_only
---

# Netflix — Design Reference (measured)

Measured design tokens extracted from `https://www.netflix.com/kr-en/` 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), 434 observation records.
- Primary action color observed as `#e50914` (basis: cross-validated, confidence 0.98).
- Dominant font family: **sans-serif** (×457; secondary Netflix Sans ×7).
- Type scale observed at 8 sizes from 12px to 64px.
- Corner radius values in use: 8px, 2px, 4px, 16px.
- Not observed in this extraction: 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}` | `#e50914` | cross-validated | 0.98 | ×27 |
| `{color.background}` | `#000000` | cross-validated | 0.93 | ×198 |
| `{color.ink}` | `#ffffff` | cross-validated | 0.93 | ×298 |
| `{color.surface}` | `#232323` | inferred | 0.7 | ×204 |
| `{color.accent}` | `#192247` | inferred | 0.58 | ×6 |

### 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` | 24.9% | color, --wct--focus-ring--color | ×298 (cross-validated, 0.93) |
| `#232323` | 17.1% | background-color | ×204 (cross-validated, 0.93) |
| `#000000` | 16.6% | background-color, color, --wct--local-design--button-border, border-color | ×198 (cross-validated, 0.93) |
| `#ffffff` | 16.1% | color | ×192 (observed, 0.78) |
| `#2d2d2d` | 5.9% | --wct--local-design--accordion-headlinesurface, background-color | ×70 (cross-validated, 0.91) |
| `#a9a9a9` | 3.2% | --wct--focus-ring--color-default | ×38 (inferred, 0.6) |
| `#161616` | 2.3% | background-color | ×28 (observed, 0.75) |
| `#e50914` | 2.3% | background-color, --wct--local-design--button-surface, color | ×27 (cross-validated, 0.9) |
| `#808080` | 2.0% | border-color | ×24 (observed, 0.75) |
| `#414141` | 1.5% | background-color, color, --wct--local-design--accordion-headlinesurfacehovered | ×18 (cross-validated, 0.89) |
| `#c11119` | 0.8% | --wct--local-design--button-surfacehovered, background-color | ×10 (cross-validated, 0.88) |
| `#161616` | 0.6% | background-color, --wct--local-design--select-surface | ×7 (inferred, 0.58) |
| `#808080` | 0.5% | border-color, --wct--local-design--select-border, background-color | ×6 (cross-validated, 0.88) |
| `#465a7e` | 0.5% | background-color | ×6 (inferred, 0.58) |
| `#050042` | 0.5% | background-color | ×6 (inferred, 0.58) |
| `#000438` | 0.5% | background-color | ×6 (inferred, 0.58) |

## Typography

### Font Families

| Family | Observed |
|---|---|
| `sans-serif` | ×457 |
| `Netflix Sans` | ×7 |
| `Netflix Sans Variable` | ×4 |
| `unset` | ×4 |
| `NKufi` | ×4 |
| `GraphikTH` | ×4 |

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

### Type Scale

| Token | Size | Observed |
|---|---|---|
| `{type.display}` | 64px | ×9 |
| `{type.h1}` | 24px | ×46 |
| `{type.h2}` | 20px | ×25 |
| `{type.h3}` | 18px | ×75 |
| `{type.body-lg}` | 16px | ×150 |
| `{type.body}` | 14px | ×105 |
| `{type.body-sm}` | 13px | ×13 |
| `{type.caption}` | 12px | ×45 |

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

## Spacing

| Value | Observed |
|---|---|
| `8px` | ×160 |
| `12px` | ×134 |
| `24px` | ×126 |
| `16px` | ×87 |
| `2px` | ×49 |
| `3px` | ×39 |
| `6px` | ×36 |
| `36px` | ×36 |
| `4px` | ×31 |
| `32px` | ×21 |
| `56px` | ×20 |
| `96px` | ×17 |

## Shape (Border Radius)

| Value | Observed |
|---|---|
| `8px` | ×270 |
| `2px` | ×126 |
| `4px` | ×48 |
| `16px` | ×33 |

## Elevation

| Shadow | Observed |
|---|---|
| `0 0.25rem 0.5rem 0 rgba(0,0,0,0.8)` | ×1 |

## Motion

| Duration | Observed |
|---|---|
| `0.25s` | ×120 |
| `0.2s` | ×60 |
| `0.4s` | ×12 |
| `0.5s` | ×10 |
| `250ms` | ×8 |

## Components

Measured computed styles of representative components (desktop viewport).

| Component | Measured spec | Samples |
|---|---|---|
| button.primary | bg `#e50914` · text `#ffffff` · radius `4px` · padding `4px 16px` · font `14px/500` | ×3 |
| form.input | bg `#000000` · text `#ffffff` · border `0px solid rgba(0, 0, 0, 0)` · radius `0px` · padding `6px 36px 6px 34px` · height `32` | ×4 |
| nav | height `88px` · position `static` · link `#ffffff` | — |

### Hero Gradient (observed)

```css
background-image: radial-gradient(11% 56% at 17% 50%, rgb(70, 21, 24) 0%, rgba(0, 0, 0, 0) 100%), radial-gradient(11% 56% at 83% 50%, rgb(70, 21, 24) 0%, rgba(0, 0, 0, 0) 100%);
```

### Interaction States (observed)

| State | Property | From | To |
|---|---|---|---|
| hover | background-color | `rgb(229, 9, 20)` | `rgb(193, 17, 25)` |
| hover | border-color | `rgb(255, 255, 255)` | `rgb(1, 1, 1)` |
| hover | outline-width | `3px` | `0px` |
| focus | background-color | `rgb(229, 9, 20)` | `rgb(193, 17, 25)` |
| focus | border-color | `rgb(255, 255, 255)` | `rgb(0, 0, 0)` |
| focus | outline-width | `3px` | `2px` |

## Accessibility (WCAG Contrast)

| FG | BG | Ratio | AA | Source |
|---|---|---|---|---|
| `#ffffff` | `#000000` | 21 | pass | observed ×144 |
| `#ffffff` | `#2d2d2d` | 13.77 | pass | observed ×39 |
| `#ffffff` | `#232323` | 15.72 | pass | observed ×33 |
| `#ffffff` | `#e50914` | 4.79 | pass | observed ×9 |
| `#414141` | `#232323` | 1.54 | fail | observed ×3 |
| `#ffffff` | `#000000` | 21 | pass | ink_on_background |
| `#ffffff` | `#e50914` | 4.79 | pass | white_on_primary |

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}` (`#e50914`) for primary actions only — that is where it was observed.
- Default text pairing: `{color.ink}` (`#ffffff`) on `{color.background}` (`#000000`).
- Set all text in `sans-serif` (fallbacks only for glyph coverage).
- Pick corner radii from the measured set (8px, 2px, 4px, 16px) — 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 (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.
- Treat `{color.accent}` with caution — confidence below 0.6.

## Provenance

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

---

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