Choose an image
Drop an image here
or paste from the clipboard, or
JPEG, PNG, WebP, GIF or SVG · up to 12 MB · nothing is uploaded
Click anywhere on the image to read that exact pixel.
Huely/Image palette extractor
Drop in a photo, screenshot or piece of artwork and get the colors it is actually built from — or click any pixel to read that one color exactly. The image is decoded onto a canvas in this page and never leaves your device.
Drop an image here
or paste from the clipboard, or
JPEG, PNG, WebP, GIF or SVG · up to 12 MB · nothing is uploaded
Click anywhere on the image to read that exact pixel.
The image is scaled down to 200px on its long edge — a thumbnail and a 4000px original have the same palette, and the thumbnail is hundreds of times less work — and every opaque pixel is converted to OKLab. The pixels are then clustered with k-means, and each cluster's centre becomes one palette color. The percentage under each swatch is the share of pixels that landed in that cluster.
Working in OKLab rather than sRGB is what stops the usual failure. Equal numeric distance between sRGB values is not equal perceived distance, so a clustering done in sRGB pulls its centres toward wherever the channels happen to be numerically spread out — which on most photographs means it returns five slightly different browns and misses the one saturated accent the image is actually about.
The starting centres are picked deliberately rather than randomly: the first from the middle of the pixel list, and each next one as far as possible from everything already chosen. Random seeding on a photo very often produces two centres inside the same region, which then compete instead of covering the image.
Most image-to-palette tools post your file to a server to do the work. That
is a meaningful difference if the image is an unreleased design, a
screenshot of an internal dashboard, or a client's photography. Here the
file is read through the browser's own FileReader, painted to a
canvas, and analysed in JavaScript on your machine. Nothing is sent, so
there is nothing to be retained, logged, or trained on.
No. The file is decoded and analysed entirely in your browser using a canvas. It is never transmitted, and closing the tab discards it.
Load the image and click the pixel you want. The exact hex value appears below it, along with its nearest color name and its contrast against white and black, and can be copied or sent straight to the converter.
Because the clustering runs in OKLab, a perceptually uniform space, rather than in raw sRGB. The result tends to separate hues that a sRGB-based extractor merges, and to surface a small saturated accent that a sRGB one averages away.
Anything your browser can decode — JPEG, PNG, WebP, AVIF, GIF and SVG. The 12 MB limit exists to keep the page responsive, not because of any upload.
Not directly. Open the palette in the builder first: it expands each color into a 50–950 tonal ramp and grades every pair against WCAG, which is where a palette taken from a photograph usually needs adjusting.