Skip to content
ChromaBrew

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%

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

Overview

MRR

$48,210

+12.4% sample

Active customers

1,284

+3.1% sample

Churned

17

-0.8% sample

Recent invoices

CustomerAmountStatus
Harbor & Co$1,240.00Paid
Northwind Labs$860.00Pending
Bluepeak GmbH$2,410.00Paid
Summit Studio$310.00Overdue
Ridgeway LLC$980.00Draft
Notifications

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.71:1PASSPASS passesPASSPASS passesFAILFAIL failsPASSPASS passes
Accent elementlight10.23:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS 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 buttondark10.43:1PASSPASS passesPASSPASS passesPASSPASS passesPASSPASS passes
Accent elementdark4.76: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 47 · 5.90:1Distinguishablediff 45 · 5.39:1Distinguishablediff 45 · 5.73:1Distinguishable
Accent elementlightdiff 77 · 12.25:1Distinguishablediff 74 · 10.87:1Distinguishablediff 74 · 10.07: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 73 · 10.45:1Distinguishablediff 74 · 11.23:1Distinguishablediff 76 · 10.35:1Distinguishable
Accent elementdarkdiff 44 · 4.16:1Distinguishablediff 46 · 4.71:1Distinguishablediff 49 · 4.86: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

AI Palette Suggestion

Describe your brand and get 5 smart palette options

Export

Web

Mobile / Desktop

Design Tools

Plain CSS custom properties with a .dark override block.

/*
  Design system #47003A design tokens
  Source: #47003a
  Generated by ChromaBrew — free design system generator
*/
:root {
  --background: #fffcfe;
  --background-subtle: #faf1f7;
  --foreground: #1b0e17;
  --foreground-muted: #584a53;
  --foreground-subtle: #7e727a;
  --surface: #fffdfe;
  --surface-raised: #ffffff;
  --surface-muted: #fcf3f9;
  --primary: #47003a;
  --primary-hover: #38002d;
  --primary-active: #290021;
  --primary-foreground: #ffffff;
  --secondary: #6e9b81;
  --secondary-hover: #5d896f;
  --secondary-foreground: #1d141a;
  --accent: #6b265b;
  --accent-foreground: #ffffff;
  --border: #e4dbe1;
  --border-muted: #ebe4e8;
  --border-strong: #cabfc6;
  --input: #ffffff;
  --input-border: #e4dbe1;
  --focus-ring: #47003a;
  --success: #2b9338;
  --success-foreground: #1d141a;
  --warning: #ebb213;
  --warning-foreground: #1d141a;
  --danger: #c94c49;
  --danger-foreground: #ffffff;
  --info: #007cc2;
  --info-foreground: #ffffff;
}

.dark {
  --background: #0e090c;
  --background-subtle: #150f13;
  --foreground: #f3e9f0;
  --foreground-muted: #aaa2a7;
  --foreground-subtle: #797377;
  --surface: #191317;
  --surface-raised: #201a1e;
  --surface-muted: #130e11;
  --primary: #b0639b;
  --primary-hover: #c072ab;
  --primary-active: #a65a92;
  --primary-foreground: #130c11;
  --secondary: #103c26;
  --secondary-hover: #214c35;
  --secondary-foreground: #e1efe6;
  --accent: #b0659b;
  --accent-foreground: #130c11;
  --border: #322c30;
  --border-muted: #282326;
  --border-strong: #4a4348;
  --input: #191317;
  --input-border: #322c30;
  --focus-ring: #b0639b;
  --success: #6bc670;
  --success-foreground: #130c11;
  --warning: #f0bb3b;
  --warning-foreground: #130c11;
  --danger: #ff847d;
  --danger-foreground: #130c11;
  --info: #59b6ff;
  --info-foreground: #130c11;
}

:root {
  --font-heading: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --font-sans: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;

  --font-size-xs: 0.64rem;
  --font-size-xs-line-height: 1.45;
  --font-size-xs-letter-spacing: 0em;
  --font-size-sm: 0.8rem;
  --font-size-sm-line-height: 1.45;
  --font-size-sm-letter-spacing: 0em;
  --font-size-base: 1rem;
  --font-size-base-line-height: 1.5;
  --font-size-base-letter-spacing: 0em;
  --font-size-lg: 1.25rem;
  --font-size-lg-line-height: 1.4;
  --font-size-lg-letter-spacing: 0em;
  --font-size-xl: 1.563rem;
  --font-size-xl-line-height: 1.3;
  --font-size-xl-letter-spacing: -0.01em;
  --font-size-2xl: 1.953rem;
  --font-size-2xl-line-height: 1.15;
  --font-size-2xl-letter-spacing: -0.02em;
  --font-size-3xl: 2.441rem;
  --font-size-3xl-line-height: 1.15;
  --font-size-3xl-letter-spacing: -0.02em;
  --font-size-4xl: 3.052rem;
  --font-size-4xl-line-height: 1.15;
  --font-size-4xl-letter-spacing: -0.02em;
  --font-size-5xl: 3.815rem;
  --font-size-5xl-line-height: 1.15;
  --font-size-5xl-letter-spacing: -0.02em;

  --space-2: 0.125rem;
  --space-4: 0.25rem;
  --space-6: 0.375rem;
  --space-8: 0.5rem;
  --space-10: 0.625rem;
  --space-12: 0.75rem;
  --space-16: 1rem;
  --space-20: 1.25rem;
  --space-24: 1.5rem;
  --space-32: 2rem;
  --space-40: 2.5rem;
  --space-48: 3rem;
  --space-64: 4rem;
  --space-80: 5rem;
  --space-96: 6rem;

  --radius-sm: 0.25rem;
  --radius-md: 0.5rem;
  --radius-lg: 0.75rem;
  --radius-xl: 1rem;
  --radius-full: 9999px;

  --shadow-sm: 0 1px 2px 0 rgb(0 0 / 0.05);
  --shadow-md: 0 2px 4px -1px rgb(0 0 / 0.06), 0 4px 10px -2px rgb(0 0 / 0.07);
  --shadow-lg: 0 4px 8px -2px rgb(0 0 / 0.08), 0 12px 24px -6px rgb(0 0 / 0.1);
  --shadow-xl: 0 8px 16px -4px rgb(0 0 / 0.1), 0 24px 48px -12px rgb(0 0 / 0.14);
}

From one color to a working design system

ChromaBrew builds every color decision your interface needs from a single seed color: a perceptual tonal scale, a harmony palette, semantic tokens, and matched light and dark themes. Everything runs in your browser — nothing is uploaded — and there is no account required.

  1. 1. Seed your colors

    Start from one primary color and optionally add secondary and accent colors. Randomize, paste a HEX, or start from a real brand color.

  2. 2. Refine the system

    Adjust the scale, palette strategy and size, radius, type ratio, and dark-theme background. Live previews update as you go, and the accessibility report grades every pair.

  3. 3. Export and ship

    Copy tokens straight into your codebase in the format your stack expects, or share the URL so teammates open the same system.

What you get

Export where you work

Copy CSS variables or JSON for any codebase; generate Tailwind CSS, Bootstrap, shadcn/ui, MUI, Ant Design or Chakra themes; take tokens to React Native, Flutter, iOS and Android; or push variables straight into Figma, Penpot and W3C-compatible token files. One ZIP contains every format for your team.

Related free tools

Prefer a single-purpose tool? Browse the full list of free color tools, start from a real brand color, or read how to build a design system from one color step by step.

FAQ

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; Figma variables, W3C design tokens, Penpot, or a ZIP with every format.