Problem
Someone scanning a page needs to know which of forty things needs them, and they need it before they have read a single label or number.
Solution
A small closed set of colours where each one means a state and nothing else. Three or four values, defined once, applied everywhere, and never used decoratively.
The closed set is the whole pattern. The moment green also means “our brand” or “series 3”, the colour stops being a signal and becomes a coincidence the viewer has to disambiguate. Every dashboard that has lost this has lost it gradually, one reasonable exception at a time.
Two constraints have to be designed in rather than discovered.
Colour cannot be the only carrier. WCAG is explicit that colour must not be the sole means of conveying information, and roughly one in twelve men cannot separate the red and green a status palette leans on hardest. The fix is not to abandon the palette but to pair it: an icon, a shape, a word, a position. A red dot and a green dot that differ only in hue are a coin flip for a meaningful slice of any audience.
The colours must survive their background. WCAG 2.2 sets a contrast floor for non-text elements like status indicators. A palette designed on a white page and then shipped on a dark dashboard usually fails, because the mid-tone amber that read as warning on paper vanishes on charcoal. A status palette needs a light and dark variant of every value, tested in both.
The third thing, which is not a design problem but kills more implementations than either: the thresholds behind the colour. A colour is a claim that a rule fired. If the rule is stale, the page is confidently wrong in the most trusted visual channel it has.
Use when
Anywhere a viewer must triage rather than read. Status columns, tiles, maps, timelines, alert lists.
Don’t use when
The quantity is continuous and the magnitude matters. Reducing latency to amber loses the difference between 210ms and 900ms. Use colour for state and let a number or a bar carry the amount.
Trade-offs
Status palettes create a binary reading of continuous data, so values either side of a threshold look categorically different when they are nearly identical. They travel badly: the same green means “healthy” in one product and “completed” in another, and teams using both build a small daily confusion. Cultural conventions differ, notably red for up in some financial markets. And a colour that appears constantly stops being read at all, which is how a page ends up with a permanently amber tile nobody has looked at in a year.
Checklist
- How many states, and is the set closed and written down?
- Does any of these colours also appear decoratively or as a series colour on the same page?
- Is there a non-colour signal for every state—icon, shape, label, position?
- Do the colours meet contrast requirements against both light and dark backgrounds?
- Has the palette been checked against the common colour vision deficiencies?
- Does saturation or weight distinguish severity, or are warning and critical equally loud?
- Where are the thresholds defined, and who can change them?
- What does “unknown” or “no data” look like, and is it distinct from healthy?
- Does the same colour mean the same thing across every page in this product?
- Is anything permanently coloured, and has anyone noticed?
Compare
Grafana attaches colour to thresholds as a field property, so status colour is derived from a rule rather than set by hand, and the same thresholds drive the stat panel, the gauge, the table cell and the state timeline. That consistency is the strongest argument for defining status colour at the data layer rather than the panel layer. Sentry encodes severity levels on the event rather than on the display, so colour follows the data into lists, alerts and digests. Datadog ties colour to monitor state, meaning what you see is what would page someone, which keeps the page and the alerting honest with each other. Public status pages typically run three states and always pair colour with a word, because their audience is unknown and cannot be assumed to share any convention.
Related
Grayscale with alerts is the discipline that decides how much of the page these colours are allowed to occupy. Threshold line is where the rule behind the colour is usually drawn. Status history is this palette applied along a time axis. Red/green direction coloring covers the finance-specific version and its accessibility problem. Header KPI strip is where a wrong status colour does the most damage.