Free colour palette generator

Find colours that work together. Build a palette. Make it your own.

Need a custom colour system?

We turn colour palettes into consistent systems for web and mobile apps.

You’ll send your enquiry from the project brief on the next page.

Choose one to three core colors. The tool adds light and dark surfaces, generates 50–900 shade ramps, and exports the values for implementation. It does not verify contrast or assign a complete set of semantic UI roles; test the final pairings with the color contrast checker.

Built and maintained by Maaz. Updated .

Loading Color Palette Generator...

Color harmony rules

The hue rotations used by the generator's rule-based modes

Complementary

Keeps the base hue and adds a second hue 180° around the HSL color wheel. This creates hue separation, but it does not guarantee readable foreground/background contrast.

0° and 180°

Analogous

Uses hues beside the base color. This generator places them 30° above and below the starting hue when three colors are selected.

Base hue, +30°, −30°

Triadic

Places three hues at equal 120° intervals. The relationship controls hue spacing; saturation, lightness, role, and contrast still need review.

Base hue, +120°, +240°

Monochromatic

Starts from one core hue. The tool then derives light and dark surfaces plus a 50–900 shade ramp from that base color.

One core color and its derived values

Split-complementary

Pairs the base hue with two hues on either side of its complement, at 150° and 210° from the starting point.

Base hue, +150°, +210°

Turn a palette into interface colors

Checks to make before generated swatches become product tokens

Assign roles before names

Decide which values are backgrounds, surfaces, text, borders, actions, focus indicators, and status colors. “Primary” alone does not define safe usage.

Test every foreground/background pair

The generator does not check WCAG thresholds. Measure text, icon, border, and focus-indicator pairs with the Color Contrast Checker.

Define interaction states

Add explicit default, hover, focus, selected, pressed, and disabled values. A 50–900 ramp is not a finished state model.

Review both themes

A dark theme is not a simple inversion. Check the actual role assignments, contrast, elevation, and emphasis in both contexts.

Add a non-color cue

Hue cannot be the sole signal for an error, selection, status, or action. Pair color with text, shape, pattern, or another visible change.

Check the export against the UI

Use the generated code as a starting set of values. Confirm token names, shade order, component mappings, and rendered colors before release.

How to choose colors

A role-first path from a seed color to implementation

1

Choose a real seed

Start from an approved brand color, a value chosen with the manual controls, or colors extracted from a representative image. Record the source.

2

Choose the number of core colors

Use one, two, or three core colors based on the roles the product needs. More roles can be added later without forcing more saturated brand colors into the base palette.

3

Generate or adjust the hue relationship

Try a complementary, analogous, triadic, split-complementary, or single-hue starting point. Treat the result as an option to review, not an automatic design decision.

4

Map values to semantic roles

Assign backgrounds, surfaces, text, borders, actions, focus, and status roles. Keep role names stable even when light and dark themes use different values.

5

Test pairings and states

Measure contrast for the exact foreground and adjacent background in default, hover, focus, selected, pressed, error, and disabled states.

6

Export, integrate, and recheck

Move the values into CSS, Tailwind, or JSON, connect them to real components, and verify the rendered interface rather than the swatches alone.

Colour system references

How current platform and design-system guidance handles roles, themes, and contrast

Carbon Design System

Carbon separates role-based token names from the color values assigned by each theme, including dedicated interaction-state tokens.

Learn More

Apple Human Interface Guidelines

Apple recommends testing custom colors in light, dark, increased-contrast, varied-lighting, and device contexts instead of assuming one value works everywhere.

Learn More

WCAG 2.2 contrast minimum

WCAG sets pair-specific contrast thresholds for text and images of text. A generated swatch does not pass or fail until it is used against another color.

Learn More

WCAG 2.2 use of color

When color communicates meaning, WCAG requires another visual way to convey the same information. Contrast alone does not satisfy this criterion.

Learn More

Common mistakes to avoid

Where a generated set of swatches still needs design work

Treating swatch names as semantic roles

Primary, secondary, and tertiary describe the generated set, not every job in an interface. Map values to explicit text, surface, border, action, focus, and status roles.

Assuming generated means accessible

Hue relationships and shade ramps do not enforce WCAG. Test each foreground/background pair and give status or selection another visible cue beyond color.

Using one value across every theme

The same accent can work on one theme and fail on another. Assign and test a value for each theme instead of relying on inversion.

Shipping the export without integration review

Generated CSS, Tailwind, and JSON are starting structures. Check names, shade order, state mappings, contrast, and the rendered components before release.

Frequently asked questions

Need the palette to work as a system?

A usable color system has to survive real screens, states, and accessibility constraints. Share the product and where the current palette falls short.

Discuss the color system