Why the clustering happens in OKLab
Extraction is k-means clustering over the pixels, but the space it runs in decides the result. Distance in sRGB badly overstates differences between dark colours and understates them between light ones, so an sRGB clusterer returns five muddy near-identical darks from a photograph that obviously contains five different colours.
Running it in OKLab — a perceptually uniform space — means numerical distance matches what your eye reports, so the clusters land where you would have put them.
A palette from a photo is rarely usable as text
Photographs are full of mid-tones, and a mid-tone only just reaches 4.5:1 on the better of white or black, never comfortably on either. A palette that looks beautiful as five swatches will often have nothing in it you can set body copy in.
So every swatch here carries its measured contrast against white, and accessible mode fixes the ones that fail by moving lightness only. You keep the colours the photograph gave you; you just get versions of them you can ship.
Questions people ask
Straight answers. Each one links directly: copy the address after opening it.
Is there a file size limit?
No. The image is decoded and read in your browser, so there is nothing to upload and nothing to cap. It is downscaled internally before the pixels are read, because clustering a twelve-megapixel photo produces the same palette as clustering a small one and takes far longer.
What is the difference between dominant and distinct?
Dominant answers what the image is mostly made of, by area — a photo of a beach returns four sands and one sky. Distinct answers which colours are actually different from each other. They are different questions and most pickers only answer the first.
What does accessible mode do?
It takes the extracted palette and moves each swatch along its own lightness axis until it clears 4.5:1 as text on white, holding the hue. The palette still comes from your photograph; it is just usable as text afterwards.
Does my image leave the browser?
No. There is no upload step and no server to upload to. Open your network tab while you use it, or switch off your connection — it keeps working.