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.
Make a palette
Drop an image, or switch to "From a mood" and type a few words. Click any 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.