← All Lab tools

Design Lab · 01

PaletteAI Color palette generator from any image

Drop in a screenshot, a photo or a moodboard and get its main colours back, ranked by how much of the image they cover. Or describe a mood and get a palette you could actually build a UI with. Every colour tells you whether text on it is readable.

Runs in your browserFree, no sign-upk-means clusteringWCAG contrast built in
Try it here

Make a palette

Drop an image, or switch to "From a mood" and type a few words. Click any colour to copy its hex.

Click a colour to copy its hex.

How it works

Three steps, no account.

Bring a source

Drop an image, choose a file, or switch to "From a mood" and type a few words like "warm earthy café".

Tune it

Pick how many colours to pull from an image, or a harmony (analogous, complementary, triadic, monochrome) for a mood.

Take it with you

Click any swatch to copy its hex, or copy the whole set as CSS custom properties ready for a stylesheet.

Where it helps

What I actually use it for.

Match an existing brand

Pull the real colours out of a client's photos or old screenshots before you start redesigning.

Check a button colour early

See straight away whether a colour can carry white or black text at WCAG AA, before it ends up on a CTA.

Start a moodboard from words

Turn a brief like "calm ocean fintech" into a starting palette with a surface and an ink colour included.

Under the hood

Simple techniques, picked on purpose.

Everything runs in this browser tab. No AI service is called and nothing you type or upload leaves the page, so it answers instantly and keeps working offline.

Image mode

The image is scaled down to about 100 pixels on its longest side, transparent pixels are skipped, and the rest are grouped with k-means clustering (seeded with k-means++ so results are stable). Each cluster's average becomes a swatch, sorted by its share of the image.

Contrast uses the WCAG 2 relative-luminance formula; 4.5 : 1 or more passes AA for body text.

Mood mode

About fifty mood and industry words ("calm", "luxury", "fintech", "kerala") map to a hue, saturation and lightness. Matching words are blended, a colour-harmony rule spreads the hues, and a near-white surface and near-black ink are added so the palette works for an interface.

Same words, same palette. "Shuffle" nudges it.

Honest limits

  • Mood mode only understands its built-in vocabulary. Unknown words still give a palette, just not a meaningful one.
  • Colours are grouped in RGB rather than a perceptual colour space, so two clusters can look closer than the numbers suggest.
  • Nothing is uploaded: the image never leaves your browser tab.

Made something with it?

Tell me what PaletteAI should do next.

These started as tools for my own design work. If this one saved you some time, or fell short, I'd like to hear about it.

Press play for the dodo theme, or some quiet ambient music

Playlist · Build mode

Deep Focus

for shipping things

0:003:24