Why these, and not fifty
There is no shortage of free colour tools. Most of them generate something and stop, which is the easy half of the problem — and increasingly the half a chat assistant will do for you in a sentence.
These 57 are built around the half that is left. Each one answers the question you were going to ask next: not just does this pass, but what to change; not just here is a palette, but which of its colours collapse for a colour-blind reader; not just here is a ramp, but which step is safe for body text and which is not.
They share one engine
The same colour maths sits underneath the 9 colour tools: WCAG 2 ratios, APCA at your real font size and weight, CIEDE2000 perceptual distance, OKLCH for anything that moves lightness, and the Machado model for colour vision deficiency.
That is why the palette generator can tell you about contrast and the converter can tell you about colour blindness. They are not separate products that happen to share a header — a colour you fix in one is a colour the others already understand.
Nothing leaves your browser
Every calculation happens on your device. There is no account, no upload step and no advertising on any tool page. You can verify this by opening your network tab, or by switching off your connection — the tools keep working. Two exceptions, stated plainly. The type legibility checker fetches the font you pick from Google Fonts so it can show you a real preview; its measurements still come from a table built into the page. And one cookieless script counts page views, so we can tell which tools are worth improving. It reports the page address only as far as the#, and everything you make here lives after the# — so your colours and type choices are never part of what it sends.
This is partly a privacy position and partly an engineering one. Work that happens locally is instant, survives a bad connection, and cannot leak. It also means a result is shareable by copying the address bar, because the tool state lives in the URL rather than on a server.
The site passes its own tests
Every colour pair in this interface is asserted against the contrast engine that powers the tools, and the build fails if one of them stops passing. The first time we ran that check it found seven failures in our own chrome — including a dark-mode link colour that passed WCAG 2 comfortably and sat at Lc 37 against an APCA requirement of 75.
Two of the fixes were typographic rather than chromatic. Our labels moved from 11px to 13px, because 11px text cannot pass APCA at any contrast, and our button labels moved to 17px for the same reason.