Measure colors.
Keep context.
Method
Pair mode composites the background over an opaque canvas, then the foreground over that effective background, using standard source-over alpha on encoded sRGB channels. It computes WCAG2.x relative luminance from the unrounded effective channels, using the 0.04045 transfer threshold and 0.2126/0.7152/0.0722 weights. Ratio is (lighter+0.05)/(darker+0.05). The displayed ratio/channel numbers are rounded; PASS/FAIL decisions use the unrounded ratio. JSON retains numeric precision.
Normal-text AA needs 4.5:1, AAA 7:1; large-text AA 3:1, AAA 4.5:1. Large text means at least 18pt, or 14pt bold, with equivalent sizing for other scripts/fonts. Non-text 3:1 is a numerical comparison only. The actual criterion depends on essential graphical objects, states and adjacent colors, with exceptions. It is not a blanket result for a UI component.
W3C text contrast guidance, enhanced contrast, non-text contrast, source-over compositing.
Supported inputs and limits
Hex 3/4/6/8 (with optional #), comma-separated rgb(r,g,b) or rgba(r,g,b,a), channels 0..255 and alpha 0..1. Fractional numeric channels are accepted. Unsupported: named colors, percentages, modern space/slash syntax, HSL, gradients, images, blend/filter/group-opacity effects and wide-gamut colors. Canvas must be opaque. Palette mode takes 2 to 12 unique named opaque colors, up to 4096 characters. It checks ordered foreground/background pairs, not actual usage. No automatic color correction, APCA, color-vision simulation or site scanning.
Preview uses opaque computed colors and samples at 16/24 CSS px. Font smoothing, weight, surrounding content, vision differences and real rendering affect readability. Ratio is one numerical criterion, not a complete accessibility audit or WCAG compliance certification. A palette PASS cell means only that pair meets normal-text AA 4.5:1. Labels and exceptions still need human review.
Privacy and export
Calculations run in the page with no external runtime requests, analytics, tracking cookies, uploads or persistent palette storage. Input changes invalidate results. JSON exports contain input colors, effective colors, full ratios and numerical threshold flags. They are calculations, not official certification. Browser downloads and extensions are outside this app; hosting access logs are not covered by these claims.
Open-source attribution
Core math adapted from SEN color-contrast-checker contrast.js, revision 63a88efc89e5b8c7690e33ed0d361f3af05a248f, copyright (c) 2026 SEN LLC (SEN 合同会社), MIT. Full original terms. Changes: strict bounded parser, alpha layering, current sRGB threshold, palette matrix and precision-preserving reports, new responsive UI. No upstream UI/assets/fonts or other runtime dependencies included. New app code uses MIT terms too.
Download source and licence. Revised November 13, 2026.