Googleblog Design System Deep Dive
1. Brand Overview
Googleblog (https://blog.google/) is Google’s official blog property — the place where the company talks to the world about product launches, policy moves, technical achievements, and cultural commitments. The design is exactly what you’d expect from Google: clean, accessible, and built on a disciplined system. It’s not playful like YouTube’s UI, and it’s not overly corporate like Google Cloud. It sits in the middle — approachable but professional.
The vibe is “Google’s voice, but in long-form.” Typography is crisp. Color is restrained. The grid is predictable. This isn’t a marketing microsite — it’s a content hub. The design system prioritises readability and clarity. Headlines stand out, but nothing screams for attention. The primary blue (#1a73e8) is used surgically — links, CTAs, and active states — not splashed everywhere. Neutrals dominate the canvas.
This design feels like it’s speaking to the general public, journalists, and industry watchers. It’s a place where the brand must be trustworthy and legible. The system is built for scale: hundreds of articles, multiple languages, consistent modules. They’ve leaned on Vuetify (284 v- components detected), so the implementation inherits Vuetify’s material-like spacing, breakpoints, and component logic — but softened and “Google-fied” with Google Sans and their color tokens.
I like how disciplined it is. There’s no visual noise. Even the hover states are subtle, relying on underline changes and slight color shifts. It’s a content-first design system with enough brand in it to be recognisable without overpowering the words.
2. Color System
2.1 Primary Colors
The semantic primary is rgb(26, 115, 232) / #1a73e8 — the Google Blue you’ve seen in Gmail buttons and Google Search links. It’s bright enough to be noticed, dark enough for white text to pass WCAG AA contrast. This blue is associated with trust, stability, and action in Google’s ecosystem. Compared to Facebook’s #1877f2, it’s slightly lighter and less saturated. It feels friendlier.
The blue is paired with a darker hover/active shade (#174ea6 and #1967d2) for interaction depth. They don’t use gradients — flat fills only.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Neutral Gray | #5f6368 | Secondary text | Headers, body copy, meta info |
| Primary Blue | #1a73e8 | Primary action | Links, CTAs, active states |
| Dark Gray | #202124 | Main text / dark UI elements | Body text in dark sections |
| Mid Gray | #414141 | Neutral elements | Icons, dividers |
| Light Gray | #757575 | Secondary UI text | Captions, placeholder text |
| White | #ffffff | Background, text on blue | Page background, button text |
| Black | #000000 | Strong text | Headlines, emphasis |
| Divider Gray | #dadce0 | Borders, dividers | Card outlines, input borders |
| Deep Blue | #1967d2 | Button text / focus | CTA text, focus states |
| Light Surface | #efefef | Background fill | Section backgrounds |
| Darker Blue | #174ea6 | Hover states | Link/button hover color |
| Charcoal | #323232 | Neutral dark UI | Footer text, icons |
2.3 Color Relationships
The palette is heavy on neutrals. Blue stands out because it’s the only chromatic accent. The accessibility story is solid: #1a73e8 on white yields a contrast ratio > 4.5:1 — good for WCAG AA. The darker blues (#1967d2, #174ea6) increase contrast further for hover/focus states.
Dark mode isn’t explicitly implemented here — the palette assumes light backgrounds. If they wanted dark mode, they’d invert the neutrals and swap blue usage to maintain contrast.
2.4 Usage Guide
- Primary combos:
#1a73e8text on white, white text on#1a73e8fills. - Hover combos:
#174ea6or#1967d2against white for clarity. - Avoid: Putting blue text on
#757575or any low-contrast gray — readability drops. - Neutral layering: Light grays for surfaces, dark grays for text — don’t mix the two for text unless you’re indicating disabled states.
- Borders: Stick to
#dadce0or#5f6368for lines — consistent with the rest of Google’s design language.
3. Typography
3.1 Font Families
Everything is set in Google Sans, Google’s proprietary geometric sans. Fallbacks are roboto, arial, helvetica. The site also loads Noto Color Emoji for emoji rendering.
Source: Google Fonts. No Adobe Fonts, no variable fonts here.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height | Letter Spacing | Transform |
|---|---|---|---|---|---|---|
| Heading-1 | Google Sans | 36px (2.25rem) | 400 | 1.22 | — | — |
| Heading-1 | Google Sans | 28px (1.75rem) | 700 | 1.29 | -0.5px | — |
| Heading-1 | Google Sans | 28px | 400 | 1.29 | — | — |
| Heading-1 | Google Sans | 22px (1.38rem) | 400 | 1.27 | — | — |
| Link | Google Sans | 22px | 400 | 1.27 | — | — |
| Heading-1 | Google Sans | 20px (1.25rem) | 400 | 1.40 | — | — |
| Link | Google Sans | 20px | 400 | 1.40 | — | — |
| Button | Google Sans | 18px (1.13rem) | 300 | 1.44 | — | — |
| Caption | Google Sans | 14px (0.88rem) | 400 | 1.71 | — | — |
| Caption | Google Sans | 14px | 500 | 1.57 | 0.388889px | uppercase |
| Caption | Google Sans | 12px (0.75rem) | 500 | 1.63 | 1px | uppercase |
(… dozens more sizes exist; the scale is dense, with many small variations between 14–20px for links, captions, and buttons.)
3.3 Hierarchy
They use a tight hierarchy: H1 at 36px, most subheads around 28px, body between 16–20px. Captions and meta at 12–14px. The scale supports both large hero headlines and dense lists without breaking rhythm. Letter-spacing tweaks (-0.5px for bold 28px) tighten uppercase headings. Uppercase captions at 12–14px add a clear visual break from body text.
4. Spacing & Layout
4.1 Spacing Scale
Base unit: 8px grid. Common values:
| Value | Count | Usage |
|---|---|---|
| 1px | 84 | Borders, hairlines |
| 8px | 135 | Small gaps, icon padding |
| 14px | 104 | Text line spacing, tight margins |
| 16px | 60 | Button padding, card gutters |
| 24px | 27 | Section gaps |
| 36px | 21 | Hero spacing |
| 60px | 4 | Large section breaks |
| 80px | 3 | Extra-large vertical spacing |
4.2 Layout
Breakpoints are thorough: from 320px up to 1600px, with fine-grained stops (330px, 375px, 390px, etc.). This suggests careful tuning for multiple device widths — likely maintaining line lengths and grid alignment. Vuetify’s grid system drives responsiveness.
5. Visual Elements
Border Radius: Ranges from sharp (0px) to soft (8px) to pill (48px) and round (50%). Mapping:
- 4px: Inputs, small buttons
- 8px: Cards, images
- 48px: Pill buttons
- 50%: Avatars, social icons
Shadows: Minimal use. The most common is an inset shadow rgb(218, 220, 224) 0px -1px 0px 0px inset — subtle separation lines. When used, drop shadows are light and layered (rgba(60,64,67,...)), in Material style.
Borders: 1px solid #dadce0 or #5f6368 for inputs/cards. Occasionally 5px solid #1a73e8 for emphasis blocks.
6. Components
6.1 Buttons
Variant 1 — Newsletter CTA
- Default: bg
#1a73e8, text#ffffff, padding13px 26px 11px, radius 4px, no shadow. - Hover: Odd — transform
translateX(-4px) scaleX(-1)and opacity0. Color shift to#174ea6. - Active: Outline
3px solid #174ea6, bg transparent, text#1a73e8. - Focus: Outline
2px solid #174ea6, bg transparent, text#174ea6.
Variant 2 — Round outline CTA
- Default: transparent bg, text
#1967d2, radius 48px. - Hover: bg
#1a73e8, text white, border2px solid #e8f0fe. - Active: bg
#f6f9fe, outline2px solid #174ea6. - Focus: Outline
2px solid #174ea6, box-shadow#7baaf7 0 0 0 3px.
Variant 3 — White pill
- Default: bg white, text
#1a73e8, border1px solid #5f6368, radius 48px. - Hover: bg
#1a73e8, text white. - Active/Focus: same focus rules as above.
6.2 Links
Six styles, all no underline by default, underline on hover. Colors map to palette: primary blue, neutral gray, black, white, deep blue, dark gray. Hover always shifts to #174ea6.
6.3 Forms
Text inputs: bg white, border 1px solid #dadce0, radius 4px, padding 0 16px. Focus: border 0, outline 2px solid #174ea6, box-shadow rgba(49, 134, 255, 0.2) 0 0 5px 8px.
Select dropdowns: transparent bg, no border, padding right 24px. Focus: outline 2px solid #174ea6, box-shadow #7baaf7 0 0 0 3px.
7. Design Tokens (CSS Custom Properties)
:root {
/* Colors */
--color-primary: #1a73e8;
--color-primary-dark: #1967d2;
--color-primary-darker: #174ea6;
--color-neutral-gray: #5f6368;
--color-dark-gray: #202124;
--color-mid-gray: #414141;
--color-light-gray: #757575;
--color-white: #ffffff;
--color-black: #000000;
--color-divider-gray: #dadce0;
--color-light-surface: #efefef;
--color-charcoal: #323232;
/* Typography */
--font-family-primary: "Google Sans", roboto, arial, helvetica;
--font-family-emoji: "Noto Color Emoji";
--font-size-h1: 36px;
--font-size-h2: 28px;
--font-size-body-lg: 20px;
--font-size-body: 16px;
--font-size-caption: 14px;
--font-size-caption-sm: 12px;
/* Spacing */
--space-1: 1px;
--space-2: 2px;
--space-4: 4px;
--space-8: 8px;
--space-14: 14px;
--space-16: 16px;
--space-24: 24px;
--space-36: 36px;
--space-60: 60px;
--space-80: 80px;
/* Radius */
--radius-none: 0px;
--radius-sm: 4px;
--radius-md: 8px;
--radius-pill: 48px;
--radius-round: 50%;
/* Shadows */
--shadow-inset-divider: rgb(218, 220, 224) 0px -1px 0px 0px inset;
--shadow-material-light: rgba(60, 64, 67, 0.25) 0px 1px 4px 0px, rgba(60, 64, 67, 0.3) 0px 1px 2px 0px;
}8. AI Coding Assistant Prompt
# Googleblog Design System Specification
You are a Googleblog design expert. Build UIs matching their visual language exactly.
## Brand Context
Googleblog is Google's official blog platform. It values clarity, trust, and accessibility. The design is content-first, with restrained color use and disciplined typography.
## Color Palette
- Primary Blue: #1a73e8 — Links, CTAs, primary actions
- Primary Dark: #1967d2 — Button text, focus states
- Primary Darker: #174ea6 — Hover states
- Neutral Gray: #5f6368 — Secondary text
- Dark Gray: #202124 — Body text in dark sections
- Mid Gray: #414141 — Icons, dividers
- Light Gray: #757575 — Captions, placeholders
- White: #ffffff — Backgrounds, text on blue
- Black: #000000 — Headlines, emphasis
- Divider Gray: #dadce0 — Borders, dividers
- Light Surface: #efefef — Section backgrounds
- Charcoal: #323232 — Footer text, icons
## Typography
Font families:
- Primary: "Google Sans", roboto, arial, helvetica
- Emoji: "Noto Color Emoji"
| Level | Size | Weight | Line Height | Use For |
|------------|-------|--------|-------------|-----------------------|
| H1 | 36px | 400 | 1.22 | Page titles |
| H2 | 28px | 700 | 1.29 | Section headings |
| H2-light | 28px | 400 | 1.29 | Subheadings |
| Body-lg | 20px | 400 | 1.40 | Article body |
| Body | 16px | 400 | 1.75 | UI body text |
| Button | 16px | 500 | 1.50 | CTA buttons |
| Caption | 14px | 400 | 1.71 | Meta info |
| Caption-sm | 12px | 500 | 1.63 | Uppercase labels |
## Spacing & Grid
Base: 8px grid.
Scale: 1px, 2px, 4px, 8px, 14px, 16px, 24px, 36px, 60px, 80px.
Use multiples of 8px for component padding, margins, and gaps.
## Border Radius
- none: 0px — tables, sharp edges
- sm: 4px — inputs, small buttons
- md: 8px — cards, images
- pill: 48px — pill buttons
- round: 50% — avatars, circular icons
## Shadows & Depth
- Inset divider: rgb(218, 220, 224) 0px -1px 0px 0px inset
- Material light: rgba(60, 64, 67, 0.25) 0px 1px 4px, rgba(60, 64, 67, 0.3) 0px 1px 2px
## Component Specifications
### Primary Button (Newsletter CTA)
Default: bg #1a73e8, color #ffffff, padding 13px 26px 11px, radius 4px, border none.
Hover: color #174ea6, transform translateX(-4px) scaleX(-1), opacity 0.
Active: outline 3px solid #174ea6, bg transparent, color #1a73e8.
Focus: outline 2px solid #174ea6, bg transparent, color #174ea6.
### Secondary Button (Round Outline CTA)
Default: transparent bg, color #1967d2, radius 48px, border 1px transparent.
Hover: bg #1a73e8, color #ffffff, border 2px solid #e8f0fe.
Active: bg #f6f9fe, outline 2px solid #174ea6, color #174ea6.
Focus: outline 2px solid #174ea6, box-shadow #7baaf7 0 0 0 3px.
### White Pill Button
Default: bg #ffffff, color #1a73e8, border 1px solid #5f6368, radius 48px.
Hover: bg #1a73e8, color #ffffff, border 2px solid #e8f0fe.
Active/Focus: same as Secondary Button.
### Navigation Links
Default: palette color, no underline.
Hover: underline, color #174ea6.
### Input Fields
Default: bg #ffffff, color #5f6368, border 1px solid #dadce0, radius 4px, padding 0 16px.
Focus: bg transparent, outline 2px solid #174ea6, box-shadow rgba(49, 134, 255, 0.2) 0 0 5px 8px.
### Cards
bg #ffffff, radius 8px, border 1px solid #dadce0, padding 16px or 24px depending on context.
## Layout & Responsive Rules
Breakpoints: 320px, 375px, 414px, 600px, 768px, 1024px, 1280px, 1440px, 1600px.
Maintain max content width appropriate to viewport, padding 16px mobile, 24–36px desktop.
## Interaction Rules
Transitions ~150ms ease for state changes.
Focus indicators visible with 2px outline in #174ea6.
Hover states must adjust color and underline only — no drastic animations.
## DO List
- Use ONLY colors from the palette.
- Maintain 8px grid for spacing.
- Use Google Sans for all text.
- Keep buttons and inputs consistent with radius tokens.
- Respect focus outlines for accessibility.
## DON'T List
- Don't introduce new colors.
- Don't mix sharp and rounded corners in one component.
- Don't remove hover underline from links.
- Don't apply heavy drop shadows — keep subtle.
## Code Examples
### Primary Button
```css
.btn-primary {
background: #1a73e8;
color: #ffffff;
padding: 13px 26px 11px;
border-radius: 4px;
font-weight: 300;
font-size: 16px;
border: none;
transition: all 150ms ease;
}
.btn-primary:hover {
color: #174ea6;
transform: translateX(-4px) scaleX(-1);
opacity: 0;
}
.btn-primary:focus {
outline: 2px solid #174ea6;
background: transparent;
color: #174ea6;
}
```
### Input Field
```css
.input {
background: #ffffff;
color: #5f6368;
border: 1px solid #dadce0;
border-radius: 4px;
padding: 0 16px;
}
.input:focus {
background: transparent;
outline: 2px solid #174ea6;
box-shadow: rgba(49, 134, 255, 0.2) 0 0 5px 8px;
}
```
### Card
```css
.card {
background: #ffffff;
border-radius: 8px;
border: 1px solid #dadce0;
padding: 24px;
}
```9. Summary
TL;DR — Googleblog’s design system is restrained, readable, and built for scale. Blue is for actions, neutrals for everything else. Typography is Google Sans with a dense scale. Spacing sticks to an 8px grid. Components are Vuetify-driven and accessibility-conscious.
Brand Keywords: trust-first, content-prioritised, disciplined-modern, google-consistent