⚡ TL;DR
Two anchors, one accent, a small set of semantic colours. The art-school waffle removed.
The shape of a good palette
Two anchors. One accent. Four to six semantic colours. That is the entire shape. The anchors are the colours the user sees most of the time — usually a background neutral and a brand colour. The accent is the colour the user sees when something matters — a button, a callout, a current selection. The semantic colours are for state: success (green), warning (yellow/amber), error (red), info (blue). A palette of more than 10 colours is almost always the result of "let me add one more just in case" — and the case never comes.
Choosing the anchors
Pick the brand colour first. It should be the colour the user associates with the product, which is usually the colour of the logo and the primary CTA. Then pick the neutral. A neutral is a desaturated colour, usually a grey or off-white, that the body text and most of the surface area sits on. The two together should have a contrast ratio of at least 4.5:1 (WCAG AA for body text) — the contrast checker on this site will tell you in one click.
Choosing the accent
The accent should be complementary to the brand colour — opposite on the colour wheel — so it stands out. If the brand is blue, the accent is orange. If the brand is red, the accent is teal. The accent should be used sparingly: one button per screen, one highlight per paragraph. If the accent appears more than 5% of the time on a page, it is no longer an accent; it is a second brand colour.
Semantic colours
Green for success, amber for warning, red for error, blue for info. Pick the values once, document them, and use them everywhere. The palette on this site is: success `#39ff14` (a high-saturation green that is visible on dark backgrounds), warning `#ffd700` (gold), error `#ff4d4d` (a soft red, not a blood red), info `#2dd4ff` (cyan, the brand). Each is a single hex value used in a single role.
Contrast and accessibility
WCAG AA requires a contrast ratio of at least 4.5:1 for body text and 3:1 for large text (18 pt and above). WCAG AAA is 7:1 for body and 4.5:1 for large. Anything below 4.5:1 is unreadable for low-vision users. The contrast checker on this site accepts two hex values and reports the ratio with a pass/fail against each WCAG level. Use it on every colour pair you ship.
What this site gives you
A colour palette extractor that pulls the dominant colours from any image. A WCAG contrast checker that tells you whether your foreground/background pair is readable. A 4-bit and 8-bit colour picker for the retro aesthetic, because sometimes you want a Geocities page on purpose.
🛠️ What this site gives you for Writing & Language
Free, browser-side tools related to this topic. No sign-ups, no display ads.
❓ Frequently asked questions
What is WCAG contrast?
A measure of the difference in luminance between two colours, expressed as a ratio. 4.5:1 is the minimum for AA body text, 7:1 for AAA. Higher is more readable. The contrast checker on this site reports the ratio for any pair of hex values.
How many colours should a palette have?
As few as you can. A practical palette is 5–8 colours: two anchors (primary + neutral), one accent, and 4–5 semantic colours. A palette of more than 10 colours is almost always a sign of "let me add one more just in case".
What is a complementary colour?
A colour directly opposite on the colour wheel. The complement of blue is orange; of red is teal; of yellow is purple. Complementary pairs create the strongest visual contrast and are how you pick an accent that stands out from a primary.
Should I use a colour palette generator?
Yes, but as a starting point, not a final answer. The generators on this site are useful for the first sketch; you will still want to verify the contrast between the generated colours with the WCAG checker before you ship.
Open the catalogue
🔲 Browse all 1165 tools 📚 Full index 🎯 By use case ⭐ Most popular 🆕 Just added 🔌 Embed any tool ☕ Donate