Free tool
One colour, two readings.
Pick a colour on the left and it lands twice: as a highlight behind black text, and as a flat field of the colour alone. The contrast ratio against near-black sits underneath, because a highlight that looks right at display size can fail at reading size.
Highlight on black text
The colour carries the line, the ink stays black.
Body copy with a marked run inside it so you can judge the fill against #111111 at reading size, not just at display size.
Why two panels
A colour does two different jobs
The same hex can be the best thing on a page in one role and unreadable in the other.
As a fill, behind text
Here the colour is the background and near-black is the ink, so what matters is the contrast between them. A very light colour wins: the lime this site uses reads at 16.6:1 behind #111111, which is the strongest pairing on the whole site. WCAG AA wants 4.5:1 for body text, and the readout under the panels tells you whether you have it.
As the text itself
Invert the roles and the same light colour collapses — that lime on white is 1.1:1, which is invisible. This is the mistake behind most unreadable brand sites: a colour picked as a fill, then used for links and headings. If you want the brand hue in text, you need a darkened version of it, and you need to check that one separately.
So pick two, not one
One bright shade that only ever appears as a fill with dark ink on it, and one darkened shade that is the only one allowed to carry text. That is exactly how this site's palette is built, and why the lime never appears as a link colour anywhere on it.