Datadog Design System Deep Dive
1. Brand Overview
Datadog’s visual language is exactly what you’d expect from a high‑performance observability platform but with a twist of personality — it’s not sterile enterprise blue, it’s rich, saturated purple. The site sits in the intersection of developer tools and business‑to‑business SaaS, so it has to speak to engineers and procurement managers at the same time. That tension is visible in the design: confident color, tight typography, and a grid that feels engineered rather than editorial.
This is a brand for people who care about detail. The interface is built on Tailwind CSS and Bootstrap, with Vuetify components in play — that’s a lot of frameworks, but it’s coherent because everything is locked to a consistent set of tokens. They’ve clearly invested in a design system that enforces color, spacing, and type decisions across marketing and product.
The vibe: technical, precise, but with human warmth via the purple. No whimsical illustrations, no rounded pill buttons with 9999px border‑radius; this is 4px and 6px radii territory — restrained, functional. Shadows are subtle (rgba(0, 0, 0, 0.07)), never overblown. The typography is a custom “NationalWeb” family with Helvetica/Arial fallbacks, giving headings a clean, geometric tone. Line heights are tight for headings, looser for links.
If you’re designing for Datadog, think in terms of trust signals. The color palette is not about diversity — it’s about reinforcing the primary purple and neutrals so CTAs pop. Layouts are locked to an 8px scale with occasional half‑steps (8.5px, 9.5px) — rare, but they exist. Breakpoints span from tiny (98px) up to large desktop (1512px), so responsive behavior is planned, not bolted on.
Bottom line: this is a developer‑first SaaS brand with a marketing site that mirrors product UI discipline. It’s confident without being flashy, and it’s built to be consistent across channels.
2. Color System
2.1 Primary Colors
The main brand color is rgb(99, 44, 166) → #632ca6. This is a deep purple — saturated enough to stand out against neutral grays, but dark enough to carry white text without accessibility issues. Purple in tech branding signals creativity and premium positioning (think Twilio’s red, Stripe’s blue, Datadog’s purple). Compared to competitors in observability (New Relic’s teal, Dynatrace’s green), Datadog’s purple is distinctive and less common in enterprise dashboards. It works because it’s not a pastel — it holds contrast against white backgrounds and is flexible for both light and dark modes.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Dark Gray | #333333 | Neutral text | Body copy, secondary UI text |
| Medium Gray | #555555 | Neutral text | Secondary links, captions |
| Primary Purple | #632ca6 | Brand | Primary buttons, key links, accents |
| Vivid Purple | #7700ff | Accent | Hover/focus states |
| Link Purple | #7700ff (--bs-link-color: #70f) | Interactive | Hyperlinks |
| Border Gray | #dee2e6 | Border | UI dividers |
| Background White | #ffffff | Surface | Page background |
| Success Green | #198754 | Functional | Valid states |
| Danger Red | #dc3545 | Functional | Error states |
| Warning Yellow Text Emphasis | #664d03 | Functional | Warning text |
| Info Blue Text Emphasis | #055160 | Functional | Info text |
| Code Pink | #c7254e | Functional | Code snippets |
| Callout Gradient | linear-gradient(360deg, #8904FF, #110617) | Decorative | Hero sections, banners |
| Light Gray BG Subtle | #fcfcfd | Surface | Subtle backgrounds |
| Primary BG Subtle | #cfe2ff | Surface | Light primary backgrounds |
| Secondary BG | #e9ecef | Surface | Cards, panels |
| Secondary BG Subtle | #e2e3e5 | Surface | Very light panels |
| Success BG Subtle | #d1e7dd | Surface | Success backgrounds |
| Danger BG Subtle | #f8d7da | Surface | Error backgrounds |
| Info BG Subtle | #cff4fc | Surface | Info backgrounds |
| Dark BG Subtle | #ced4da | Surface | Dark mode surfaces |
(All values derived from semantic colors and CSS variables in extracted data.)
2.3 Color Relationships
Purple (#632ca6) against white gives ~6.7:1 contrast — well above WCAG AA for normal text. Purple against dark gray (#333333) drops contrast, so they avoid that pairing for text; instead, purple is used for links on light backgrounds.
Neutral grays (#333333 and #555555) form the body copy base. They’re distinct enough to create hierarchy — #333333 for main copy, #555555 for secondary.
Functional colors (success, danger, warning, info) are all WCAG‑friendly when used with white text. The callout gradient is decorative — don’t use it for text backgrounds unless you overlay white.
2.4 Usage Guide
Do:
- Use
#632ca6for primary CTAs and key interactive states. - Anchor text to #333333 or #555555 — keeps readability high.
- Keep functional colors for their roles — green for success, red for errors.
Avoid:
- Purple text on dark gray backgrounds — poor contrast.
- Mixing vivid purple (#7700ff) and primary purple without clear hierarchy — it confuses hover vs active states.
- Using gradients for functional elements — they’re decorative here.
3. Typography
3.1 Font Families
Primary: NationalWeb — custom web font. Fallbacks: Helvetica, Arial. No Google or Adobe font sources, so it’s self‑hosted.
Secondary (occasionally): Helvetica with Arial fallback — used in captions and some buttons.
No variable fonts detected.
3.2 Type Scale
Here’s the type scale from extracted styles:
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| H1 | NationalWeb | 68px (4.25rem) | 600 | 1.00 |
| H1 | NationalWeb | 36px (2.25rem) | 700 | 1.11 |
| H1 | NationalWeb | 36px | 600 | 1.11 |
| Button | NationalWeb | 33px | 700 | 1.00 |
| H1 | NationalWeb | 33px | 700 | 1.00 |
| H1 | NationalWeb | 32px | 300 | 1.19 |
| H1 | NationalWeb | 28px | 700 | 1.14 |
| Button | NationalWeb | 22px | 700 | 1.09 |
| Link | NationalWeb | 22px | 300 | 1.43 |
| H1 | NationalWeb | 22px | 300 | 1.43 |
| H1 | NationalWeb | 22px | 700 | 1.09 |
| H1 | Helvetica | 22px | 300 | 1.36 |
| H1 | NationalWeb | 20px | 600 | — |
| Link | NationalWeb | 20px | 600 | — |
| H1 | NationalWeb | 20px | 700 | 0.90 |
| Link | NationalWeb | 18px | 600 | 1.43 |
| H1 | NationalWeb | 18px | 500 | 1.22 |
| Link | NationalWeb | 18px | 300 | 1.00 |
| H1 | NationalWeb | 18px | 600 | 1.43 |
| H1 | NationalWeb | 18px | 300 | 1.43 |
| H1 | NationalWeb | 18px | 300 | 1.22 |
| Button | NationalWeb | 18px | 600 | 1.43 |
| Button | NationalWeb | 18px | 600 | 1.43 |
| Link | NationalWeb | 18px | 300 | 1.43 |
| Button | NationalWeb | 18px | 700 | 1.00 |
| H1 | NationalWeb | 18px | 700 | 1.00 |
| H1 | NationalWeb | 18px | 700 | 1.00 |
| Link | NationalWeb | 18px | 700 | 1.00 |
| H1 | NationalWeb | 18px | 600 | 1.33 |
| Link | NationalWeb | 18px | 700 | 1.00 |
| H1 | NationalWeb | 18px | 700 | 1.00 |
| Link | NationalWeb | 18px | 700 | 1.00 |
| Button | Helvetica | 18px | 600 | 1.00 |
| Link | NationalWeb | 16px | 700 | 1.43 |
| H1 | NationalWeb | 16px | 700 | 1.13 |
| H1 | NationalWeb | 16px | 600 | 1.25 |
| Button | NationalWeb | 16px | 300 | 2.00 |
| H1 | NationalWeb | 16px | 600 | 1.25 |
| Link | NationalWeb | 16px | 300 | 1.00 |
| H1 | NationalWeb | 16px | 300 | 1.43 |
| Button | NationalWeb | 14px | 600 | 1.43 |
| Caption | Helvetica | 13px | 300 | 1.43 |
| Caption | NationalWeb | 12px | 700 | 1.00 |
| Caption | NationalWeb | 12px | 700 | 1.00 |
| Caption | NationalWeb | 12px | 700 | 1.00 |
| Button | NationalWeb | 11.2px | 300 | 1.43 |
| Caption | Helvetica | 9px | 300 | 3.33 |
| Link | Helvetica | 9px | 300 | 3.33 |
3.3 Hierarchy
Headings are tight — line heights around 1.0–1.14 — which gives them a blocky, solid feel. Body and link text open up to 1.43 for readability. The scale jumps dramatically from 68px H1 to 36px subheadings, then into the 20–28px range for section heads. Buttons share sizes with headings (22px, 18px) — they’re not shy about big buttons.
This works because the brand’s color and spacing keep elements separated; tight headings don’t feel cramped. The custom font adds personality — NationalWeb’s geometric shapes keep the tone modern.
4. Spacing & Layout
4.1 Spacing Scale
Base scale: 8px, with some off‑grid micro‑adjustments. Common values:
| px | rem | Count |
|---|---|---|
| 2 | 0.13rem | 17 |
| 3 | 0.19rem | 100 |
| 4 | 0.25rem | 258 |
| 5 | 0.31rem | 34 |
| 7 | 0.44rem | 104 |
| 8 | 0.50rem | 105 |
| 8.5 | 0.53rem | 10 |
| 9 | 0.56rem | 92 |
| 9.5 | 0.59rem | 10 |
| 10 | 0.63rem | 138 |
| 11 | 0.69rem | 7 |
| 12 | 0.75rem | 290 |
| 13 | 0.81rem | 9 |
| 16 | 1.00rem | 9 |
| 20 | 1.25rem | 50 |
| 27 | 1.69rem | 6 |
| 28 | 1.75rem | 24 |
| 30 | 1.88rem | 6 |
| 40 | 2.50rem | 55 |
| 48 | 3.00rem | 8 |
Frequency shows heavy use of 4px, 8px, 12px — classic 8px grid. Odd values (8.5px, 9.5px) are rare and probably component quirks.
4.2 Layout
Breakpoints span from 98px (micro) to 1512px (large desktop). Key points: 375px (mobile), 768px (tablet), 992px (Bootstrap desktop), 1200px (wide), 1440px (large). This mix covers both marketing site and app UI.
Bootstrap’s grid (container, row, col) handles layout; Tailwind modifiers manage responsive tweaks.
5. Visual Elements
Border Radius
Values:
0px— data tables, sharp edges1px— spans4px— default buttons, inputs, cards4.8px— modals5px— cards/buttons5px 5px 0px 0px— modal tops6px— lists, buttons, inputs6px 6px 0px 0px— anchors
The system is small‑radius — 4px and 6px dominate. No pill shapes.
Shadows
Three shadows:
rgba(0, 0, 0, 0.07) 0px 8px 10px— soft droprgba(0, 0, 0, 0.07) 0px 0px 8px 8px— ambientrgba(0, 0, 0, 0.2) 0px 4px 10px— deeper, rare
Shadows are subtle — depth cues without drama.
Borders
Mix of hairlines (1px solid) in gray (#dee2e6), brand purple (#632ca6), or white, used for separation. Some triple‑style combos (3px solid none none) for emphasis.
6. Components
6.1 Buttons
Primary (js-cta-HeaderCTA btn tw-bg-primary tw-text-white)
- Default: bg
#632ca6, white text, padding16px 24px, radius4px, border1px solid transparent, font 18px/700. - Hover: bg transparent, text vivid purple, border
1px solid rgb(16, 110, 180). - Active: bg light purple (
rgb(204 173 255)), text dark purple, inset shadow, border white. - Focus: bg vivid purple (
rgb(128 0 255)), white text, scale(0.85) + translate, border1px solid rgb(16, 110, 180).
Secondary (btn tw-border tw-border-primary tw-text-primary)
- Default: transparent bg, purple text, purple border, padding
14px 24px 16px. - States mirror primary.
White (corp-ui-button-cta-large corp-ui-button-cta-solid-)
- Default: white bg, black text, padding
16px 24px, border none. - States mirror primary’s hover/active/focus.
6.2 Links
Variants:
- White text (footer/nav) — hover: vivid purple underline 2px.
- Gray (#555555) — hover: vivid purple underline.
- Dark gray (#212529) — hover: vivid purple underline.
- Purple (#632ca6) — hover: vivid purple underline.
- Black (#000000) — hover: vivid purple underline.
No default underlines; underline appears on hover.
6.3 Forms
Search input:
- Default: transparent bg, dark gray text, no border, padding
0 10px. - Focus: border transparent, box‑shadow
.25rem rgba(var(--bs-danger-rgb),.25)(danger red), color black.
6.4 Cards
Not explicitly in data, but border‑radius 4px–6px, subtle shadows (rgba(0,0,0,0.07)) or borders (#dee2e6).
7. Design Tokens
:root {
/* Colors */
--color-dark-gray: #333333;
--color-medium-gray: #555555;
--color-primary-purple: #632ca6;
--color-vivid-purple: #7700ff;
--color-border-gray: #dee2e6;
--color-background-white: #ffffff;
--color-success-green: #198754;
--color-danger-red: #dc3545;
--color-warning-text: #664d03;
--color-info-text: #055160;
--color-code-pink: #c7254e;
--gradient-callout: linear-gradient(360deg, #8904FF, #110617);
--color-light-gray-bg-subtle: #fcfcfd;
--color-primary-bg-subtle: #cfe2ff;
--color-secondary-bg: #e9ecef;
--color-secondary-bg-subtle: #e2e3e5;
--color-success-bg-subtle: #d1e7dd;
--color-danger-bg-subtle: #f8d7da;
--color-info-bg-subtle: #cff4fc;
--color-dark-bg-subtle: #ced4da;
/* Typography */
--font-primary: "NationalWeb", Helvetica, Arial;
--font-secondary: Helvetica, Arial;
/* Spacing */
--space-2: 2px;
--space-3: 3px;
--space-4: 4px;
--space-5: 5px;
--space-7: 7px;
--space-8: 8px;
--space-8_5: 8.5px;
--space-9: 9px;
--space-9_5: 9.5px;
--space-10: 10px;
--space-11: 11px;
--space-12: 12px;
--space-13: 13px;
--space-16: 16px;
--space-20: 20px;
--space-27: 27px;
--space-28: 28px;
--space-30: 30px;
--space-40: 40px;
--space-48: 48px;
/* Border Radius */
--radius-none: 0px;
--radius-1: 1px;
--radius-4: 4px;
--radius-4_8: 4.8px;
--radius-5: 5px;
--radius-6: 6px;
/* Shadows */
--shadow-soft: rgba(0, 0, 0, 0.07) 0px 8px 10px 0px;
--shadow-ambient: rgba(0, 0, 0, 0.07) 0px 0px 8px 8px;
--shadow-deep: rgba(0, 0, 0, 0.2) 0px 4px 10px 0px;
}8. AI Coding Assistant Prompt
# Datadog Design System Specification
You are a Datadog design expert. Build UIs matching their visual language exactly.
## Brand Context
Datadog’s design is precise, developer‑oriented, and anchored in a distinctive purple brand color. Typography is clean and geometric via NationalWeb, with tight heading line heights and generous link spacing. Layout is structured on an 8px grid, with subtle shadows and small‑radius corners.
## Color Palette
- Dark Gray: #333333 — Body text
- Medium Gray: #555555 — Secondary text
- Primary Purple: #632ca6 — Primary buttons, key actions
- Vivid Purple: #7700ff — Hover states, accents
- Border Gray: #dee2e6 — Dividers, input borders
- Background White: #ffffff — Page backgrounds
- Success Green: #198754 — Success states
- Danger Red: #dc3545 — Error states
- Warning Text: #664d03 — Warning text
- Info Text: #055160 — Info text
- Code Pink: #c7254e — Code snippets
- Callout Gradient: linear-gradient(360deg, #8904FF, #110617) — Decorative sections
- Light Gray BG Subtle: #fcfcfd — Subtle backgrounds
- Primary BG Subtle: #cfe2ff — Light primary backgrounds
- Secondary BG: #e9ecef — Panels
- Secondary BG Subtle: #e2e3e5 — Panel variations
- Success BG Subtle: #d1e7dd — Success backgrounds
- Danger BG Subtle: #f8d7da — Error backgrounds
- Info BG Subtle: #cff4fc — Info backgrounds
- Dark BG Subtle: #ced4da — Dark mode surfaces
## Typography
Font Families:
- Primary: "NationalWeb", Helvetica, Arial
- Secondary: Helvetica, Arial
Sizes/Weights/Line Heights:
| Level | Size | Weight | LH | Use |
| H1 | 68px | 600 | 1.00 | Page titles |
| H2 | 36px | 700 | 1.11 | Section headings |
| H3 | 28px | 700 | 1.14 | Subsections |
| Body Large | 22px | 300 | 1.43 | Paragraphs |
| Body | 18px | 300–600 | 1.43 | UI text |
| Caption | 12px | 700 | 1.00 | Labels |
| Tiny | 9px | 300 | 3.33 | Footnotes |
## Spacing & Grid
Base: 8px grid.
Scale: 2, 3, 4, 5, 7, 8, 8.5, 9, 9.5, 10, 11, 12, 13, 16, 20, 27, 28, 30, 40, 48.
Buttons: padding 16px 24px (primary), 14px 24px 16px (secondary).
Cards: padding multiples of 12px.
## Border Radius
- none: 0px — tables
- sm: 4px — buttons, inputs
- md: 6px — lists, form fields
- modal: 4.8px, 5px — modal corners
## Shadows & Depth
- Soft: rgba(0,0,0,0.07) 0px 8px 10px
- Ambient: rgba(0,0,0,0.07) 0px 0px 8px 8px
- Deep: rgba(0,0,0,0.2) 0px 4px 10px
## Component Specifications
### Primary Button
Default: bg #632ca6, color #ffffff, padding 16px 24px, radius 4px, border 1px solid transparent, font 18px/700.
Hover: bg transparent, color #7700ff, border 1px solid rgb(16, 110, 180).
Active: bg rgb(204 173 255), color rgb(67 0 176), inset shadow, border white.
Focus: bg rgb(128 0 255), color white, transform scale(0.85) translate, border rgb(16, 110, 180).
### Secondary Button
Default: bg transparent, color #632ca6, border 1px solid #632ca6, padding 14px 24px 16px.
States mirror primary.
### Navigation Links
Default: no underline, color varies (#ffffff, #555555, #333333, #632ca6, #000000).
Hover: underline 2px, color #b37bff.
### Input Fields
Search:
Default: bg transparent, color #212529, no border, padding 0px 10px.
Focus: border-color transparent, box-shadow 0 0 0 .25rem rgba(220,53,69,.25), color #000000.
### Cards
Radius 4px–6px, bg #ffffff or panel gray, subtle shadow or border #dee2e6.
## Layout & Responsive Rules
Bootstrap grid for structure.
Breakpoints: 375px (mobile), 768px (tablet), 992px (desktop), 1200px (wide), 1440px (large).
Page padding: multiples of 8px.
## Interaction Rules
Transition: 150ms ease for state changes.
Focus indicators: border + box-shadow per state.
Loading: opacity changes, no spinner details in extracted data.
## DO List
- Use ONLY colors from palette.
- Maintain 8px grid — spacing in multiples.
- Use NationalWeb for headings, Helvetica for fallback.
- Keep corner radii at 4px or 6px — no pills.
- Keep shadows subtle — use provided values.
- Use hover underline for links — 2px solid.
## DON'T List
- Don’t invent new colors.
- Don’t mix large and small radii in same component.
- Don’t use heavy shadows.
- Don’t underline links by default.
- Don’t use gradients for functional UI elements.
## Code Examples
Primary Button:
```css
.btn-primary {
background: #632ca6;
color: #ffffff;
padding: 16px 24px;
border-radius: 4px;
font-weight: 700;
font-size: 18px;
border: 1px solid transparent;
transition: all 150ms ease;
}
.btn-primary:hover {
background: transparent;
color: #7700ff;
border: 1px solid rgb(16, 110, 180);
}
.btn-primary:focus {
background: rgb(128, 0, 255);
color: #ffffff;
border: 1px solid rgb(16, 110, 180);
}
```
Card:
```css
.card {
background: #ffffff;
border-radius: 6px;
padding: 12px;
box-shadow: rgba(0,0,0,0.07) 0px 8px 10px;
}
```
Input:
```css
.input-search {
background: transparent;
color: #212529;
border: none;
padding: 0 10px;
}
.input-search:focus {
box-shadow: 0 0 0 .25rem rgba(220,53,69,.25);
outline: none;
}
```9. Summary
TL;DR — Datadog’s system is disciplined: deep purple primary, neutral grays, clean NationalWeb typography, 8px grid, small‑radius corners, subtle shadows. Buttons and links have clear, consistent states. It’s developer‑grade branding: precise, repeatable, minimal noise.
Brand Keywords:
- developer‑precision
- purple‑confidence
- grid‑disciplined
- subtle‑depth
- functional‑minimalism