Contrast Checker in the browser is not a generate
/free-tools/contrast-checker never spends a credit. Do not pay a model to do an in-browser file job.
/free-tools/contrast-checker never spends a credit. Do not pay a model to do an in-browser file job. Two hex values in, a WCAG ratio out. No upload, no account, no generate. Treating that arithmetic as an image prompt is how a team burns credits to be told what (L1 + 0.05) / (L2 + 0.05) already knew.
Versely has no free generation tier. Every model call costs credits. Free tools exist because these jobs never touch a model. Mixing the two meters is the mistake.
Zero credits because nothing is generated
The checker runs in the visitor's browser. Foreground and background are parsed as 3-digit or 6-digit hex on the device. Relative luminance uses WCAG 2's 0.04045 threshold and 2.4 gamma — not the older 0.03928 figure some libraries still ship. Nothing is sent to a server. The page works with the network off.
That is why it is free. No model, no API, no network. A "free contrast check" that called an image model would contradict pricing. This one is arithmetic.
Ask a generate to "make this text more accessible" and you do not get a ratio. You get a new still, billed as a still, and a guess. The checker reports AA and AAA for normal and large text, plus a 3:1 UI line. The generate reports a picture.
The formula is WCAG, not a vibe
The ratio is (L1 + 0.05) / (L2 + 0.05) with WCAG 2 relative luminance. Large text in the spec is 18pt (24px) regular, or 14pt (about 18.67px) bold. Below that, 4.5:1 (AA) and 7:1 (AAA) apply. Bold 16px body copy is still normal text.
WCAG contrast is not a perception test. Thin light-grey type on white often looks fine in a bright room and still fails 4.5:1. The ratio is the spec. Your eye in this room is not. Swap the fields if you wired them backwards.
Use the checker on the colours you will actually paint: overlay fill, caption card, lower-third scrim. Do not average the frame. Local contrast is the only contrast a glyph has.
Generates live on /cost
When you need a model, the bill is credits, quoted before dispatch. /cost maps those formulas — per second, per 1,000 characters, per megapixel, per job — from the same price_matrix the app charges. No USD-per-second figure. Credits are the unit.
A contrast check is not on that map. Its coefficient is zero. An overlay burn is. Editor previews and final export: 480p previews are free (short per-user cooldown); the final export is one charge for the whole timeline. Check contrast on the hex, preview the overlay, export once. Do not generate a new plate to "see if the type holds."
If type still fails on a busy generated plate, the fix is a scrim, a stroke, or a calmer lower third — not a more expensive video model.
When a model is still the right spend
Pay credits when you need pixels that do not exist. Do not pay credits to measure two colours you already have.
- Checker. Hex of the type vs hex of the card. Zero credits.
- Overlay or caption preset. Your line, named font, top / center / bottom. Editor export when you ship.
- Generate. Only if the plate itself is wrong.
Skip step 1 and you discover the fail on the muted feed. Skip step 2 and you ask a video model to typeset. If the plate is already locked, you are done generating.
FAQ
Does the contrast checker upload my screenshot?
No. This particular tool does not even take a file. You enter two hex colours. Sister free tools that do take files still run on Canvas and the File API on your machine. Nothing is sent to a server.
Can I prompt Ideogram to "fix contrast" instead?
You can, and you will pay six credits for a new still. You will not get a WCAG ratio. You might get a different layout. Measure first. Generate only if the still itself is the problem.
Why not put contrast checking in the model catalog?
Because it is not a model. Catalog rows have a price_matrix. This page has a formula from the spec and two text fields. Putting it on /cost would imply a charge that does not exist.
Is a 4.5:1 pass on the checker enough for a moving lower third?
It is enough for that pair of colours. Generated plates change every frame. A pair that passes on the scrim still fails if you skip the scrim and sit type on bokeh. Check the pair you will paint, then preview the hold.