Guides

    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.

    Versely Team4 min read

    /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.

    1. Checker. Hex of the type vs hex of the card. Zero credits.
    2. Overlay or caption preset. Your line, named font, top / center / bottom. Editor export when you ship.
    3. 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.