One brand colour in. A palette out where every pairing is measured.

PairPass is one joined workflow, not four separate tools: generate a role-assigned palette that passes by construction, audit every pairing by the job it does, repair the failures without changing your hue, and export tokens that contain only the pairings that pass — free, with no account and nothing uploaded.

The four steps: 1 · Generate → 2 · Audit the matrix → 3 · Repair (inside both) → 4 · Export only what passes. Each step hands its state to the next; a pairing can never pass on one page and fail on another, because every page runs the same measurement.

  1. Generate by construction

    Your colour becomes primary and neutral scales in OKLCH, with roles — background, text, action, border, focus — solved against the colours they will sit on, in light and dark themes at once.

  2. Audit by use

    The matrix grades every pairing for its actual job: body text at 4.5:1, large text and components at 3:1, focus rings against the surface they cross — not one ratio for everything.

  3. Repair, hue held

    A failing colour moves in lightness only until the re-measured ratio clears its threshold. The hue — your brand — does not move, and the whole palette re-grades after every fix.

  4. Export only passes

    CSS variables, Tailwind v3 and v4, and design-token JSON whose semantic layer points only at passing pairings. Failures are excluded and named in the file, never shipped silently.

The workflow

Accessible Palette Generator

The flagship: one colour in, two graded themes out, repair and export on the same screen.

Palette Contrast Matrix

Paste any palette and see every pairing graded by use — including the trap pair that displays 4.50 and still fails.

Contrast Checker (one pair)

The classic two-colour check, sharing the same measurement — and routing you into the whole palette.

Dark-Mode Palette Check

The dark theme graded against both its grounds — background and surface — where dark modes quietly break.

Non-Text Contrast (1.4.11)

Borders, focus rings and icons: 3:1 against the adjacent colour you specify — never an assumed white.

Export doors

Palette to CSS Variables & Tokens

CSS custom properties and design-token JSON, with the verified semantic layer separated from the raw scales.

Palette to Tailwind v3 & v4

The same verified values as a Tailwind v3 theme object or a v4 @theme block — value-identical across formats.

Contrast Audit Sheet (EAA evidence)

A printable audit sheet: palette, graded pairings, thresholds, date — and a plain statement of what the sheet is not.

Why another contrast tool?

Because the pieces exist separately everywhere and joined almost nowhere. Generators produce colours first and check them afterwards — if at all. Checkers grade one pair at a time and leave you to guess which colour to change. Exports happily ship the failing pairings alongside the passing ones. And the number behind it all is routinely rounded in your favour: a ratio of 4.496167 displays as "4.50" in most tools and quietly passes, although the standard is explicit that 4.5 means 4.5. PairPass is built around the opposite habits, and its methodology page publishes the formula and the hand-computed test record so you can check the arithmetic yourself.

The problem is not rare: the WebAIM Million 2026 audit found low-contrast text on 83.9% of the top million home pages — the most common detected accessibility failure, again (WebAIM, webaim.org/projects/million, February 2026 data, checked November 2026).

Guides

WCAG Contrast Ratios Explained: 4.5, 3 and 7

Plain-language, with the same numbers the tools produce — the worked examples in the guides are the test vectors the measurement is verified against.

The Accessibility Act & Contrast: What It Requires

Plain-language, with the same numbers the tools produce — the worked examples in the guides are the test vectors the measurement is verified against.

Focus Indicators & Borders: The 3:1 Rule

Plain-language, with the same numbers the tools produce — the worked examples in the guides are the test vectors the measurement is verified against.

Dark-Mode Colours That Still Pass

Plain-language, with the same numbers the tools produce — the worked examples in the guides are the test vectors the measurement is verified against.

APCA vs WCAG Contrast

Plain-language, with the same numbers the tools produce — the worked examples in the guides are the test vectors the measurement is verified against.

Fix Failing Contrast Without Changing Hue

Plain-language, with the same numbers the tools produce — the worked examples in the guides are the test vectors the measurement is verified against.