Palette from an Image
Drop an image and get the colours it is actually made of, clustered in OKLab so the split matches what the eye sees. Pick one and it becomes a full Tailwind scale with an @theme block. The file never leaves your browser.
Drop an image here
It is read in your browser and never uploaded.
Frequently asked
Does my image get uploaded?
No. The file is read with the browser's own file API, drawn to a canvas, and the pixels are analysed in memory. Nothing is sent anywhere, and nothing is stored — reload the page and it is gone.
Why cluster in OKLab instead of RGB?
Because equal distance in RGB is not equal difference to the eye. RGB clustering tends to collapse every dark tone into one bucket while splitting bright ones needlessly. OKLab is built so that the same numeric step looks like the same step, whatever the hue, which produces a palette that matches what you actually see in the picture.
Will I get the same palette twice?
Yes. The clustering starts from fixed positions in the sorted pixel list rather than random seeds, so the same image always produces the same result. A random start would give you a slightly different palette on every reload, which makes the tool useless for anything you want to keep.
Why do the percentages not add up to exactly 100?
They are rounded for display, and nearly transparent pixels are skipped entirely — they carry no reliable colour and would drag every cluster toward grey.
The image is huge. Does it slow down?
No, because it is scaled to a 160-pixel edge before anything is measured. That keeps the sample under about 25,000 pixels, which is plenty for a stable palette and fast enough to feel instant.