Skip to contact form
← BlogDesignAugust 18, 2026 · 3 min read

The greys that look fine and measure badly

On a dark interface, the difference between readable and legally inadequate is invisible to the person choosing the colour.

ark interfaces are built out of translucent white. Body copy at seventy percent, secondary text at sixty, a caption at forty-five because it should recede a little. It is a pleasant way to work and it produces a consistent, quiet result.

It is also a trap, because the designer choosing that forty-five is looking at a good screen, at full brightness, in a room they control, with young-enough eyes and the context of having just written the sentence. Every one of those advantages is missing for the reader.

Thefailureisnotthatitlooksbad.Itlooksfine.Thatistheentireproblem.

Try to find the point where it becomes unreadable to you, then look at the ratio. There are usually several steps between where the number stops clearing the standard and where your own eyes start to complain — and everything in that gap is text that you find comfortable and some of your readers cannot use.

Because a review is a person looking at a screen, and a person looking at a screen is exactly the instrument this failure defeats. Nobody has ever caught this in review, here or anywhere, because there is nothing to catch: the page looks correct.

So there is a guard that walks the source, finds every translucent-white text class, and works out which of them cannot reach four and a half to one against any surface this app actually paints. When it fails it names the tier that would have cleared it, which turns a finding into a fix.

It caught us three days ago. We had just spent an afternoon making nine pages tell the truth about permissions, drew a small lock icon at forty-five percent white, and would have shipped a fixed page in a colour some readers could not read. The test named sixty-five. It took four seconds to change.

Where a mistake has no runtime failure mode — a colour that is merely hard to read, a currency named in prose, a route that forgets its own scope check — the only thing that will ever catch it is something that reads the source rather than running it. Those tests look strange. They are the ones that pay.

Want this kind of thinking on your project?

This is how we work through real decisions. If you're weighing a build of your own, tell us about it — we reply within one working day.