Design-system color tool

Token Tint

Pick three equal brand colors — primary, secondary, and tertiary — and Token Tint generates two complete, accessible color systems: coordinated light-mode and dark-mode palettes with full scales for all three hues, brand-tinted neutrals, text, borders, interactive states, semantic colors, shadows, glows, and gradients — all ready to copy as CSS custom properties.

Generated palettes

Click any swatch — or focus it and press Enter or Space — to copy its value in the selected format.

Contrast checks

Each row measures one text (foreground) color against the one surface (background) it sits on — the sample chip shows exactly that combination. Text colors are automatically nudged darker or lighter until they meet their target ratio. "Large" thresholds apply to text at 1.5rem+ (or bold 1.17rem+): AA is 4.5:1 normal / 3:1 large, AAA is 7:1 normal / 4.5:1 large.

Theme Text (foreground) On background Sample Ratio AA normal AA large AAA normal AAA large

Components preview

Every example below is styled entirely with the generated custom properties — change the brand color or theme and watch it update.

Navigation

New · Palette engine 2.0

Ship a coherent color system in minutes, not weeks

One brand color in, two production-ready themes out. Accessible text, tinted neutrals, semantic states, and dark-mode surfaces that are designed — not inverted.

Buttons

Hover for hover states; press Tab to see the visible focus ring.

Cards

Elevated card

Sits on the elevated surface token with the medium shadow. Ideal for primary content.

Learn more →

Flat card

Uses the card background with a subtle border and no shadow — quieter hierarchy.

Learn more →

Brand-tinted card

Selected-state surface with the brand border, for callouts and highlighted plans.

Learn more →

Form elements

Contact an admin to change this.

That card number looks incomplete.

✓ Coupon applied — 20% off.

Alerts

Palette saved Your light and dark themes were exported to the design library.
Low contrast detected One muted pairing sits below AAA — it still passes AA for normal text.
Tip Semantic hues are nudged toward your brand hue so states feel native to the system.

Dashboard

Active palettes

128

▲ 12% this week

Tokens exported

4,096

Brand plan

Contrast issues

0

All checks passing
Monthly export quota68%

Recent exports

PaletteStatusTokens
Marketing siteShipped184
Mobile appIn review142
Docs themeQueued96
Legacy adminFailed

Exports per day

Activity

  • Jordan exported Marketing site to CSS variables.
  • Sam adjusted the warning hue on Mobile app.
  • Priya passed all AA checks on Docs theme.

Marketing

Scales, not guesses

Eleven perceptually even brand steps generated in OKLCH, anchored to your exact color.

Real dark mode

Dark surfaces are designed for depth and elevation — never a naive inversion of light mode.

Accessibility built in

Every text token is contrast-checked and auto-adjusted to meet WCAG AA before you see it.

“We replaced a 300-line hand-maintained theme file with one brand color and Token Tint. Dark mode shipped the same afternoon.”
Mina KwonDesign engineering lead, Fieldnote
Most popular

$24 / editor / month

  • Unlimited palettes and exports
  • CSS, JSON, and token pipelines
  • Contrast reports on every save
  • Priority support

Your brand, both themes, zero spreadsheets

Generate, audit, and export a complete color system before your coffee cools.

How the palette is generated

The values on the right update live as you change the brand color.

The brand scales

Each brand color — primary, secondary, and tertiary, all treated as equals — is converted to OKLCH, a perceptual color space where equal numeric steps look like equal visual steps. Eleven lightness targets from near-white (50) to near-black (950) are paired with a chroma curve that peaks in the middle of the scale, and each exact color is snapped into the step whose lightness it matches best, so it always sits naturally in its own scale.

Light-mode colors

Light surfaces are built from a tinted neutral ramp at very high lightness (roughly 93–99% in OKLCH). Page, card, elevated, input, hover, and active backgrounds each step down slightly in lightness so interactive states are perceptible without feeling heavy.

Dark-mode colors

Dark mode is generated separately, not flipped. Surfaces live in a low-lightness band (roughly 16–30%), elevation gets lighter as it rises (the opposite of light mode's shadow logic), chroma is reduced so backgrounds don't glow, and primary text is softened off pure white to limit halation.

Tinted neutrals

Every "gray" keeps your brand hue at a whisper of chroma (≈0.004–0.014). It's below the threshold where you'd call the surface colored, but enough that neutrals feel like family rather than generic gray swapped in from another product.

Accessible text

Each text token starts at a designed lightness, then its WCAG 2.1 contrast ratio against its background is measured. If it misses its target — 7:1 for primary text, 4.5:1 for secondary and links, 3:1 for large/subtle text — its lightness is nudged step by step until it passes.

Semantic colors

Success, warning, error, and info start from fixed, universally recognizable hues, then each hue is pulled a few degrees toward your brand hue and its chroma is scaled to match your color's intensity. States stay instantly readable while feeling native to the system.

The secondary and tertiary colors

The secondary and tertiary hues each get their own eleven-step OKLCH scale, anchored to your exact colors the same way the primary scale is. They power the mixed and trio gradients, their own glows and shadows, and highlight moments like the chart's tertiary bars and secondary peak — a three-hue system that stays coordinated because all scales share the same lightness ladder. The Suggest buttons derive companions by rotating the primary's OKLCH hue — 150° for the secondary, 210° for the tertiary — while keeping its lightness and guaranteeing lively chroma, so the trio contrasts in hue but matches in visual weight.

Shareable palettes

All three colors are encoded in the page URL (for example #1a3a63+168294+cfe6fa) whenever they change. Copy the share link and anyone who opens it sees the exact same generated system — no account, no export needed.

Contrast math

Ratios use the WCAG 2.1 formula: each color's relative luminance is computed from linearized sRGB channels, and the ratio is (L₁ + 0.05) / (L₂ + 0.05), from 1:1 up to 21:1 for black on white.

Why dark mode isn't an inversion

Inverting a light theme puts the most saturated, brightest colors on the darkest surfaces, reverses elevation logic, and produces glaring pure-white text. Designing the dark ramp independently — muted surfaces, lighter-when-higher elevation, desaturated brand tones, softened text — is what makes it feel intentional.

Read the full documentation →

Current color

Hue
Saturation
Lightness
OKLCH
Relative luminance
Contrast vs white
Contrast vs black
Recommended text
Scale anchor

CSS variables

The complete generated system as custom properties — the same style block that powers this page.