Overview
Twitch is a live streaming service. Its public directory is drawn on a pale gray page with near-black ink, one vivid purple for everything branded or clickable, and fully round pill buttons at a compact 32 high. [Observed]
What defines the look:
- One vivid purple.
#9147fffills the sign up button and marks the brand. A deeper#5c16c5carries link and nav text, and#451093fills the dark promotional band. [Measured] - A pale gray page, not white. The body sits on
#f7f7f8with white cards and#efeff1panels, so cards lift without borders. [Measured] - Fully round pills. The rounded radius token is
9000pxand it is the most used corner on the page, applied to buttons, tags and avatars. [Measured] - Two faces with clear jobs. Roobert sets headings and nav labels with tight negative tracking. Inter sets the interface at 14px and the counts at 12px. [Measured]
- A compact 14px interface. Body, links, buttons and channel names all sit at 14px, so the card grid stays dense. [Measured]
Source for this file: the Twitch browse directory and the Just Chatting category page measured in a browser at 1440 and 390 wide, read on 2026-10-06. The 220 custom properties published on the page were read as a cross-check for the color ramp and for the radius and breakpoint names. No app captures were used. See Known Gaps.
Core
Colors
Twitch exposes a numbered purple ramp in the page itself, which gives the exact role names. [Measured]
| Role | Token | Value | Where |
|---|---|---|---|
| Brand purple | --color-twitch-purple-9 | #9147ff | Sign up button, brand mark |
| Deep purple | --color-twitch-purple-7 | #5c16c5 | Nav and link text |
| Band purple | --color-twitch-purple-6 | #451093 | Dark promotional band |
| Text | #0e0e10 | Titles, channel names | |
| Secondary text | #3b3b44 | Viewer counts, meta | |
| Page | #f7f7f8 | Body behind the grid | |
| Card | #ffffff | Search field, cards | |
| Panel | #efeff1 | Section panels, tags | |
| Live | #eb0400 | Live indicator |
The full purple ramp runs from #040109 at step 1 to #f3ebff at step 15, with #772ce8 at step 8 and #a970ff at step 10 flanking the brand step. [Measured]
Typography
Roobert carries display and headings: 60 on 60 at 500 with -1.2px tracking for the page title on desktop, 32 on 44.8 at 400 on mobile, 24 on 26.4 at 500 with -0.24px for a category title, and 18 on 19.8 at 500 with -0.18px for nav labels. Inter carries the interface: 14 on 19.6 at 400 for body and links, 14 on 15.4 at 600 for channel names and buttons, and 12 on 16.8 at 400 for viewer counts. Roobert is loaded at 400, 500, 600 and 700 and Inter at 400, 600 and 700. [Measured]
Shape and spacing
The page publishes its radius scale: none 0, small 0.2rem, medium 0.4rem, large 0.6rem, extra large 1rem, extra extra large 1.6rem and rounded 9000px. In use the rounded pill dominates, with 86 pill corners counted on the directory page, and 6, 4, 10, 8 and 2 appearing on cards and thumbnails. Search fields use 8. Border widths are published as 1px default and 2px for buttons, checkboxes and tags. [Measured]
Iconography and motion
Icons are inline shapes sized to the 14px interface. Motion was not measured. [Observed for the icons, Inferred for motion]
Themes
The public directory renders in the light theme, with the pale gray page and near-black ink. A dark theme exists in the product but was not reachable on the logged out pages, so no dark values are given. [Observed]
Breakpoints
Published as --break-xs 480, sm 768, md 1024, lg 1200, xl 1440 and xxl 1600. [Measured]
Platform: iOS
The Twitch iOS app was not captured. The notes below follow from the web design and platform conventions.
Back and up navigation
Expected on iOS: Chevron plus previous title, swipe from the left edge.
Chevron plus previous title with the edge swipe, as the platform expects. Not confirmed on a device. [Inferred]
Primary navigation
Expected on iOS: Bottom tab bar, about five items.
A bottom tab bar for the main areas of a streaming service. [Inferred]
Main action
Expected on iOS: Nav bar or bottom bar button.
A purple button to follow or subscribe, carried over from the web. [Inferred]
Sheets, dialogs and messages
Expected on iOS: Action sheets, alerts, modals.
Not measured. [Inferred]
Controls
Expected on iOS: Cupertino switches, pickers, segmented controls.
Not measured. [Inferred]
Text sizing
Expected on iOS: Dynamic Type.
Not measured. [Inferred]
Touch and pointer targets
Expected on iOS: 44pt minimum.
Not measured. The web pills are 32 high, which is below the 44pt minimum, so the app is expected to use taller targets. [Inferred]
Insets and system bars
Expected on iOS: Safe areas, status bar.
Not measured. [Inferred]
Icons
Expected on iOS: SF Symbols or custom.
Not measured. [Inferred]
Account and sign-in rules
Expected on iOS: Equivalent login option when third-party sign-in exists (Guideline 4.8) and in-app account deletion. Note the date checked.
Not verified. Sign-in rules and account deletion were not checked. [Inferred] Checked: 2026-10-06 against the public web only.
Platform conformance
Expected on iOS: For each important component: what iOS expects, what this app does, and why it deviates.
The app is expected to share the purple, the ink and the pill shapes with the web. [Inferred]
Platform: Android
The Twitch Android app was not captured. The notes below follow from the web design and platform conventions.
Back and up navigation
Expected on Android: System back and gesture, up arrow in the top bar.
Chevron plus previous title with the edge swipe, as the platform expects. Not confirmed on a device. [Inferred]
Primary navigation
Expected on Android: Navigation bar, rail on tablets.
A bottom navigation bar for the main areas of a streaming service. [Inferred]
Main action
Expected on Android: Floating action button.
A purple button to follow or subscribe. No floating action button was seen on the web, and none is assumed. [Inferred]
Sheets, dialogs and messages
Expected on Android: Bottom sheets, dialogs, snackbars.
Not measured. [Inferred]
Controls
Expected on Android: Material switches, pickers, chips.
Not measured. [Inferred]
Text sizing
Expected on Android: Font scale.
Not measured. [Inferred]
Touch and pointer targets
Expected on Android: 48dp minimum.
Not measured. The web pills are 32 high, which is below the 48dp minimum, so the app is expected to use taller targets. [Inferred]
Insets and system bars
Expected on Android: Edge to edge, system bars.
Not measured. [Inferred]
Icons
Expected on Android: Material Symbols or custom.
Not measured. [Inferred]
Account and sign-in rules
Expected on Android: Account deletion and data safety requirements. Note the date checked.
Not verified. Account deletion and data safety entries were not checked. [Inferred] Checked: 2026-10-06 against the public web only.
Platform conformance
Expected on Android: For each important component: what Android expects, what this app does, and why it deviates.
The app is expected to share the purple, the ink and the pill shapes with the web. [Inferred]
Platform: Web
The Twitch browse directory and the Just Chatting category page, measured at 1440 and 390 wide.
Back and up navigation
Expected on Web: Browser back, breadcrumbs.
Browser back. The category page carries a nav label at 18px in deep purple that returns to the directory. [Observed]
Primary navigation
Expected on Web: Top nav or sidebar.
A top bar holding the brand mark, a browse link, a search field 40 high with an 8px corner, and Log In and Sign Up pills. A left rail lists recommended channels on desktop and collapses at 390. [Observed]
Main action
Expected on Web: Page-level button.
The Sign Up pill: #9147ff fill, white Inter 14 at 600, fully round, 81 by 32. [Measured]
Sheets, dialogs and messages
Expected on Web: Modals, toasts.
Not measured on the public pages. [Inferred]
Controls
Expected on Web: Native or custom.
Pill tags under each card, a search field 36 to 40 high, and card tiles with small 4 to 10 corners. [Measured]
Text sizing
Expected on Web: Browser zoom.
Sizes are fixed pixel values that change at the published breakpoints. The page title drops from 60 to 32 between 1440 and 390. [Measured]
Touch and pointer targets
Expected on Web: Pointer and keyboard.
Buttons and pills measure 32 high and the search field 36 to 40. A skip link comes first in the tab order. [Measured]
Insets and system bars
Expected on Web: Viewport, scrollbars.
Not measured. [Inferred]
Icons
Expected on Web: Any.
Inline shapes sized to the 14px interface. [Observed]
Account and sign-in rules
Expected on Web: Not applicable unless the product has accounts.
Log In and Sign Up sit in the top bar of every public page. The directory itself reads without an account. [Observed]
Platform conformance
Expected on Web: For each important component: what the web norm is, what this app does, and why it deviates.
The responsive page keeps the type faces and the purple and re-flows the card grid, dropping the left rail and shrinking the title at 390. [Measured]
Cross-platform consistency
Consistent across platforms: the brand purple, the near-black ink, the pill shapes and the two type faces. [Measured for web, Inferred for the apps]
Intentionally different: not measured. [Inferred]
Do's and Don'ts
Do
- Use the brand purple for the one main action and the deeper step for nav and link text.
- Keep buttons and tags fully round.
- Sit white cards on the pale gray page instead of drawing borders.
- Keep the interface at 14px and the counts at 12px.
- Set headings in the display face with tight negative tracking.
Don't
- Don't use the brand purple for body text.
- Don't give buttons a small square corner.
- Don't put the page on pure white.
- Don't use the live red for anything other than the live state.
Known Gaps
- The dark theme was not measured, because the public pages render in the light theme and the toggle sits behind an account.
- The signed-in product, the channel page, the video player and chat were not measured.
- The iOS and Android apps were not captured. Their sections are inferred from the web design and platform conventions.
- Motion, the exact spacing steps and the icon set were not measured.
- Account deletion and store policy rules were not verified.
- Roobert is private. Albert Sans was chosen as the open alternative after rendering the real face next to candidates at 60px/500 and 18px/500, where it matched the measured line width within 0.4 percent at both sizes and shares the geometric grotesque structure. DM Sans and Instrument Sans were close behind, so this is a judgement call.