Why random RGB never works
Three independent random bytes give you 16.7 million equally likely colours, and almost all of them clash. This generator instead picks one random hue and derives the rest from it with fixed offsets on the hue wheel, plus a planned ramp of lightness from about 30% to 80%. That lightness spread is what makes a palette usable: you get a dark colour for text, a mid colour for buttons and a pale one for backgrounds.
Every palette is built in your browser and nothing you generate is uploaded, so refreshing the page starts from scratch.
If you want a different flavour of the same thing, try the colour picker.
The four harmonies
Analogous uses neighbours within ±30° — calm and cohesive, good for content sites. Triadic spaces three hues 120° apart for a lively, balanced scheme. Complementary pairs a hue with its opposite for maximum accent contrast, which you can explore further with the complementary colour finder. Monochrome keeps one hue and varies only lightness, which is the safest starting point for a UI.
The colour contrast checker covers the same ground with a different mechanism.
From palette to product
Pick the palette you like, copy the hex codes, then expand the one you will use most into a full ramp with the tint and shade generator. Always confirm your text-on-background pairs pass WCAG before shipping — a pretty palette that fails contrast is a rework waiting to happen.
Frequently asked questions
- How are the palettes generated?
- A random base hue is chosen, then four more colours are derived with fixed hue offsets and a planned lightness ramp in HSL.
- Can I copy a colour?
- Yes. Click any swatch and its hex code is copied to your clipboard.
- Which harmony should I pick?
- Analogous or monochrome for calm interfaces, triadic or complementary when you need a strong accent.
- Are the palettes accessible?
- Not automatically. Check any text and background pair in the contrast checker before using it.
- Will the same palette come back if I reload?
- No — the base hue is drawn fresh in your browser on every press, so palettes are not saved, numbered or shared. Copy the hex codes you like before generating again, because there is no history to go back to.