Social Networking

Snapchat

Snapchat Web 2024

snap-yellow brand anchorpill-radius interaction languagedual-font editorial hierarchymedia-immersive content cardshigh-contrast dark-on-white CTA

Snapchat's web presence uses a high-contrast light theme anchored by its iconic #FFFC00 brand yellow, near-black (#121314) primary surfaces, and a clean white page background. The design pairs Avenir Next (primary) with Graphik (secondary) for a friendly yet structured typographic hierarchy. Interaction elements — buttons, pills, and tags — use fully rounded (100px) radii, while inputs use a subtle 5px radius. Navigation is a floating pill with a soft drop shadow. Content is presented in large media cards with overlaid white text, creating an immersive, app-preview-forward layout. The overall density is moderate, with generous spacing and a clear visual hierarchy that bridges marketing and product UI conventions.

16Colors
10Type styles
17Spacing
5Radii

Colors

Light Theme

Surface

Page Backgroundbackground
Main page background, nav background, card surfaces
Secondary Button BGbackground
Secondary/disabled button backgrounds, input fill
Action Bluebackground
Primary alt button bg (Log in CTA), highlight action color, links
Card / Feed Backgroundbackground
Card backgrounds, feed surface

Text

Primary Action / Button BGtext
Primary button backgrounds (Download, Snapchat Ads), nav surface button bg
Brand Yellowtext
Snapchat brand color, ghost gradient, footer accents, logo context
Body Text / Secondarytext
Nav labels, body copy, secondary text throughout
Primary Text / Near Blacktext
Headings, strong text, icon fills, footer text
Button Text / Whitetext
Text on dark primary buttons, overlaid card headlines

Border

Nav Borderborder
Navigation bar bottom border, secondary button hover state

Dark Theme

Surface

Page Backgroundbackground
Main page background (dark theme shares same CSSOM data — no distinct dark surface detected)
Action Bluebackground
Log in button, highlight action

Text

Primary Action / Button BGtext
Primary button backgrounds
Brand Yellowtext
Brand accent, logo, footer highlights
Body Texttext
Nav labels, body copy
Primary Texttext
Headings, strong text

Typography

Hero/display-level headings
The quick brown fox jumps
Avenir Next, Helvetica, sans-serif48px · 600 · 60px
Section titles, card overlay headlines
The quick brown fox jumps
Avenir Next, Helvetica, sans-serif28px · 700 · 36px
Sub-section headings, feature titles
The quick brown fox jumps
Avenir Next, Helvetica, sans-serif22px · 600 · 28px
Primary body copy, login form labels
The quick brown fox jumps
Avenir Next, Helvetica, sans-serif16px · 400 · normal
Medium-emphasis body text, feature descriptions
The quick brown fox jumps
Avenir Next, Helvetica, sans-serif16px · 500 · 24px
Secondary body text, descriptions
The quick brown fox jumps
Avenir Next, Helvetica, sans-serif14px · 400 · 17px
Button labels, nav item labels, interactive labels
The quick brown fox jumps
Avenir Next, Helvetica, sans-serif14px · 500 · 18px
Strong labels, emphasized UI text
The quick brown fox jumps
Avenir Next, Helvetica, sans-serif14px · 700 · normal
Navigation item text, secondary UI labels
The quick brown fox jumps
Graphik, Helvetica, sans-serif14px · 400 · normal
Captions, badges, small labels
The quick brown fox jumps
Avenir Next, Helvetica, sans-serif12px · 600 · normal

Fonts

Avenir NextCustom
GraphikCustom
HelveticaSystem
ArialSystem

Spacing & Shape

Spacing

spacing-1
2px
spacing-2
3px
spacing-3
4px
spacing-4
5px
spacing-5
6px
spacing-6
7px
spacing-7
8px
spacing-8
10px
spacing-9
12px
spacing-10
15px
spacing-11
16px
spacing-12
20px
spacing-13
29px
spacing-14
30px
spacing-15
35px
spacing-16
40px
spacing-17
43px

Border Radius

radius-input5px
radius-nav6px
radius-card8px
radius-tag20px
radius-pill100px
---
version: alpha
name: "Snapchat Web 2024"
description: "Typography baseline relies on Avenir Next, Helvetica, sans-serif for hero/display-level headings."
colors:
  action-blue: "#0096e5"
  page-background: "#ffffff"
  body-text: "#53575b"
  brand-yellow: "#fffc00"
  primary-action-button-bg: "#121314"
  primary-text: "#000000"
  card-feed-background: "#f8f9fb"
  secondary-button-bg: "#f0f1f2"
  body-text-secondary: "#53575b"
  button-text-white: "#ffffff"
  primary-text-near-black: "#000000"
  nav-border: "#e9eaeb"
typography:
  display-heading:
    fontFamily: "Avenir Next, Helvetica, sans-serif"
    fontSize: "48px"
    fontWeight: "600"
    lineHeight: "60px"
  section-heading:
    fontFamily: "Avenir Next, Helvetica, sans-serif"
    fontSize: "28px"
    fontWeight: "700"
    lineHeight: "36px"
  sub-heading:
    fontFamily: "Avenir Next, Helvetica, sans-serif"
    fontSize: "22px"
    fontWeight: "600"
    lineHeight: "28px"
  body-default:
    fontFamily: "Avenir Next, Helvetica, sans-serif"
    fontSize: "16px"
    fontWeight: "400"
  body-small:
    fontFamily: "Avenir Next, Helvetica, sans-serif"
    fontSize: "14px"
    fontWeight: "400"
    lineHeight: "17px"
  label-medium:
    fontFamily: "Avenir Next, Helvetica, sans-serif"
    fontSize: "14px"
    fontWeight: "500"
    lineHeight: "18px"
  label-bold:
    fontFamily: "Avenir Next, Helvetica, sans-serif"
    fontSize: "14px"
    fontWeight: "700"
  caption:
    fontFamily: "Avenir Next, Helvetica, sans-serif"
    fontSize: "12px"
    fontWeight: "600"
  nav-label:
    fontFamily: "Graphik, Helvetica, sans-serif"
    fontSize: "14px"
    fontWeight: "400"
  body-medium-emphasis:
    fontFamily: "Avenir Next, Helvetica, sans-serif"
    fontSize: "16px"
    fontWeight: "500"
    lineHeight: "24px"
rounded:
  radius-input: "5px"
  radius-nav: "6px"
  radius-card: "8px"
  radius-tag: "20px"
  radius-pill: "100px"
spacing:
  spacing-1: "2px"
  spacing-2: "3px"
  spacing-3: "4px"
  spacing-4: "5px"
  spacing-5: "6px"
  spacing-6: "7px"
  spacing-7: "8px"
  spacing-8: "10px"
  spacing-9: "12px"
  spacing-10: "15px"
  spacing-11: "16px"
  spacing-12: "20px"
  spacing-13: "29px"
  spacing-14: "30px"
  spacing-15: "35px"
  spacing-16: "40px"
---

## Overview

Typography baseline relies on Avenir Next, Helvetica, sans-serif for hero/display-level headings.

This system uses a 4px base grid with scale values 2, 3, 4, 5, 6, 7, 8, 10, 12, 15, 16, 20, 29, 30, 35, 40, 43.

**Signature traits:**
- Core token rhythm: Token evidence indicates consistent color, spacing, and radius rhythm across visible UI.

## Colors

The palette uses 16 validated color tokens across 2 theme profiles. Semantic roles stay attached to observed usage so generation agents can choose accents without inventing new color meaning.

**Semantic naming:**
- **surface-background** maps to `page-background`: Role "background" is grounded by usage context "Main page background, nav background, card surfaces".
- **action-text** maps to `primary-action-button-bg`: Role "text" is grounded by usage context "Primary button backgrounds (Download, Snapchat Ads), nav surface button bg".
- **content-text** maps to `brand-yellow`: Role "text" is grounded by usage context "Snapchat brand color, ghost gradient, footer accents, logo context".
- **action-border** maps to `nav-border`: Role "border" is grounded by usage context "Navigation bar bottom border, secondary button hover state".

### Dark Theme

### Text Scale
- **Body Text** (#53575b): Nav labels, body copy. Role: text. {authored: rgb(83, 87, 91), space: rgb}
- **Brand Yellow** (#fffc00): Brand accent, logo, footer highlights. Role: text. {authored: rgb(255, 252, 0), space: rgb}
- **Primary Action / Button BG** (#121314): Primary button backgrounds. Role: text. {authored: rgb(18, 19, 20), space: rgb}
- **Primary Text** (#000000): Headings, strong text. Role: text. {authored: rgb(0, 0, 0), space: rgb, alpha: 0.05}

### Surface & Shadows
- **Action Blue** (#0096e5): Log in button, highlight action. Role: background. {authored: rgb(0, 150, 229), space: rgb}
- **Page Background** (#ffffff): Main page background (dark theme shares same CSSOM data — no distinct dark surface detected). Role: background. {authored: rgb(255, 255, 255), space: rgb}

### Light Theme

### Text Scale
- **Body Text / Secondary** (#53575b): Nav labels, body copy, secondary text throughout. Role: text. {authored: rgb(83, 87, 91), space: rgb}
- **Brand Yellow** (#fffc00): Snapchat brand color, ghost gradient, footer accents, logo context. Role: text. {authored: rgb(255, 252, 0), space: rgb}
- **Button Text / White** (#ffffff): Text on dark primary buttons, overlaid card headlines. Role: text. {authored: rgb(255, 255, 255), space: rgb}
- **Primary Action / Button BG** (#121314): Primary button backgrounds (Download, Snapchat Ads), nav surface button bg. Role: text. {authored: rgb(18, 19, 20), space: rgb}
- **Primary Text / Near Black** (#000000): Headings, strong text, icon fills, footer text. Role: text. {authored: rgb(0, 0, 0), space: rgb, alpha: 0.05}

### Interactive
- **Nav Border** (#e9eaeb): Navigation bar bottom border, secondary button hover state. Role: border. {authored: rgb(233, 234, 235), space: rgb}

### Surface & Shadows
- **Action Blue** (#0096e5): Primary alt button bg (Log in CTA), highlight action color, links. Role: background. {authored: rgb(0, 150, 229), space: rgb}
- **Card / Feed Background** (#f8f9fb): Card backgrounds, feed surface. Role: background. {authored: rgb(248, 249, 251), space: rgb}
- **Page Background** (#ffffff): Main page background, nav background, card surfaces. Role: background. {authored: rgb(255, 255, 255), space: rgb}
- **Secondary Button BG** (#f0f1f2): Secondary/disabled button backgrounds, input fill. Role: background. {authored: rgb(240, 241, 242), space: rgb}

## Typography

Typography uses Avenir Next, Helvetica, sans-serif, Graphik, Helvetica, sans-serif across extracted hierarchy roles. Keep hierarchy mapped to these token rows before adding decorative type styles.

Mixes Avenir Next, Helvetica, sans-serif and Graphik, Helvetica, sans-serif for visual contrast. Weight range spans semi-bold, bold, regular, medium. Sizes range from 12px to 48px.

### Font Roles
- **Headline Font**: Avenir Next
- **Body Font**: Avenir Next

### Type Scale Evidence
| Role | Font | Size | Weight | Line Height | Letter Spacing | Stack / Features | Notes |
|------|------|------|--------|-------------|----------------|------------------|-------|
| Hero/display-level headings | Avenir Next, Helvetica, sans-serif | 48px | 600 | 60px | normal | Avenir Next, Helvetica, sans-serif | Extracted token |
| Section titles, card overlay headlines | Avenir Next, Helvetica, sans-serif | 28px | 700 | 36px | normal | Avenir Next, Helvetica, sans-serif | Extracted token |
| Sub-section headings, feature titles | Avenir Next, Helvetica, sans-serif | 22px | 600 | 28px | normal | Avenir Next, Helvetica, sans-serif | Extracted token |
| Primary body copy, login form labels | Avenir Next, Helvetica, sans-serif | 16px | 400 | normal | normal | Avenir Next, Helvetica, sans-serif | Extracted token |
| Secondary body text, descriptions | Avenir Next, Helvetica, sans-serif | 14px | 400 | 17px | normal | Avenir Next, Helvetica, sans-serif | Extracted token |
| Button labels, nav item labels, interactive labels | Avenir Next, Helvetica, sans-serif | 14px | 500 | 18px | normal | Avenir Next, Helvetica, sans-serif | Extracted token |
| Strong labels, emphasized UI text | Avenir Next, Helvetica, sans-serif | 14px | 700 | normal | normal | Avenir Next, Helvetica, sans-serif | Extracted token |
| Captions, badges, small labels | Avenir Next, Helvetica, sans-serif | 12px | 600 | normal | normal | Avenir Next, Helvetica, sans-serif | Extracted token |
| Navigation item text, secondary UI labels | Graphik, Helvetica, sans-serif | 14px | 400 | normal | normal | Graphik, Helvetica, sans-serif | Extracted token |
| Medium-emphasis body text, feature descriptions | Avenir Next, Helvetica, sans-serif | 16px | 500 | 24px | normal | Avenir Next, Helvetica, sans-serif | Extracted token |

## Layout

Responsive system uses 1 breakpoint tier(s): mobile.

### Responsive Strategy
- **mobile (<= 767px)**: Constrain layout for small viewports and prioritize vertical stacking.

### Spacing System
| Token | Value | Px | Notes |
|------|-------|----|-------|
| spacing-1 | 2px | 2 | Extracted spacing token |
| spacing-2 | 3px | 3 | Extracted spacing token |
| spacing-3 | 4px | 4 | Extracted spacing token |
| spacing-4 | 5px | 5 | Extracted spacing token |
| spacing-5 | 6px | 6 | Extracted spacing token |
| spacing-6 | 7px | 7 | Extracted spacing token |
| spacing-7 | 8px | 8 | Mapped to --search-bar-margin |
| spacing-8 | 10px | 10 | Extracted spacing token |
| spacing-9 | 12px | 12 | Extracted spacing token |
| spacing-10 | 15px | 15 | Extracted spacing token |
| spacing-11 | 16px | 16 | Extracted spacing token |
| spacing-12 | 20px | 20 | Extracted spacing token |
| spacing-13 | 29px | 29 | Extracted spacing token |
| spacing-14 | 30px | 30 | Extracted spacing token |
| spacing-15 | 35px | 35 | Extracted spacing token |
| spacing-16 | 40px | 40 | Extracted spacing token |
| spacing-17 | 43px | 43 | Extracted spacing token |

## Elevation & Depth

Keep depth flat unless validated shadow or interaction evidence appears in the extraction payload. Do not invent shadows beyond this evidence boundary.

### Shadow Evidence
| Shadow Token | Layers | Details |
|--------------|--------|---------|
| nav-shadow | 1 | 0px 6px 12px 4px rgba(0, 0, 0, 0.1) |

### Interaction Signals
| Theme | Signal | Evidence |
|-------|--------|----------|
| Light | outline-color | rgb(83, 87, 91) ; rgb(0, 0, 0) ; rgb(255, 255, 255) |
| Light | outline-width | 3px |
| Light | outline-offset | 0px |
| Light | transform | matrix3d(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1) ; matrix(1, 0, 0, 0.95, 0, 0) |
| Dark | outline-color | rgb(83, 87, 91) ; rgb(0, 0, 0) ; rgb(255, 255, 255) |
| Dark | outline-width | 3px |
| Dark | outline-offset | 0px |
| Dark | transform | matrix3d(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1) ; matrix(1, 0, 0, 0.95, 0, 0) |

## Shapes

Shape language maps directly to rounded tokens. Keep component corners consistent with the role mapping below before introducing bespoke geometry.

### Radius Roles
| Token | Value | Px | Role Mapping |
|------|-------|----|--------------|
| radius-input | 5px | 5 | Subtle corner |
| radius-nav | 6px | 6 | Subtle corner |
| radius-card | 8px | 8 | Control corner |
| radius-tag | 20px | 20 | Card corner |
| radius-pill | 100px | 100 | Large surface corner |

### Geometry Evidence
| Radius Token | Shape | Units |
|--------------|-------|-------|
| radius-input | 5px | px |
| radius-nav | 6px | px |
| radius-card | 8px | px |
| radius-tag | 20px | px |
| radius-pill | 100px | px |

## Components

(none detected)

## Do's and Don'ts

Guardrails protect Core token rhythm without adding unsupported visual claims.

| Do | Don't |
|----|---------|
| Do maintain consistent spacing using the base grid | Don't make unsupported claims about absent visual features |
| Do maintain WCAG AA contrast ratios (4.5:1 for normal text) | Don't mix rounded and sharp corners in the same view |
| Do use the primary color only for the single most important action per screen |  |
| Do verify evidence before writing new design-system guidance |  |

## Responsive Evidence

### Breakpoints
| Name | Width | Key Changes |
|------|-------|-------------|
| Mobile | <= 767px | (max-width: 767px) |

## Agent Prompt Guide

### Example Component Prompts
- Create button component using validated primary color role and spacing tokens.
- Create card component with mapped radius role and evidence-backed elevation.
- Create form input component using inferred typography hierarchy and border roles.

### Iteration Guide
1. Start with extracted palette and typography roles only.
2. Map spacing and radius directly from token tables before visual polish.
3. Apply component patterns one section at a time and compare against source intent.
4. Keep elevation claims tied to explicit evidence in output.
5. Iterate with smallest diffs and re-check section hierarchy after each change.
Design Extractor

Turn any website into a structured design spec that AI coding agents can use to build pixel-perfect UI.

© 2026 Design Extractor. All rights reserved.