Brand Colours That Pass Contrast Checks
By CodexierPublished 6 min read
A brand palette is usually three or four colours picked for a logo and a business card. Put those same colours on a website, and white text on the brand orange fails the contrast check, the light grey body text is unreadable on a phone in sunlight, and the accessibility law for company websites starts to matter. This guide shows how to grow the palette into pairs that pass, so the brand stays recognisable and the site stays legal and readable.
Why many brand colours fail
Contrast is about luminance, not hue. A saturated orange feels strong, but its brightness sits in the middle of the range, which is exactly where neither white nor black text gets far enough away from it. The same applies to the light greys designers like for secondary text. The check the law and the browser tools apply is mechanical, so the answer has to be mechanical too: measure the pairs, not the feeling.
Building tints and shades
For each brand colour, build a scale of roughly ten steps from near-white to near-black, keeping the hue and adjusting lightness. The original brand colour lands somewhere in the middle. The lightest steps become backgrounds; the darkest become text; the original stays for logos, large headings and accents where contrast is not required.
- Start from the brand colour and generate steps in a perceptual colour space, so that equal steps look equal; the tools built into Figma and most design-token generators do this.
- Adjust saturation slightly at the ends of the scale so the very light and very dark steps still feel like the brand rather than grey.
- Name steps by number, not by adjective: brand-100 to brand-900 ages better than 'light' and 'lighter'.
- Do the same for a neutral grey scale with a hint of the brand hue, which is what body text and borders will actually use.
- Add one semantic set for success, warning and error, built the same way, so status colours pass too.
Dark mode variants
Dark mode is not the same palette inverted. Pure white text on pure black glares, saturated brand colours look neon on dark backgrounds, and shadows stop working. The scales you built already contain the answer: use the darkest neutral steps as backgrounds, the lighter neutrals for text, and move brand usage a few steps lighter so the button that was brand-700 on white becomes brand-400 on neutral-900.
Backgrounds
Dark neutral, not black. Layer surfaces by making raised elements slightly lighter instead of adding shadow.
Text
Off-white for body text, a lighter neutral for secondary. Both still need the 4.5:1 check against the dark surface.
Brand accents
Desaturate slightly and lighten. The brand colour that carries a button in light mode is usually too dark to pass in dark mode.
Decide whether you need it
Dark mode doubles the pairs to maintain. Add it when your product is used for long sessions or your users ask for it, not because the template offers it.
Documenting approved combinations
The measurements are worthless if the next designer or developer picks a new pair from the scale without checking. Write the approved pairs into the design system as named tokens: text-on-brand, brand-on-light, link, focus. Code uses the tokens, not the raw colours, so a passing pair cannot quietly become a failing one. Put the contrast ratio next to each pair in the documentation, and add an automated check in the build that fails when a token pair drops below the target. This is the part of a design system and UI kit that saves the most trouble later, and it belongs with the other durable choices covered in web design that ages well.
When you do not need this: a single landing page with dark text on white and one button can be checked by hand in five minutes; you do not need a token system for it. The scale and the documentation pay off when several people ship interface work over years. If your brand colours were chosen before the website existed and nobody has measured them, book a free 15-minute call and we will run the pairs you use today through the checker together.
Frequently asked questions
Do we have to change our brand colour if it fails?
No. Keep it for the logo, large headings and decorative use, where contrast rules are looser or do not apply. Add darker and lighter steps of the same hue for text and buttons. The brand is the hue, not the one exact value.
Is 4.5:1 a legal requirement in Sweden?
For public sector websites, the accessibility law references WCAG, which sets that ratio for normal text. For private companies covered by the accessibility requirements for certain digital services from 2025, the same standard applies. For everyone else it is best practice that also makes the site readable on phones outdoors.
Which tool should we use to check contrast?
Any WCAG contrast checker gives the same ratio, because the formula is fixed. Figma plugins check pairs during design; browser developer tools show the ratio on live pages; a build-time check on tokens catches regressions.
Can colour alone show that something is an error or a link?
No. Colour must be paired with another cue: an underline for links, an icon or text for errors, a border for focus. Colour-blind users and anyone in bright light will otherwise miss the signal even when the contrast passes.
Not sure your palette passes?
Send us the brand colours and a page where they are used. In fifteen minutes we tell you which pairs fail, what steps would fix them and whether a token setup is worth it for you.
Book a free 15-minute call