DESIGN.md · Analysis

Roblox

roblox.com · 20 May 2026 · 47 colors · Builder Sans

Roblox

Roblox is a global platform for immersive, user-generated 3D experiences. The design system balances dark, high-contrast accessibility with vibrant accent colors that drive engagement and signal interactive moments.

Colors

surface#191a1f
surface-dim#121215
surface-bright#272930
surface-container-lowest#0f1013
surface-container-low#1a1b20
surface-container#1f2027
surface-container-high#2a2b32
surface-container-highest#35363d
on-surface#f7f7f8
on-surface-variant#bcbec8
inverse-surface#f7f7f8
inverse-on-surface#191a1f
outline#70a0ff
outline-variant#494d5a
surface-tint#335fff
primary#ffffff
on-primary#191a1f
primary-container#e6e7ea
on-primary-container#272930
inverse-primary#191a1f
secondary#70a0ff
on-secondary#0f1013
secondary-container#335fff
on-secondary-container#f7f7f8
tertiary#39c582
on-tertiary#0f1013
tertiary-container#01854b
on-tertiary-container#f7f7f8
error#e75750
on-error#f7f7f8
error-container#8b3a37
on-error-container#f7f7f8
primary-fixed#f7f7f8
primary-fixed-dim#e6e7ea
on-primary-fixed#0f1013
on-primary-fixed-variant#272930
secondary-fixed#70a0ff
secondary-fixed-dim#335fff
on-secondary-fixed#0f1013
on-secondary-fixed-variant#1a1b20
tertiary-fixed#39c582
tertiary-fixed-dim#01854b
on-tertiary-fixed#0f1013
on-tertiary-fixed-variant#1a1b20
background#191a1f
on-background#f7f7f8
surface-variant#2a2b32

Typography

display
fontFamily: Builder Sans · fontSize: 60px · fontWeight: 700 · lineHeight: 68px · letterSpacing: -0.02em
headline-lg
fontFamily: Builder Sans · fontSize: 40px · fontWeight: 600 · lineHeight: 48px · letterSpacing: -0.01em
headline-md
fontFamily: Builder Sans · fontSize: 28px · fontWeight: 600 · lineHeight: 36px · letterSpacing: 0em
title-lg
fontFamily: Builder Sans · fontSize: 20px · fontWeight: 600 · lineHeight: 28px · letterSpacing: 0.01em
body-lg
fontFamily: Builder Sans · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0em
body-md
fontFamily: Builder Sans · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0em
label-md
fontFamily: Builder Sans · fontSize: 14px · fontWeight: 500 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Builder Sans · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.02em

Design guidance

Overview

Roblox is a platform-agnostic metaverse engine serving millions of creators and players globally. The design system embraces a 'Dark-Centric Maximalism' aesthetic: a near-black canvas (rgb(25, 26, 31)) acts as a neutral stage, while vibrant accent colors—electric blue (#335fff), vivid green (#39c582), and pure white (#ffffff)—punctuate the interface to signal interactivity, success, and primary actions. The emotional response is energetic yet controlled: the dark background reduces cognitive load during extended play sessions, while the saturated accent palette creates moments of visual delight and clear affordance hierarchy.

The brand voice is youthful, direct, and action-oriented. Vocabulary emphasizes creation ('build', 'imagine', 'create'), community ('friends', 'together', 'global'), and possibility ('infinite', 'anything', 'experience'). Example sentence in brand voice: 'Imagine, create, and play together with millions of people across an infinite variety of immersive, user-generated 3D worlds.'

Colors

The color system is built on a dark-first foundation with high-contrast accents. Surface (#191a1f) and its container variants (surface-dim #121215 through surface-container-highest #35363d) provide the foundational palette, ensuring text legibility at 16px body size with on-surface (#f7f7f8) achieving WCAG AAA contrast ratios. Primary (#ffffff) is reserved exclusively for the most prominent CTA (Log In button, 48px height, 8px border-radius, 9px vertical padding) and high-emphasis interactive states. Secondary (#70a0ff) and its container (#335fff) drive secondary actions, progress indicators, and focus states—applied at 8px border-radius with 1px inset focus rings (box-shadow: inset 0 0 0 1px #335fff). Tertiary (#39c582) and error (#e75750) are used for success confirmations and destructiv

Typography

The typography system uses Builder Sans exclusively across all scales, from display (60px, 700 weight, -0.02em letter-spacing) down to label-sm (12px, 500 weight, 0.02em letter-spacing). The hierarchy is built on a 4px baseline grid: display and headline-lg use tighter letter-spacing (-0.02em, -0.01em) to create visual compression and authority, while body-md (16px, 400 weight, 24px line-height) and body-lg (18px, 400 weight, 28px line-height) maintain 1.5x line-height ratios for readability over dark backgrounds. All labels use 500 weight to ensure legibility at small sizes; apply text-shadow: 0 2px 4px rgba(0, 0, 0, 0.15) on label-sm elements placed over busy game-preview backgrounds. Title-lg (20px, 600 weight) is used for card headers and section titles, with 28px line-height providing

Layout

The layout system uses a 12-column grid with a 1280px max-width container, centered with equal gutters (24px on each side). Page rhythm is established through lg spacing (40px) between major sections (hero, sign-up form, device download section), md spacing (24px) between cards and form groups, and sm spacing (12px) between list items and inline elements. The sign-up form occupies a centered column (approximately 416px wide) with 24px padding on all sides, creating a focal point against the full-bleed background image. Input fields use 40px height with 5px vertical padding and 12px horizontal padding, maintaining touch-target minimums. The footer uses a 4-column layout at desktop, collapsing to 2 columns at tablet (768px breakpoint) and 1 column on mobile (375px breakpoint).

Elevation & Depth

Depth is conveyed through layered semi-transparent overlays and subtle shadows rather than sharp elevation jumps. Level 1 (Base): full-bleed background image with rgba(0, 0, 0, 0.5) overlay, creating a darkened canvas. Level 2 (Cards & Modals): rgba(0, 0, 0, 0.5) background with 1px border at rgba(208, 217, 251, 0.1), paired with box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15). Level 3 (Elevated Modals & Popovers): rgba(0, 0, 0, 0.6) background with box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25). Hover states on cards transition to rgba(0, 0, 0, 0.6) with the Level 2 shadow, creating a subtle lift. Focu

Shapes

The shape system follows 'Soft-Technical Precision': a blend of sharp utility and approachable curves. Buttons and inputs use 8px border-radius (DEFAULT), creating a modern, slightly rounded aesthetic that feels contemporary without being overly organic. Cards and containers use 12px (md) for secondary surfaces, and 16px (lg) for elevated modals, increasing radius as elevation increases. The full radius (9999px) is reserved for badges and pill-shaped elements (tertiary-container background with 4px vertical padding). The 3px (sm) radius is used sparingly for micro-interactions like focus rings

Components

Action Elements Buttons are the primary interaction primitive. button-primary uses white (#ffffff) background with 191a1f text, 40px height, 8px border-radius, and 9px vertical padding (total 24px horizontal). On hover, the background transitions to primary-fixed-dim (#e6e7ea) with a 150ms ease-out timing function. button-secondary mirrors the primary structure but uses surface-container-high (#2a2b32) background with on-surface text; on hover, it shifts to surface-container-highest (#35363d). button-accent applies secondary (#70a0ff) background with on-secondary text for high-emphasis secondary actions; hover state uses secondary-fixed-dim (#335fff). All buttons use font-weight: 500 and label-md typography (14px, 20px line-height, 0.01em letter-spacing). Focus states apply outline: 2p

Do's and Don'ts

**Do**

  • Do use primary (#ffffff) exclusively for the most prominent CTA on each page—typically a single Log In or Sign Up button at 40px height with 8px radius.
  • Do apply secondary (#70a0ff) and tertiary (#39c582) as accent colors for secondary actions, progress indicators, and success states; never use them for body text.
  • Do maintain 24px gutter spacing on desktop, reducing to 16px on tablet and 12px on mobile, to preserve the visual rhythm across breakpoints.
  • Do use Builder Sans at 500 weight for all labels and buttons to ensure legibility at small sizes over dark backgrounds.
  • Do apply box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15) on card hover states to create a subtle depth transition without introducing new colors.

**Don't**

  • Don't use primary (#ffffff) for body text or secondary UI elements; reserve it for high-emphasis CTAs and focus states only.
  • Don't apply border-radius values outside the defined scale (3px, 8px, 12px, 16px, 24px, 9999px); arbitrary radii break the visual system.
  • Don't use outline-width greater than 2px on focus states; the secondary (#70a0ff) 2px outline with 2px offset is the standard.
  • Don't layer more than two semi-transparent overlays (e.g., rgba(0, 0, 0, 0.5) + rgba(0, 0, 0, 0.1)) on the same surface; use discrete opacity values instead.
  • Don't apply letter-spacing greater than 0.02em on body text; tighter spacing (0em to -0.02em) is reserved for display and headline scales.