COLOR THEORY BASICS: Use the Color Wheel & Color Harmonies to Choose Colors that Work Well Together
The colour wheel, harmonies and how to build a palette that holds together. Watch it before choosing colours for the exercise: it is much easier to fix a bad palette than to design around one.
Watch on YouTube (opens in a new tab)Third-party video. It is loaded from YouTube and is not hosted by the academy.
By the end of this lesson you can
- Describe colour with hue, saturation and lightness, and explain why lightness matters most for interfaces.
- Build a functional palette with neutrals, a primary colour and semantic colours, each in several shades.
- Assign colours to roles (text, surface, action, success, warning, error) rather than to individual screens.
- Check contrast and avoid relying on colour alone.
The idea
Colour in interfaces has three jobs: communicate brand, create hierarchy and signal meaning. It is the most emotional design tool and also the easiest to misuse.
Hue, saturation and lightness
Hue is the colour family (red, blue, green). Saturation is how intense it is. Lightness is how close it is to white or black. For readability and contrast, lightness matters far more than hue: dark blue text on white is readable, light yellow is not, whatever the brand says.
A functional palette
A practical interface palette has three parts:
- Neutrals: greys (often slightly warm or cool) for text, borders, backgrounds and surfaces. Most of an interface is neutral.
- Primary (brand) colour: used sparingly for primary actions, links, selection and focus. Its power comes from scarcity.
- Semantic colours: green for success, amber for warning, red for errors or destructive actions, blue for information. Their meanings must stay consistent.
Each colour needs a range of shades, usually from very light (backgrounds) to very dark (text on light backgrounds). Many systems use numbered steps such as 50 to 900.
Roles, not colours
Instead of saying "this button is #1E40AF", say "this is the primary action colour", which happens to be a particular blue. Naming colours by role (text primary, text secondary, surface, border, action primary, danger) keeps usage consistent and makes changes, including dark themes, much easier. These role names become semantic design tokens later.
Contrast and colour independence
WCAG asks for at least 4.5:1 contrast for normal text, 3:1 for large text, and 3:1 for meaningful non-text elements such as icons, input borders and focus indicators. Separately, never use colour as the only way to communicate meaning. About 1 in 12 men and 1 in 200 women have some form of colour vision deficiency, and everyone struggles with colour in bright sunlight. Pair colour with text, icons or patterns.
A rule of thumb for proportion
A common starting heuristic is roughly 60% neutral background, 30% secondary surfaces and text, and 10% accent. It is not a law, but it reminds you that accents work because they are rare.
Why it matters in real projects
Colour mistakes are among the most common accessibility failures on the web, and they directly affect whether people can read text and understand states. Inconsistent semantic colours cause real errors: if red sometimes means "error" and sometimes "sale", people misread both. A role-based palette also makes products cheaper to maintain, because a brand refresh or a dark theme changes a handful of tokens instead of hundreds of screens.
A realistic example
A banking app uses its brand red for the logo, for "Transfer" buttons, for negative balances and for error messages. Customers hesitate before transferring money because the button looks like a warning, and some miss genuine errors because red is everywhere.
The team keeps red in the logo but introduces a dark blue for primary actions, reserves red strictly for errors and destructive actions, and shows negative balances with a minus sign and the word "overdrawn" in dark text, with red only as a supporting cue. Hesitation on the transfer screen drops in testing, and error messages become noticeable again.
Step by step
Start with neutrals
Choose a text colour, a secondary text colour, a border colour, a page background and a surface colour. Check both text colours on both backgrounds.
Choose one primary colour
Pick a shade dark enough to carry white text and to work as link text on white (4.5:1 or more).
Add semantic colours
Choose success, warning, error and information colours, each with a dark shade for text and icons and a pale shade for backgrounds.
Name every colour by role
Write a table: role, colour value, where it is used, contrast result.
Check states
Hover, focus, pressed and disabled states each need colours. Focus indicators need 3:1 contrast with what is around them.
Test without colour
View your screens in greyscale. Every state and message should still be understandable.
Common mistakes
Mistake Using the brand colour for everything.
Instead Reserve it for primary actions and key highlights so it keeps its power.
Mistake Communicating status only by colour (green dot, red dot).
Instead Add a text label or a distinct icon.
Mistake Picking pale, trendy colours for text or buttons.
Instead Measure contrast. Use pale tints for backgrounds, dark shades for text.
Mistake Using red for both errors and promotions.
Instead Keep semantic colours exclusive to their meanings.
Check your understanding
Choose an answer, then check it. There is an explanation either way.
Practice exercise
Exercise · about 45 min
Build a role-based palette
Create a palette for a library's book reservation app. Use the walkthrough.
Steps
- Define neutrals for text, borders and surfaces.
- Choose a primary colour and semantic colours with light and dark shades.
- Create a role table with contrast results.
- Design one screen (a reservation list with available, waiting and overdue items) using only your palette.
- Check the screen in greyscale and fix anything that depends on colour.
Deliverable
A palette sheet with role names and contrast values, and one screen in colour and greyscale.
Self-assessment
Tick each item when it is true of your exercise. Be honest; this is for you.
5 items
Summary
- Lightness, not hue, decides readability.
- A functional palette has neutrals, one primary colour and semantic colours, each in several shades.
- Name colours by role, not by value.
- Meet contrast requirements and never rely on colour alone.
Further reading
Third-party sources, chosen for reliability. They open in a new tab.
- Understanding Success Criterion 1.4.3: Contrast (Minimum) (opens in a new tab)W3C WAI
- Understanding Success Criterion 1.4.1: Use of Color (opens in a new tab)W3C WAI
- Contrast Checker (opens in a new tab)WebAIM
A free tool for checking text and background colour pairs.
Your notes
Marking complete updates your course and roadmap progress.