Twitch
Twitch
twitch
Design System
Twitch logo

Twitch

Twitch is the dark-mode-native home of live streaming, and its design language — known internally as Core UI, built on the Ultraviolet color system from the 2019 "Beyond Purple" rebrand — is engineered for one job: surrounding a glowing live video with dense, scannable chrome that never competes with the stream. Even in its light theme (the default f

01

Color Palette

Brand

Accent

Neutrals

Semantic

02

Typography

Type Scale

Rendered in system-ui to clearly show scale & weight.

display32px · 600 · 1.25
Design at scale
24px24px · 600 · 1.25
Section heading
20px20px · 600 · 1.4
Subheading
body16px · 400 · 1.5
Body text. The quick brown fox jumps over the lazy dog. Designed for readable line-height in long-form content.
small12px · 400 · 1.5
Supporting text
caption12px · 400 · 1.5
Caption · timestamp · 2026
label10px · 500 · 1.5
BADGE / LABEL

Fonts

Display
Roobert
Commercial
Used by Clay.
Source · Displaay Type
Primary
Inter
Open · OFL
Designed by Rasmus Andersson. Variable font with full weight range.
Install via Google Fonts
Primary
Roobert TW
Brand-only
Not in the OMD font registry. Likely a brand-proprietary typeface — check the brand's own design site for source/availability.
Not publicly distributed.
03

Spacing & Shape

Spacing

PurposeValuePreview
Densitycompact
Base unit4px
Section gap24px
Card padding12px
Element gap8px

Border Radius

ElementValuePreview
viewerMicro2px
tightMicro2px
liveSmall4px
channelSmall4px
categorySmall4px
searchMedium8px
buttonsFull9999px

Elevation

Subtle
Default
Elevated
Floating
Modal
04

Guidelines

Do and Don't guidelines parsed from DESIGN.md.

Do

  • Reserve Ultraviolet (#9146ff) for the primary action — Sign Up, Download — keep it the single brand-action color
  • Step down the violet ramp for interaction: link #5c16c5, hover #451093, deep #330c6e
  • Use Roobert (Roobert TW) for brand/display and Inter for dense Core UI at 14px / 400
  • Use near-black ink (#0e0e10) over the soft grey canvas (#f7f7f8) instead of pure black on white
  • Keep the system flat — no drop shadows; use translucent scrims for thumbnail metadata
  • Use full-pill (9000px) geometry for buttons and avatars; tight 2–8px radii for functional chrome
  • Reserve scarlet #eb0400 exclusively for the LIVE indicator
  • Let the live video own the visual hierarchy — keep chrome quiet and dense

Don't

  • Spread Ultraviolet across many elements — it dilutes the single-action signal
  • Use pure black (#000000) for body text — reserve near-black ink #0e0e10
  • Add drop shadows or card-stack elevation — Twitch is flat by design
  • Use the scarlet red for anything other than the LIVE state
  • Mix in a second saturated brand hue — purple is the identity
  • Set the dense product UI in Roobert — Inter owns Core UI; Roobert is brand/display
  • Use sharp square corners on buttons or avatars — those are full pills
  • Let chrome out-bright the stream — the video is the focal point, not the UI
05

Components

Buttons

button-primary
Background#9146ff
Text#ffffff
Radius9000px
Font14px / 600 Inter
Use: Sign Up CTA / brand Download — full pill, Ultraviolet
button-secondary
Text#0e0e10
Radius9000px
Font14px / 600 Inter
Use: Log In — translucent rgba(173,173,184,0.22) fill pill

Inputs

input-search
Background#ffffff
Text#0e0e10
Radius8px
Padding0px 12px
Font14px / 400 Inter
Use: Top search field, inset rgba(50,50,57,0.62) 1px ring

Tabs

TabTabTab
nav-link
Text#0e0e10
Font14px / 400 Inter
Activetext #5c16c5
Use: Top + side nav item, active = deep violet

Cards

card-channel
card-channel
Background#f7f7f8
Radius4px
Use: Live channel tile on canvas, thumbnail-led, no shadow

Badges

badge
badge-live
Background#eb0400
Text#ffffff
Radius4px
Padding1px 5px
Font12px / 400 Inter
Use: LIVE status indicator on thumbnails
badge
badge-viewers
Text#ffffff
Radius2px
Padding0px 4px
Font14px / 400 Inter
Use: Viewer-count overlay — rgba(0,0,0,0.6) scrim pill

Avatars

A
avatar
Radius9000px
Use: Channel / user avatar — full circle

Related design systems