Roles, not swatches
Every color gets a job description. Background. Ink. Accent. Support. Neutral.
Five colors. Five jobs.
Background
Primary surface. The canvas everything sits on. Highest lightness value in your palette.
Text
Headings, body text, icons, borders. Maximum readability. Lowest lightness value. Must pass 4.5:1 on background.
Accent
CTAs, highlights, focus rings. The signal color. Highest chroma in the set.
Support
Secondary surfaces, subheads, dividers. Maximally distinct from background and ink.
Neutral
Panels, disabled states, subtle chips. Fills the gap between background and support.
Intent over hex codes
Roles encode intent. "Use the accent" is clearer than "use #FC6911". Every team member knows what you mean without checking a spec.
Roles survive palette changes. Swap colors, keep roles, your UI still works. Rebrand in minutes, not days.
AI tools understand roles. Feed your palette to Claude, Cursor, or Copilot and they know which color goes where. No ambiguity. No defaulting to Tailwind blue.
Tokens map directly. One palette generates CSS variables, Tailwind classes, and JSON tokens that all use the same semantic names. No translation layer.
Color science, not guesswork
Background gets the highest lightness value in LAB color space. The lightest color becomes your canvas.
Ink gets the lowest lightness value. Dark on light. Maximum contrast for text readability.
Accent gets the highest chroma. The most saturated color in your palette becomes the signal. The one that draws the eye.
Support and Neutral are assigned by Delta-E distance. Each must be maximally distinct from background, ink, and accent. No muddy overlap.
Final check: ink-on-background contrast must pass 4.5:1 WCAG AA. If it doesn't, ink is automatically darkened until it does. You get accessible palettes without trying.
One palette. Semantic everywhere.
Roles map to every export format Paletter supports. Same names, same intent, different syntax.
CSS Custom Properties
--color-bg, --color-text, --color-primary
Tailwind Classes
bg-background, text-ink, ring-accent
Design Tokens JSON
{ "color": { "bg": { "value": "#F5F0E8" } } }
Export once. Use in your CSS, your Tailwind config, your Figma tokens, your design system docs. Roles are the bridge between your palette and your codebase.
Generate a palette with roles
Five colors. Five jobs. Ready to ship.
Start generating