Tumblr Design System Deep Dive
1. Brand Overview
Tumblr’s visual language is a strange mix of nostalgia and modern UI pragmatism. It’s got roots in early blogging culture, but the current design is cleaner, more structured, and far more deliberate than its chaotic reputation suggests. The brand is for people who value expression — the interface has to carry everything from minimalistic text posts to heavily stylized GIF sets.
The vibe: slightly moody, with a dark base palette dominated by deep blues (#4c5e72 and navy tones) and occasional neon pops (#00b8ff). This isn’t the sterile white of Medium or the hyper-polished gradients of Instagram. Tumblr leans into contrast — muted surfaces with bright accents — which suits its eclectic, layered content.
Philosophy-wise, Tumblr’s UI prioritizes content over chrome. Most interactive elements are pill-shaped (border radius 9999px), which keeps CTAs soft and approachable. The typography is a mix of utilitarian sans-serif (Favorit, Favorit Modern) and occasional serif (Georgia) for emphasis. That serif injection is a nod to long-form writing — a reminder Tumblr isn’t just about images.
Audience? The design speaks to people who want flexibility without losing aesthetic coherence. It’s not locked into a rigid corporate grid — breakpoints range from 350px to 1861px, meaning the site is fluid across devices. But under the hood, it’s disciplined: 8px spacing scale, consistent component padding, strong tokenization.
In short: Tumblr’s design system is a balance between expressive freedom and predictable UI patterns. They’ve nailed the “content-first” principle while maintaining enough brand-specific quirks to feel distinct from other social platforms.
2. Color System
2.1 Primary Colors
The hero color is bright cyan (#00b8ff), used for primary actions (sign-up, key CTAs). It’s punchy against the deep blues and grays that dominate surfaces. Psychologically, cyan is energetic but not aggressive — it invites interaction without screaming urgency.
Compared to competitors:
- Twitter’s blue is more muted and corporate.
- Instagram leans into warm gradients.
- Tumblr’s cyan is cooler and more digital, fitting its tech-forward but playful personality.
The secondary palette is a sprawling set of functional colors — navy, purple, pink, orange, yellow, green — each with multiple tints/shades for states and content themes.
2.2 Complete Palette
Here’s everything, straight from the extracted tokens:
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Base Blue (UI) | #4c5e72 | Surface background | Page chrome, headers |
| Translucent White | #ffffff @ 0.13 | Overlay | Dividers, subtle borders |
| Bright Cyan | #33c6ff / #00b8ff | Primary action | Buttons, links |
| Black | #000000 | Text, icons | Body text, high contrast |
| White | #ffffff | Text on dark | Text in dark theme buttons |
| Green-90 | #00290b | Dark green bg | Status tags, dark mode accents |
| Pink-tint-90 | rgba(255,97,206,.9) | Accent overlay | Pink highlights |
| Yellow-40 | #eddf61 | Accent | Decorative UI |
| Orange-10 | #ffe8cc | Light bg | Alerts, promo banners |
| Yellow-tint-60 | rgba(232,215,58,.6) | Overlay | Soft yellow accents |
| Orange-60 | #cc6e00 | Dark orange | Warning text |
| Yellow-60 | #baac2e | Dark yellow | Warning states |
| Brand-purple-tint | rgba(124, 92, 255, 0.1) | Overlay | Purple UI elements |
| Gray-15 | #d9d9d9 | Light gray | Borders, dividers |
| Navy-tint-5 | rgba(0,25,53,.05) | Overlay | Subtle surface shading |
| Yellow-30 | #f1e789 | Accent | Highlights |
| Blue-30 | #66d4ff | Light blue | Hover states |
| Blue-tint-10 | rgba(0,184,255,.1) | Overlay | Button hover glow |
| Orange-50 | #ff8a00 | Accent | Alerts |
| Green-tint-10 | rgba(1,207,53,.1) | Overlay | Success highlights |
| UI-fg-tertiary | rgba(102,102,102,1) | Tertiary text | Secondary UI labels |
| Blue-5 | #e5f8ff | Light background | Info banners |
| Red-60 | #cc3a26 | Error | Critical alerts |
| Red-tint-60 | rgba(255,73,48,.6) | Overlay | Error highlights |
| Blue-10 | #ccf1ff | Light blue bg | Info surfaces |
| Green-70 | #017c20 | Dark green | Success text |
| Pink-95 | #190a15 | Dark pink | Thematic backgrounds |
| Gray-80 | #333333 | Dark gray | Body text (light mode) |
| Gray-20 | #cccccc | Light gray | Borders |
| Gray-30 | #b3b3b3 | Mid gray | Secondary text |
| Green-95 | #001505 | Near black green | Dark mode |
| Gray-100 | #000000 | Black | Text, icons |
| Purple-90 | #191233 | Dark purple | Background accents |
| Navy-90 | #1a3049 | Dark navy | Headers, footers |
| Brand-red-pressed | rgba(255,146,131,1) | Pressed state | Red buttons |
| Red-5 | #ffedea | Light red bg | Error background |
| Purple-40 | #967dff | Accent purple | Links, highlights |
| Red-70 | #992c1d | Dark red | Error text |
| Gray-10 | #e5e5e5 | Light gray | Borders |
| Gray-5 | #f2f2f2 | Lightest gray | Surface |
| Navy-85 | #263b53 | Dark navy | Cards |
| Orange-90 | #331c00 | Dark orange | Warning bg |
| Navy-80 | #33475d | Mid navy | UI surfaces |
| Yellow-90 | #2e2b0c | Dark yellow | Warning bg |
| Green-30 | #67e286 | Bright green | Success bg |
| Green-40 | #34d95d | Bright green | Success text |
| Yellow-20 | #f6efb0 | Light yellow | Warning bg |
| Pink-80 | #662752 | Dark pink | Background |
| Yellow-5 | #fdfbeb | Light yellow | Alert bg |
| Navy-20 | #ccd1d7 | Light navy | Borders |
| Gray-40 | #999999 | Text | Secondary labels |
| Yellow-10 | #faf7d8 | Light yellow | Surfaces |
| Brand-purple-pressed | rgba(176,157,255,1) | State | Purple button pressed |
| Purple-70 | #4a3799 | Dark purple | Accent |
| Red-95 | #190705 | Dark red | Background |
| Gray-70 | #4c4c4c | Text | Body |
| Gray-90 | #1a1a1a | Dark gray | Text |
| Brand-red-hover | rgba(255,109,89,1) | Hover state | Red buttons |
| Purple-80 | #322566 | Dark purple | Background |
| Pink-10 | #ffdff5 | Light pink | Accent bg |
| Yellow-80 | #5d5617 | Dark yellow | Text |
| Rainbow-9 | #be5fe6 | Accent | Multicolor UI |
| Gray-85 | #262626 | Dark gray | Background |
| Yellow-95 | #171506 | Dark yellow | Bg |
| Purple-95 | #0c0919 | Dark purple | Bg |
| Pink-70 | #993a7c | Dark pink | Accent text |
| Rainbow-7 | #ff557f | Accent | Multicolor UI |
| Blue-80 | #004a66 | Dark blue | Text |
| Pink-20 | #ffc0eb | Light pink | Bg |
| Brand-orange-hover | rgba(255,161,51,1) | Hover state | Orange buttons |
| Green-60 | #01a62a | Bright green | Success |
| Pink-60 | #cc4ea5 | Accent pink | Text |
| Blue-20 | #99e3ff | Light blue | Hover bg |
| Yellow-70 | #8b8123 | Dark yellow | Text |
| Red-10 | #ffdbd6 | Light red | Bg |
| Orange-30 | #ffb966 | Light orange | Bg |
| Rainbow-2 | #74d338 | Accent | Multicolor UI |
| Gray-50 | gray | Mid gray | Text |
| Green-80 | #005315 | Dark green | Bg |
| Orange-70 | #995300 | Dark orange | Text |
| Orange-80 | #663700 | Dark orange | Bg |
| Gray-95 | #0d0d0d | Near black | Bg |
| Brand-pink-hover | rgba(255,129,216,1) | Hover | Pink buttons |
| Orange-95 | #190e00 | Dark orange | Bg |
| Brand-pink-pressed | rgba(255,160,226,1) | Pressed | Pink buttons |
| Blue-90 | #002533 | Dark blue | Bg |
| Navy-15 | #d9dde1 | Light navy | Border |
| Purple-20 | #cbbeff | Light purple | Bg |
| Orange-20 | #ffd099 | Light orange | Bg |
| Green-5 | #e6faeb | Light green | Bg |
| Brand-blue-hover | rgba(51,198,255,1) | Hover | Blue buttons |
| Navy-60 | #667586 | Mid navy | Text |
| Purple-5 | #f2efff | Light purple | Bg |
| Red-90 | #330f0a | Dark red | Bg |
| Purple-60 | #634acc | Accent purple | Text |
| Navy-50 | #808c9a | Mid navy | Text |
| Navy-10 | #e5e8eb | Light navy | Border |
| Navy-30 | #b3bac2 | Light navy | Text |
| Gray-60 | #666666 | Mid gray | Text |
| Purple-10 | #e5deff | Light purple | Bg |
| UI-fg-secondary | rgba(153,153,153,1) | Secondary text | Labels |
| Red-20 | #ffb6ac | Light red | Bg |
| Navy-95 | #0d243f | Dark navy | Bg |
| Navy-5 | #f2f4f5 | Light navy | Bg |
| Navy-40 | #99a3ae | Mid navy | Text |
| Blue-95 | #001219 | Dark blue | Bg |
| Red-80 | #661d13 | Dark red | Text |
| Pink-90 | #331329 | Dark pink | Bg |
| Rainbow-5 | #ff6918 | Accent | Multicolor |
| Orange-5 | #fff3e5 | Light orange | Bg |
| Blue-60 | #0093cc | Accent blue | Links |
| Green-20 | #99ecae | Light green | Bg |
| Pink-5 | #ffeffa | Light pink | Bg |
| Blue-70 | #006e99 | Dark blue | Text |
| Green-10 | #ccf5d7 | Light green | Bg |
2.3 Color Relationships
Dark mode is the default aesthetic — deep navies and blacks as base, bright cyan for calls to action. High contrast between #00b8ff and #1a3049 ensures accessibility. Text colors like #ffffff on dark, and #000000 on cyan buttons meet WCAG AA easily.
Avoid pairing low-contrast combos like #4c5e72 text on #33475d backgrounds — both are mid-dark blues.
2.4 Usage Guide
- Cyan (
#00b8ff) only for primary interactive elements. - Secondary actions use muted backgrounds with white text.
- Error states:
#cc3a26with light red background (#ffedea). - Success:
#01a62atext with light green (#e6faeb) background. - Decorative rainbow colors only in thematic or custom content areas, not core UI.
3. Typography
3.1 Font Families
- Favorit — primary sans-serif. Fallback:
"Helvetica Neue", HelveticaNeue, Helvetica, Arial. - Favorit Modern — variant sans-serif, same fallbacks.
- Georgia — serif for headings. Fallbacks: Times, Times New Roman.
- Courier — monospace, limited use.
No Google or Adobe Fonts — likely self-hosted custom fonts.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| Heading-1 | Georgia | 34px | 400 | 1.50 |
| Heading-1 | Favorit | 21px | 700 | 1.20 |
| Button | Favorit | 18px | 700 | 1.33 |
| Heading-1 | Favorit | 18px | 700 | 1.33 |
| Link | Favorit | 18px | 700 | 1.33 |
| Link | Favorit | 16px | 400 | 1.00 |
| Link | Favorit | 16px | 500 | 1.50 |
| Heading-1 | Favorit | 16px | 500 | 1.50 |
| Button | Favorit | 16px | 500 | 1.50 |
| Button | Favorit | 16px | 400 | 1.00 |
| Heading-1 | Favorit | 16px | 400 | 1.00 |
| Link | Favorit Modern | 16px | 500 | 1.50 |
| Heading-1 | Courier | 16px | 400 | 1.50 |
| Heading-1 | Favorit | 16px | 700 | 1.50 |
| Button | Favorit | 16px | 900 | null |
| Button | Favorit | 16px | 700 | 0.00 |
| Button | Favorit Modern | 14px | 500 | 1.43 |
| Caption | Favorit Modern | 14px | 500 | 1.43 |
| Caption | Favorit | 14px | 700 | 1.43 |
| Link | Favorit | 12.5px | 400 | 1.52 |
3.3 Hierarchy
Tumblr’s headings don’t go huge — 34px Georgia is the largest. This keeps posts from feeling overly corporate. Sans-serif weights are used for UI clarity, with bold (700) for buttons and links. Body copy is small — 16px or less — suiting dense content feeds.
4. Spacing & Layout
4.1 Spacing Scale
8px base grid. Common tokens:
| Value | REM | Count | Use |
|---|---|---|---|
| 1px | 0.06rem | 29 | Borders, hairlines |
| 2px | 0.13rem | 281 | Dividers |
| 4px | 0.25rem | 44 | Icon gaps |
| 8px | 0.50rem | 229 | Small padding |
| 12px | 0.75rem | 121 | Button padding |
| 15px | 0.94rem | 45 | Mid padding |
| 16px | 1.00rem | 107 | Body spacing |
| 40px | 2.50rem | 22 | Section gaps |
| 64px | 4.00rem | 10 | Large sections |
4.2 Layout
Breakpoints:
- Mobile:
350px,413px,540px,600px - Tablet:
959px,990px,1018px,1162px,1221px - Desktop:
1541px,1861px
Fluid approach — multiple breakpoints for incremental adjustments, not just three buckets.
5. Visual Elements
Border Radius
Tumblr uses extremes: small (2px, 3px) for subtle rounding, and 9999px for pills/avatars.
| Value | Count | Usage |
|---|---|---|
| 2px | 9 | Div corners |
| 3px | 26 | List items, small UI |
| 4px | 4 | Small buttons |
| 8px | 60 | Cards, dialogs |
| 16px | 139 | Links |
| 9999px | 165 | CTAs, avatars |
Shadows
Mostly subtle:
rgba(0,0,0,0.05) 0px 4px 16px— soft elevation- Occasional inset (
rgb(0,184,255) 0px -2px 0px inset) for focus cues.
Borders
Light dividers: 1px solid rgba(0,25,53,0.1) on dialogs.
6. Components
6.1 Buttons
Primary:
Default — background: #00b8ff, text #000000, padding 10px 16px, radius 9999px, font 14px Favorit 500.
Hover — uses --brand-blue-hover (rgba(51,198,255,1)).
Secondary:
Default — translucent white bg, white text, same padding/radius.
Hover — subtle opacity change.
Tertiary:
Black bg, white text, pill shape.
Transparent variant — only cyan text, no bg.
6.2 Links
Three styles:
- Black text, underlined — standard content links.
- White text, underlined — dark mode links.
- Cyan text, no underline — UI links.
6.3 Forms
Text inputs: transparent bg, gray text (#99a3ae), no border, padding 8px. Focus states not specified in data.
7. Design Tokens
:root {
/* Colors */
--base-blue: #4c5e72;
--primary-cyan: #00b8ff;
--black: #000000;
--white: #ffffff;
/* ... include all from palette ... */
/* Typography */
--font-favorit: "Favorit", "Helvetica Neue", HelveticaNeue, Helvetica, Arial;
--font-favorit-modern: "Favorit Modern", "Helvetica Neue", HelveticaNeue, Helvetica, Arial;
--font-georgia: Georgia, Times, "Times New Roman";
--font-courier: Courier;
/* Spacing */
--space-1: 1px;
--space-2: 2px;
--space-4: 4px;
--space-8: 8px;
--space-12: 12px;
--space-15: 15px;
--space-16: 16px;
--space-40: 40px;
--space-64: 64px;
/* Radius */
--radius-sm: 2px;
--radius-md: 8px;
--radius-lg: 16px;
--radius-pill: 9999px;
/* Shadows */
--shadow-soft: rgba(0,0,0,0.05) 0px 4px 16px 0px;
}8. AI Coding Assistant Prompt
# Tumblr Design System Specification
You are a Tumblr design expert. Build UIs matching their visual language exactly.
## Brand Context
Tumblr blends deep, moody surfaces with bright cyan accents. Content-first, soft pill-shaped CTAs, and a disciplined 8px spacing grid. Typography is a mix of utilitarian sans-serif and occasional serif for emphasis.
## Color Palette
- Base Blue: #4c5e72 — UI surface backgrounds
- Primary Cyan: #00b8ff — Primary buttons, key links
- Black: #000000 — Text
- White: #ffffff — Text on dark
- Red-60: #cc3a26 — Error text
- Green-60: #01a62a — Success text
- Navy-90: #1a3049 — Header/footer bg
- Purple-40: #967dff — Accent links
- (Include ALL from palette with role)
## Typography
- Headings: Georgia, Times, Times New Roman — 34px 400 1.5
- UI Headings: Favorit — 21px 700 1.2, 18px 700 1.33
- Body: Favorit — 16px 400/500 1.0–1.5
- Buttons: Favorit — 14px–18px 500–900 radius pill
- Captions: Favorit Modern — 14px 500 1.43
## Spacing & Grid
Base: 8px. Scale includes 1, 2, 4, 8, 12, 15, 16, 40, 64px.
Use multiples for padding/margin.
## Border Radius
- sm: 2px — small divs
- md: 8px — cards/dialogs
- lg: 16px — links
- full: 9999px — buttons, avatars
## Shadows & Depth
- Soft shadow: rgba(0,0,0,0.05) 0px 4px 16px
## Components
### Primary Button
```css
.btn-primary {
background: #00b8ff;
color: #000000;
padding: 10px 16px;
border-radius: 9999px;
font-family: var(--font-favorit);
font-weight: 500;
font-size: 14px;
border: none;
transition: background 150ms ease;
}
.btn-primary:hover { background: rgba(51,198,255,1); }
.btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
```
### Secondary Button
```css
.btn-secondary {
background: rgba(255,255,255,0.05);
color: #ffffff;
padding: 10px 16px;
border-radius: 9999px;
font-family: var(--font-favorit);
}
```
### Input Field
```css
.input {
background: transparent;
color: #99a3ae;
border: none;
padding: 8px;
}
```
## Layout & Responsive Rules
- Breakpoints: 350px, 413px, 540px, 600px, 959px, 990px, 1018px, 1162px, 1221px, 1541px, 1861px
## Interaction Rules
- Transitions: 150ms ease
- Focus outlines match accent color
## DO
- Use only palette colors
- Keep spacing multiples of 8px
- Use pill radius for CTAs
- Maintain high contrast for text
## DON'T
- Add new colors
- Mix hard corners with pills
- Use heavy shadows
## Code Examples
Primary Button:
```css
<button class="btn-primary">Sign Up</button>
```
Card:
```css
.card {
background: #1a3049;
border-radius: 8px;
padding: 16px;
box-shadow: var(--shadow-soft);
}
```
Input:
```css
<input class="input" placeholder="Search">
```9. Summary
TL;DR — Tumblr’s design is moody, content-first, with bright cyan accents and pill-shaped CTAs. An 8px grid keeps it consistent, while a sprawling color palette supports expressive content.
Brand Keywords:
- content-first
- moody-cyan
- pill-cta
- disciplined-grid
- expressive-palette