How to buildOctober 11, 20266 min read
UX/UI design: from research to a design systemStep 4 of 9

Typography and colour in interfaces: readability, contrast, accessibility

In short

A readable interface rests on a few rules: a limited type scale, lines no longer than 50–75 characters, line height around 1.5 for body text, and a typeface with well-made Cyrillic. Colour is assigned by role — neutrals, brand, accent and semantic — and checked for contrast: under WCAG, at least 4.5:1 for regular text and 3:1 for large text and interface controls. Meaning is never carried by colour alone.

FundamentalsLevel: BeginnerTypography & Color

After this you will be able to

  • Build a type scale of 5–6 sizes and give each one a role
  • Limit body text to 50–75 characters per line and set line height to about 1.5
  • Assign colours to roles — neutral, brand, accent, semantic — and check contrast against WCAG: 4.5:1 for text, 3:1 for large text and UI controls
  • Check a typeface for Cyrillic quality and Kazakh letter coverage
Contents
  1. 01Type scale: fewer sizes, more order
  2. 02Line length and line height
  3. 03Font pairing and Cyrillic quality
  4. 04Colour roles: neutrals, brand, accent, meaning
  5. 05Contrast and accessibility: what WCAG requires
  6. 06Dark mode

Type scale: fewer sizes, more order

Interface typography isn’t about picking a “nice font” — it’s a system: which sizes exist, what each one is for and how they relate. When sizes are chosen block by block, a site ends up with a dozen near-identical headings and the hierarchy falls apart. The fix is a scale: a small set of sizes, each with its own role.

Display heading

Size
48–64 px
Where it’s used
Hero, main offer

Section heading (H2)

Size
32–40 px
Where it’s used
The start of each content section

Subheading (H3)

Size
20–24 px
Where it’s used
Cards, subsections, service names

Body text

Size
16–18 px
Where it’s used
Descriptions, articles, forms

Small text

Size
13–14 px
Where it’s used
Captions, footnotes, supporting info
An example scale for a website (desktop). Actual values depend on the typeface and the project.

Line length and line height

Lines that are too long are hard to read: the eye loses the start of the next line. Lines that are too short chop sentences into fragments. Based on its research, Baymard Institute recommends 50–75 characters per line for body text. WCAG success criterion 1.4.8 (level AAA) sets a maximum width of 80 characters, line spacing of at least one and a half within paragraphs, and no justified text.

50–75

characters per line of body text — Baymard’s recommendation

80

characters — the upper line-width limit in WCAG 1.4.8

1.5

line spacing within paragraphs under WCAG 1.4.8

  • Cap the width of text blocks: in CSS, the ch unit, tied to the width of the font’s characters, is handy for this
  • Give body text a line height of about 1.5 and large headings something tighter, around 1.1–1.25 — otherwise multi-line headings fall apart
  • Left-align text: justified alignment creates uneven gaps between words
  • Leave a clear gap between paragraphs — it works like a pause in speech

Font pairing and Cyrillic quality

Most interfaces need only one typeface in several weights, or a pair: an expressive one for headings and a calm, highly legible one for text. Nielsen Norman Group advises narrowing the choice by understanding typeface classifications, favouring families with multiple variations and distinct characters, and pairing them with consistency and readability in mind.

For websites in Kazakhstan there’s an extra check that often gets skipped: Cyrillic. Many popular typefaces were designed around Latin, with Cyrillic letters added later and noticeably weaker. Kazakh-specific letters may be missing altogether — the browser then pulls them from a fallback font, and words look stitched together from different typefaces.

  • The font covers every Russian and Kazakh letter: ә, ғ, қ, ң, ө, ұ, ү, һ, і
  • Cyrillic is drawn with the same care as Latin: check ж, ф, ы, д, л in running text
  • The weights you need are there: regular, bold and, if you need it, a true italic rather than slanted roman
  • Numerals are unambiguous: 1, 7 and l don’t get confused in prices and phone numbers
  • The font has been tested on the site’s real copy, not on a catalogue specimen

Colour roles: neutrals, brand, accent, meaning

An interface palette isn’t a set of favourite shades — it’s a division of responsibilities. Every colour should answer “why is it here?”. If the brand colour is at once the header background, the button, the link and the “new” badge, it stops meaning anything.

  1. 01NeutralsBackgrounds, text, borders, dividers — most of the screen
  2. 02BrandRecognition: logo, large surfaces, illustrations
  3. 03AccentThe main action: book, check out, submit
  4. 04SemanticStates: error, success, warning, info
The higher the layer, the less screen space it takes and the more it should stand out.

Contrast and accessibility: what WCAG requires

WCAG — the W3C’s Web Content Accessibility Guidelines — sets measurable contrast requirements. As web.dev explains, the 4.5:1 ratio was chosen because it compensates for the loss of contrast sensitivity typical of people with reduced vision. It’s a minimum: the pale grey text on white so popular in “airy” mockups often fails it.

Regular text

Minimum (level AA)
4.5:1
WCAG criterion
1.4.3 Contrast (Minimum)

Large text: 18 pt and up (about 24 px) or 14 pt bold and up (about 18.5 px)

Minimum (level AA)
3:1
WCAG criterion
1.4.3 Contrast (Minimum)

Controls and meaningful graphics: field borders, icons, focus indicator

Minimum (level AA)
3:1 against adjacent colour
WCAG criterion
1.4.11 Non-text Contrast

Information conveyed by colour

Minimum (level AA)
Must also be conveyed another way
WCAG criterion
1.4.1 Use of Color

Colour only

  • A field with an error simply turns red
  • Required fields are marked in green
  • Links in text differ only by colour
  • Chart lines differ only by hue

Colour plus a second cue

  • A red border, an icon and the text “Enter your phone number”
  • An asterisk and a “required” label
  • Links are underlined or set in a different weight
  • Lines also differ by style and label

Dark mode

Dark mode isn’t a must-have badge of a “premium” product — it’s a setting for those who find it more comfortable. Reviewing the research, Nielsen Norman Group notes that people with normal vision generally perform better with light mode, while some people with cataracts and related conditions do better with dark mode. So it makes sense to offer a dark theme as an option rather than impose it. A site can detect the theme someone has chosen in their operating system through the prefers-color-scheme media query.

  • Don’t invert the palette automatically: design the dark theme separately, on the same colour roles
  • Avoid pure black backgrounds with pure white text — in our experience, a deep grey and a slightly softened white read more calmly
  • Recalibrate accents: a saturated colour that worked on white can “glow” and strain the eyes on a dark background
  • Show depth through surface lightness: shadows barely register on dark backgrounds, so raised cards are made slightly lighter than the background
  • Check contrast in each theme separately — passing in light mode guarantees nothing for dark mode
Good typography and colour go unnoticed: people simply read and tap what they need, without wondering why it feels easy.
Tell us about your task — we'll review your request and get back to you

Got a project?
We'll scope and estimate it — for free.

Tell us about the product or the problem. After reviewing the task we'll come back with an architecture, a timeline and a price for the first version.

  • Scope and risks estimated before we start
  • NDA — yours or ours
  • Work starts within a week

Please do not send passwords, access keys or source code through this form — we will agree a safe way to share access separately.

By clicking the button you agree to the processing of your personal data.