BrandToPrompt

GOV.UK Design System: Functional Minimalism & Clarity

Visit Site

Explore GOV.UK's design system - colors, typography, and layout principles. Build accessible, trustworthy public service interfaces with GOV.UK's visual language.

7 min read1,347 words

Brand Identity

Color Palette

Primary
Secondary

Typography

Primary Font
GDS Transport
Secondary Font
Arial

Design Style

Style
brutalist with sharp edges and high contrast, functional minimalism
Visual Density
compact grid-based with consistent 8px spacing
Border Style
sharp 0px edges throughout

Full Analysis

GOV.UK Brand Design System Deep-Dive


1. Brand Overview

GOV.UK is the UK government’s digital service front door. This isn’t a commercial brand trying to sell you something — it’s an interface for public services, legislation, and official information. That changes the design priorities dramatically. The goal here isn’t “delight” or “brand storytelling,” it’s trust, clarity, and accessibility.

The vibe: authoritative but approachable. Everything feels stripped back to essentials. There’s no ornamental fluff, no gradients, no unnecessary motion. Colors are restrained, typography is utilitarian, and spacing is functional. It’s all about getting you to the right service or document as quickly as possible without cognitive noise.

GOV.UK’s design philosophy is rooted in the Government Digital Service (GDS) Design Principles: start with user needs, do less, design for accessibility, and make things open. The visual language reflects that — high contrast, large hit areas, predictable states, and clear typographic hierarchy.

This is for everyone. That means wide accessibility compliance, readable at all zoom levels, and tested across screen readers. The brand design system also serves thousands of separate government services that plug into GOV.UK’s frontend. That’s why there’s a rigid token system and consistent component library — if you break consistency, you break trust.

One noticeable choice: zero border radius across the board. No rounded corners. It’s sharp, grid-aligned, and almost print-like. This works because it reinforces a feeling of seriousness and stability. Rounded corners would push it toward “friendly app,” which isn’t the right tone for official government content.

They nailed clarity. The typography (GDS Transport) is designed for legibility at distance — it’s literally based on the UK road signage typeface — so the entire site has this “public infrastructure” feel. Links are underlined by default and buttons have strong color contrast.

This design system is functional minimalism with a public-service backbone. If you’re designing within it, you’re not here to be clever — you’re here to make things obvious.


2. Color System

2.1 Primary Colors

The standout primary is #1d70b8 — a deep, accessible blue used for links and other interactive elements. It’s saturated enough to stand out but not neon. The psychology here is trust and authority — blue is the classic “safe” choice for government and corporate communication. It’s a bit warmer than royal blue, giving it approachability while staying serious.

Black (#000000) and near-black (#0b0c0c) are the primary text colors. The near-black is used for body copy to reduce glare compared to pure black, but pure black is used in certain UI elements for maximum contrast.

White (#ffffff) is the base for button text, backgrounds, and various components. It’s paired with the blues and blacks to maintain legibility.

2.2 Complete Palette

Color NameHexRoleUsage
Black#000000Text/UIHigh-contrast text, borders, some icons
Near Black#0b0c0cTextBody copy, labels
Primary Blue#1d70b8Interactive/linksLinks, section headers
White#ffffffBackground/textButton text, backgrounds
Light Grey#b1b4b6DividersBorders, separators
Dark Green#005a30Functional stateHover/focus state in buttons
Yellow#ffdd00Focus indicator/accentFocus outlines
Dark Navy#003078Hover/focus stateHover link states
Near White (opaque)#ffffffHover state textLink hover
Semantic Secondary#f3f2f1BackgroundSection backgrounds
Light Blue BG#d2e2f1Secondary button backgroundSecondary buttons
Red#d4351cError indicatorValidation/error borders
Medium Blue Border#8eb8dcDivider accentSection borders

2.3 Color Relationships

Contrast is high across the board. Primary blue (#1d70b8) on white passes WCAG AA easily for normal text. Black and near-black on white are well above AAA requirements. The yellow focus outline (#ffdd00) on grey or black is immediately visible — you won’t miss it.

There’s no dark mode here. It’s a fixed light theme. The palette is small, deliberate, and functional.

2.4 Usage Guide

  • Primary blue + white: Use for links and primary actions. Works well for text links, not for large background areas — it’s too strong for a full page fill.
  • Near-black + semantic secondary background: Default reading mode.
  • Yellow focus outline: Reserved for accessibility focus states. Don’t use it for decorative purposes — it signals interaction focus.
  • Light blue background (#d2e2f1): Secondary button fill.
  • Avoid mixing red (#d4351c) with blue in the same component — they’re both strong and clash visually.
  • Never use custom tints — stick to the exact hex values.

3. Typography

3.1 Font Families

The entire system uses GDS Transport, a custom font based on UK road signage, with Arial as fallback. No Google Fonts or Adobe Fonts here — it’s a government-owned asset. This is a deliberate accessibility move: predictable rendering, wide OS support, and no dependency on third-party font hosting.

3.2 Type Scale

ElementFontSizeWeightLine Height
Heading-1GDS Transport64px (4.00rem)7001.20
Heading-1GDS Transport36px (2.25rem)7001.11
LinkGDS Transport30px (1.88rem)4001.00
Heading-1GDS Transport28.5px (1.78rem)7001.32
Heading-1GDS Transport24px (1.50rem)7001.25
Heading-1GDS Transport19px (1.19rem)4001.32
LinkGDS Transport19px (1.19rem)4001.32
ButtonGDS Transport19px (1.19rem)4001.00
ButtonGDS Transport19px (1.19rem)7001.05
Heading-1GDS Transport19px (1.19rem)7001.05
LinkGDS Transport19px (1.19rem)7001.30
Heading-1GDS Transport18.72px (1.17rem)700
LinkGDS Transport16px (1.00rem)4001.25
Heading-1GDS Transport16px (1.00rem)700
ButtonGDS Transport16px (1.00rem)700
LinkGDS Transport16px (1.00rem)700
Heading-1GDS Transport16px (1.00rem)400
ButtonGDS Transport16px (1.00rem)4001.25
ButtonArial13.3333px (0.83rem)400

3.3 Hierarchy

They use large heading sizes for top-level pages (64px), then drop quickly to medium sizes (36px, 28.5px) for sections. This gives a clear visual break between page title and content. Body and link text sits around 16–19px — readable without zoom, even for older users. Line heights are tight in headings to keep them compact, looser in body copy for readability.


4. Spacing & Layout

4.1 Spacing Scale

Base scale is 8px — everything is a multiple or half-multiple.

ValueRemCountNumeric Value
1px0.06rem21
4px0.25rem224
5px0.31rem695
6px0.38rem46
7px0.44rem97
7.5px0.47rem47.5
8px0.50rem98
10px0.63rem2610
12px0.75rem112
15px0.94rem3515
16px1.00rem116
17px1.06rem317
19px1.19rem2019
20px1.25rem7820
25px1.56rem425
30px1.88rem2530
32px2.00rem732
40px2.50rem640
50px3.13rem350
60px3.75rem1460

4.2 Layout

Breakpoints at 1020px and 1281px — fairly wide, indicating desktop-first with progressive shrink. Likely a max content width around the largest breakpoint minus margins. Mobile layouts collapse the grid but maintain the 8px spacing structure.


5. Visual Elements

  • Border radius: None. Literally 0px everywhere. This is part of the brand.
  • Shadow system: Minimal. Three shadows:
    • rgb(0, 45, 24) 0px 2px 0px 0px — used on primary buttons.
    • rgb(11, 12, 12) 0px 3px 0px 0px — used on secondary/outline buttons.
    • rgb(146, 145, 145) 0px 2px 0px 0px — rare, low confidence.
  • Borders & dividers: 1px solid light grey (#b1b4b6) for separators. Strong black (#0b0c0c) for buttons and form outlines. Occasional colored borders for states (blue, red).

6. Components

6.1 Buttons

Primary (gem-c-button govuk-button)

  • Default: bg #00703c (rgb(0, 112, 60)), text white, padding 8px 10px 7px, border 2px solid transparent, shadow dark green, no radius.
  • Hover: bg #f3f2f1, text #003078, shadow black.
  • Active: bg white, text near-black, shadow dark green.
  • Focus: bg #f3f2f1, text near-black, border 1px solid #ffdd00, shadow yellow + black.

Search Input (gem-c-search-with-autocomplete__input)

  • Default: bg white, text black, padding 6px, border 0px solid near-black.
  • Hover: shadow light grey ring, dashed outline.
  • Focus: inset shadow, yellow outline.

Secondary (gem-c-search__submit)

  • Default: bg #d2e2f1, text primary blue, padding 0px, border none.
  • Hover: bg #f3f2f1, text #003078, shadow black.
  • Active: bg white, text near-black, shadow dark green.
  • Focus: same as primary focus.
  • Default: transparent bg, text near-black, border 1px solid near-black, shadow black.
  • Hover: bg #f3f2f1, text #003078.
  • Active: bg yellow, text near-black, shadow black.
  • Focus: same as primary focus.
  • Primary link: color #1d70b8, underline 1px. Hover: text #ffffff (near-white), no underline.
  • Dark link: color near-black, underline. Hover: text near-white.
  • Inverse link: color white, no underline. Hover: underline 3px.

6.3 Forms

Search input is the main form field. Focus states are very visible — thick yellow outline. No border radius.

6.4 Cards

Borders: 1px solid light grey (#b1b4b6) top border. No radius. Padding from spacing scale. No shadow — depth via borders.


7. Design Tokens (CSS Custom Properties)

:root {
  /* Colors */
  --color-black: #000000;
  --color-near-black: #0b0c0c;
  --color-primary-blue: #1d70b8;
  --color-white: #ffffff;
  --color-light-grey: #b1b4b6;
  --color-dark-green: #005a30;
  --color-yellow: #ffdd00;
  --color-dark-navy: #003078;
  --color-semantic-secondary: #f3f2f1;
  --color-light-blue-bg: #d2e2f1;
  --color-red: #d4351c;
  --color-medium-blue-border: #8eb8dc;

  /* Typography */
  --font-gds-transport: "GDS Transport", arial;
  --font-size-h1-lg: 4rem;
  --font-size-h1-md: 2.25rem;
  --font-size-link-lg: 1.88rem;
  --font-size-h1-sm: 1.78rem;
  --font-size-h1-xs: 1.5rem;
  --font-size-body-lg: 1.19rem;
  --font-size-body-sm: 1rem;
  --font-size-button-sm: 0.83rem;
  --line-height-tight: 1.05;
  --line-height-normal: 1.25;
  --line-height-loose: 1.32;

  /* Spacing */
  --space-1: 1px;
  --space-4: 4px;
  --space-5: 5px;
  --space-6: 6px;
  --space-7: 7px;
  --space-7_5: 7.5px;
  --space-8: 8px;
  --space-10: 10px;
  --space-12: 12px;
  --space-15: 15px;
  --space-16: 16px;
  --space-17: 17px;
  --space-19: 19px;
  --space-20: 20px;
  --space-25: 25px;
  --space-30: 30px;
  --space-32: 32px;
  --space-40: 40px;
  --space-50: 50px;
  --space-60: 60px;

  /* Border Radius */
  --radius-none: 0px;

  /* Shadows */
  --shadow-green: rgb(0, 45, 24) 0px 2px 0px 0px;
  --shadow-black: rgb(11, 12, 12) 0px 3px 0px 0px;
  --shadow-grey: rgb(146, 145, 145) 0px 2px 0px 0px;
}

8. AI Coding Assistant Prompt

# GOV.UK Design System Specification

You are a GOV.UK design expert. Build UIs matching their visual language exactly.

## Brand Context
GOV.UK is the UK government’s official digital service platform. The design prioritizes clarity, trust, and accessibility over decoration. Everything is functional, grid-aligned, with sharp corners and high-contrast colors.

## Color Palette
- Black: #000000 — High-contrast text, icons
- Near Black: #0b0c0c — Body text, labels
- Primary Blue: #1d70b8 — Links, primary actions
- White: #ffffff — Backgrounds, button text
- Light Grey: #b1b4b6 — Dividers, borders
- Dark Green: #005a30 — Primary button shadows
- Yellow: #ffdd00 — Focus outlines
- Dark Navy: #003078 — Hover link states
- Semantic Secondary: #f3f2f1 — Section backgrounds
- Light Blue BG: #d2e2f1 — Secondary button background
- Red: #d4351c — Error states
- Medium Blue Border: #8eb8dc — Section borders

## Typography
Font family: "GDS Transport", arial

| Level | Size | Weight | Line Height | Use For |
|-------|------|--------|-------------|---------|
| H1-lg | 64px | 700    | 1.20        | Page title |
| H1-md | 36px | 700    | 1.11        | Section headings |
| Link-lg | 30px | 400  | 1.00        | Large nav links |
| H1-sm | 28.5px | 700 | 1.32        | Subheadings |
| H1-xs | 24px | 700   | 1.25        | Minor headings |
| Body-lg | 19px | 400 | 1.32        | Paragraph text |
| Link-md | 19px | 400 | 1.32        | Inline links |
| Button-md | 19px | 400 | 1.00       | Default buttons |
| Button-bold | 19px | 700 | 1.05     | Bold buttons |
| Body-sm | 16px | 400  | 1.25        | Small text |
| Button-sm | 13.3333px | 400 | —     | Small controls |

## Spacing & Grid
Base: 8px  
Scale: 1px, 4px, 5px, 6px, 7px, 7.5px, 8px, 10px, 12px, 15px, 16px, 17px, 19px, 20px, 25px, 30px, 32px, 40px, 50px, 60px

## Border Radius
- none: 0px — All components

## Shadows & Depth
- Primary button shadow: rgb(0, 45, 24) 0px 2px 0px
- Outline button shadow: rgb(11, 12, 12) 0px 3px 0px
- Minimal use — no decorative shadows

## Component Specifications

### Primary Button
Default: bg #00703c, color #ffffff, padding 8px 10px 7px, border 2px solid transparent, shadow var(--shadow-green)  
Hover: bg #f3f2f1, color #003078, shadow var(--shadow-black)  
Active: bg #ffffff, color #0b0c0c, shadow var(--shadow-green)  
Focus: bg #f3f2f1, color #0b0c0c, border 1px solid #ffdd00, shadow #ffdd00 and #0b0c0c

### Secondary Button
Default: bg #d2e2f1, color #1d70b8, padding 0px, border none  
Hover: bg #f3f2f1, color #003078  
Active: bg #ffffff, color #0b0c0c  
Focus: same as primary focus

### Outline Button
Default: transparent bg, color #0b0c0c, border 1px solid #0b0c0c, shadow var(--shadow-black)  
Hover: bg #f3f2f1, color #003078  
Active: bg #ffdd00, color #0b0c0c, shadow var(--shadow-black)  
Focus: same as primary focus

### Navigation Links
Primary: color #1d70b8, underline 1px; hover color #ffffff, no underline  
Dark: color #0b0c0c, underline; hover color #ffffff  
Inverse: color #ffffff, no underline; hover underline 3px

### Input Fields
Search input default: bg white, color black, padding 6px, border 0px solid #0b0c0c  
Focus: inset shadow, outline #ffdd00 solid 3px

### Cards
Border-top: 1px solid #b1b4b6, no radius, padding from spacing scale

## Layout & Responsive Rules
Breakpoints: 1020px, 1281px  
Maintain 8px grid spacing across all devices

## Interaction Rules
- Transition timing: 150ms ease for color/state changes
- Focus indicators: Always yellow outline
- No animation beyond state change

## DO List
- Use ONLY colors from palette
- Maintain 8px grid
- Keep corners sharp (0px radius)
- Use GDS Transport for all text
- Always show focus outline
- Keep link underlines unless inverse

## DON'T List
- Don't add new colors
- Don't round corners
- Don't remove focus outlines
- Don't use shadows for decoration
- Don't reduce text sizes below 16px for body

## Code Examples

```css
.btn-primary {
  background: #00703c;
  color: #ffffff;
  padding: 8px 10px 7px;
  border-radius: 0;
  border: 2px solid transparent;
  box-shadow: rgb(0, 45, 24) 0px 2px 0px;
  font-family: "GDS Transport", arial;
  font-size: 19px;
  font-weight: 400;
  transition: background 150ms ease;
}
.btn-primary:hover {
  background: #f3f2f1;
  color: #003078;
  box-shadow: rgb(11, 12, 12) 0px 3px 0px;
}
.btn-primary:focus {
  outline: 3px solid #ffdd00;
  outline-offset: 0;
}
```

```css
.card {
  background: #ffffff;
  border-top: 1px solid #b1b4b6;
  padding: 20px;
  border-radius: 0;
}
```

```css
.input-search {
  background: #ffffff;
  color: #000000;
  padding: 6px;
  border: 0px solid #0b0c0c;
  border-radius: 0;
}
.input-search:focus {
  outline: 3px solid #ffdd00;
  box-shadow: inset 0 0 0 4px;
}
```

9. Summary

TL;DR: GOV.UK’s design system is functional minimalism for public service. High contrast, sharp corners, predictable states. Every token is deliberate. If you stick to the palette, spacing, and typography, you can’t go wrong.

Brand Keywords:

  • public-service-minimalism
  • sharp-corner-authority
  • accessibility-first
  • functional-grid