Skip to content
ChromaBrew
Go Pro

Design system generator #47003A

Colours

Colour scale

Generated in OKLCH with your brand hue preserved; the source colour is pinned at its natural position.

Palette

6 colours
Primary#47003a
Complement#002f1a
Primary 2#621d52
Complement 2#004a2b
Primary 3#2d0024
Complement 3#001c0d

Lock swatches to keep them while regenerating, or type a HEX value to override one manually.

Refinement

0%
0%
0%
0°
0%

Locked colours won't be affected by refinement.

Layout primitives

Radius style

Type scale

Fonts

The quick brown fox — 48pt heading sample

Dark background

Typography tokens
StepSize / LHCopy
xs0.64rem / 1.45
sm0.8rem / 1.45
base1rem / 1.5
lg1.25rem / 1.4
xl1.563rem / 1.3
2xl1.953rem / 1.15
3xl2.441rem / 1.15
4xl3.052rem / 1.15
5xl3.815rem / 1.15

Spacing (4px base)

24681012162024324048648096

Radii

Elevation

smmdlgxl

Exports include these as CSS variables (--font-size-*, --space-*, --radius-*, --shadow-*) and native Tailwind v4 theme namespaces.

Placeholder content — your tokens, real interfaces

Acme CloudSupportAM
#2481Open

Refund for invoice #1042

Jamie Rivera · via email · 2h ago

Mark as pendingExport transcriptDelete conversation

Jamie Rivera

2h ago

Hi — Stripe shows two charges for March (invoice #1042), $1,240 each. Could you refund the duplicate? Our finance close is Friday.

AM

You · support

1h ago

Found it — the retry after a timeout double-charged you. Refund issued to the card ending 4242; banks take 3–5 days. I've added a note to the invoice.

Accessibility — WCAG 2.x

Light: all AA pairs pass · Dark: all AA pairs pass

Contrast ratios for key colour pairs with WCAG pass/fail results
PairPreviewRatioAA normalAA largeAAA normalAAA largeFix
Body text on page backgroundlight18.37:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Muted text on page backgroundlight8.18:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Body text on cardslight18.48:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Primary buttonlight15.80:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Secondary buttonlight5.31:1PASSPASS passesPASSPASS passesFAILFAIL failsPASSPASS passes
Accent elementlight5.42:1PASSPASS passesPASSPASS passesFAILFAIL failsPASSPASS passes
Success badgelight4.57:1PASSPASS passesPASSPASS passesFAILFAIL failsPASSPASS passes
Warning badgelight9.35:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Danger badgelight4.55:1PASSPASS passesPASSPASS passesFAILFAIL failsPASSPASS passes
Info badgelight4.50:1PASSPASS passesPASSPASS passesFAILFAIL failsPASSPASS passes
Body text on page backgrounddark16.67:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Muted text on page backgrounddark7.93:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Body text on cardsdark15.46:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Primary buttondark4.69:1PASSPASS passesPASSPASS passesFAILFAIL failsPASSPASS passes
Secondary buttondark5.48:1PASSPASS passesPASSPASS passesFAILFAIL failsPASSPASS passes
Accent elementdark5.16:1PASSPASS passesPASSPASS passesFAILFAIL failsPASSPASS passes
Success badgedark9.13:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Warning badgedark10.91:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Danger badgedark8.13:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Info badgedark8.78:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes

Thresholds: AA normal ≥ 4.5:1, AA large ≥ 3:1, AAA normal ≥ 7:1, AAA large ≥ 4.5:1. Fixes adjust the nearest accessible value in OKLCH, preserving hue.

Colour-blind preview

Simulated difference for each pair — under ~30 they are hard to tell apart.

Each foreground/background pair simulated for protanopia, deuteranopia and tritanopia
PairProtanopiaDeuteranopiaTritanopia
Body text on page backgroundlightdiff 92 · 18.66:1Distinguishablediff 92 · 18.40:1Distinguishablediff 92 · 18.34:1Distinguishable
Muted text on page backgroundlightdiff 69 · 8.42:1Distinguishablediff 68 · 8.16:1Distinguishablediff 68 · 8.17:1Distinguishable
Body text on cardslightdiff 93 · 18.69:1Distinguishablediff 92 · 18.55:1Distinguishablediff 92 · 18.45:1Distinguishable
Primary buttonlightdiff 91 · 18.58:1Distinguishablediff 89 · 17.58:1Distinguishablediff 88 · 15.51:1Distinguishable
Secondary buttonlightdiff 42 · 5.38:1Distinguishablediff 41 · 5.20:1Distinguishablediff 42 · 5.06:1Distinguishable
Accent elementlightdiff 58 · 5.50:1Distinguishablediff 64 · 7.35:1Distinguishablediff 72 · 4.90:1Distinguishable
Success badgelightdiff 38 · 4.60:1Distinguishablediff 33 · 3.77:1Distinguishablediff 35 · 4.46:1Distinguishable
Warning badgelightdiff 56 · 8.36:1Distinguishablediff 61 · 9.87:1Distinguishablediff 64 · 8.52:1Distinguishable
Danger badgelightdiff 66 · 6.88:1Distinguishablediff 61 · 4.99:1Distinguishablediff 59 · 3.93:1Distinguishable
Info badgelightdiff 50 · 4.37:1Distinguishablediff 59 · 5.93:1Distinguishablediff 68 · 3.89:1Distinguishable
Body text on page backgrounddarkdiff 89 · 16.60:1Distinguishablediff 89 · 16.69:1Distinguishablediff 89 · 16.64:1Distinguishable
Muted text on page backgrounddarkdiff 60 · 7.86:1Distinguishablediff 60 · 7.92:1Distinguishablediff 61 · 7.93:1Distinguishable
Body text on cardsdarkdiff 85 · 15.44:1Distinguishablediff 85 · 15.48:1Distinguishablediff 85 · 15.43:1Distinguishable
Primary buttondarkdiff 44 · 4.06:1Distinguishablediff 46 · 4.61:1Distinguishablediff 49 · 4.78:1Distinguishable
Secondary buttondarkdiff 44 · 5.55:1Distinguishablediff 43 · 5.39:1Distinguishablediff 44 · 5.21:1Distinguishable
Accent elementdarkdiff 46 · 5.06:1Distinguishablediff 40 · 3.62:1Distinguishablediff 45 · 5.79:1Distinguishable
Success badgedarkdiff 61 · 9.41:1Distinguishablediff 57 · 8.17:1Distinguishablediff 57 · 8.87:1Distinguishable
Warning badgedarkdiff 61 · 9.85:1Distinguishablediff 66 · 11.52:1Distinguishablediff 70 · 10.09:1Distinguishable
Danger badgedarkdiff 50 · 6.17:1Distinguishablediff 57 · 7.96:1Distinguishablediff 64 · 7.63:1Distinguishable
Info badgedarkdiff 73 · 9.48:1Distinguishablediff 68 · 7.68:1Distinguishablediff 61 · 9.44:1Distinguishable

Simulations use the Machado, Oliveira & Fernandes (2009) matrices. A passing WCAG ratio does not guarantee the pair stays distinguishable under a colour vision deficiency — these checks surface pairs that collapse even though the numbers look fine.

Semantic tokens

Page tokens
TokenLightDark
--background
--background-subtle
--foreground
--foreground-muted
--foreground-subtle
Surfaces tokens
TokenLightDark
--surface
--surface-raised
--surface-muted
Primary & secondary tokens
TokenLightDark
--primary
--primary-hover
--primary-active
--primary-foreground
--secondary
--secondary-hover
--secondary-foreground
Accent tokens
TokenLightDark
--accent
--accent-foreground
Borders & inputs tokens
TokenLightDark
--border
--border-muted
--border-strong
--input
--input-border
--focus-ring
Status tokens
TokenLightDark
--success
--success-foreground
--warning
--warning-foreground
--danger
--danger-foreground
--info
--info-foreground

Free generator · No sign-up · Runs in your browser

From one color to a working design system

A perceptual tonal scale, a harmony palette, semantic tokens, and matched light and dark themes — everything runs in your browser, nothing is uploaded.

FAQ

Questions, answered

Is the design system generator free?
Yes — completely. The full generator, every color control, WCAG accessibility checks and all core exports are free with no account required. An account is optional and only used if you want to save and revisit your projects.
What does ChromaBrew generate from a single color?
One primary color produces an eleven-step tonal scale (50-950), a harmony palette, semantic tokens, and matched light and dark themes — plus radius, typography scale and dark-background controls you can tune live.
How does the share link work?
The Share link button encodes your entire configuration in the URL. Anyone who opens the link sees the exact same design system — no account, no upload, no server storage involved.
Are the contrast checks accurate?
Every foreground/background pair is graded against WCAG contrast requirements in both light and dark themes. Where a pair fails, the Fix contrast control applies a compliant adjustment instantly.
Which export formats are supported?
Export as plain CSS variables, JSON, Tailwind CSS, Bootstrap, shadcn/ui, MUI, Ant Design or Chakra themes; React Native, Flutter, iOS (Swift) and Android tokens; free Figma Tokens Studio JSON plus a free Figma plugin that creates native Figma variables with Light & Dark modes; W3C design tokens, Penpot, or a ZIP with every format. See the Figma install and paste guide on the Figma page.