tooloora

Color Picker — pick a colour from an image and derive a palette

Load an image, hover for the magnifier, click to pick. Copy HEX, RGB and HSL, and get a palette sorted by how much of the image each colour covers.

Runs locally — nothing is uploaded

Choose an image or drop it here

JPG, PNG, WebP, GIF and anything else your browser can display.

Screenshot on the clipboard? Ctrl + V (Mac: Cmd + V) pastes it straight in here.

Pick a colour from the screen

Picked colour

No colour picked yet. Click into the image or use the screen eyedropper.

Your image never leaves your device: it is read in the browser, nothing is sent, nothing is stored.

Pick a colour from an image

Load an image, move the pointer across it and click the spot whose colour you need. The magnifier enlarges the pixels so you hit the right one even on an edge. The value appears immediately as HEX, RGB and HSL, ready to copy, plus a palette of its main colours. Everything runs in your browser; the image never leaves it.

How do I hit the right pixel?

An image is almost never shown at its real size. A photo 4000 pixels wide fits into a 600 pixel column, so one displayed pixel stands for roughly seven real ones. That is exactly where a colour picker goes wrong: it reads the displayed pixel instead of the image pixel underneath.

This tool converts the pointer position into a fraction of the displayed area first, and from there into an image column and row. The magnifier shows nine by nine real pixels around the crosshair, with the picked one in the centre. At the border the cells stay empty instead of wrapping around to the opposite side.

Three ways lead to an image:

  • Choose or drop. The area accepts any format your browser can display: JPG, PNG, WebP, GIF and usually AVIF.
  • Paste. A screenshot on the clipboard lands in the tool with Ctrl + V (Mac: Cmd + V), no file needed.
  • Keyboard. Focus the image with Tab, move the crosshair with the arrow keys — hold Shift for steps of ten — and pick the colour with Enter.

Can I pick colours outside this page?

In some browsers, yes. The EyeDropper API hands the picker over to the operating system: the pointer becomes a magnifier and reads any pixel on your screen, including one in another window, a video or a PDF. That is the real advantage over a picker limited to a loaded image.

It is not available everywhere. As of 2026:

BrowserScreen eyedropper
Chrome, Edge, Opera (Chromium)available, HTTPS only
Firefoxnot available
Safari (macOS and iOS)not available

That is why the button appears only when your browser really offers the feature. When it does not, a plain notice takes its place. A silent fallback that quietly does something else would be worse than the honest answer. Technical reference: MDN, EyeDropper API.

Without the API you still get there: take a screenshot, paste it with Ctrl + V, pick the colour.

How is the palette calculated?

Not by sampling five random pixels. That sounds obvious, yet it is exactly where many palette tools go wrong, for two reasons.

First, noise. In a photo no area is exactly one colour. A red wall consists of hundreds of slightly different reds. Counting exact colour values finds no cluster there and instead names the smaller but technically uniform area next to it first. So every sampled pixel first goes into a coarse grid of 32 steps per channel instead of 256, and neighbouring cells are merged afterwards.

The distance for that merge is not measured in RGB but in OKLab. In RGB two greens the eye can barely tell apart sit far away from each other numerically, while two clearly different blues sit close together. OKLab is built so that equal numeric distances correspond roughly to equal perceived distances (Björn Ottosson, 2020); the same colour space is available in the browser as of CSS Color Level 4.

Second, the background. In almost every product shot, screenshot and logo, white and black cover the largest area. Sorting strictly by area gives you a palette of five greys, and the colour you loaded the image for is not in it. Here near-white and near-black are counted separately from the start and reported separately. The colour list stays a colour list, and you still see how much area background and shadow occupy.

A vivid pale yellow does not slip into the white bucket: near-white only applies when a colour is both very light and very desaturated.

Which colour format do I need?

FormatExampleWhere it pays off
HEX#4f46e5Shortest notation, works everywhere, the default in design tools
RGBrgb(79, 70, 229)Easy to read when values are generated or calculated per channel
HSLhsl(244, 76%, 59%)Hue, saturation and lightness separated, ideal for deliberate variants

All three describe the same sRGB colour, so it is not a question of quality but of what you do next. If you also need HSV, OKLCH, CMYK or the matching CSS colour name, the colour converter produces all of them at once, plus tints, shades and harmonies.

Is this colour readable as text?

Right below the picked value you see the WCAG contrast ratio against white and against black. WCAG 2.1 success criterion 1.4.3 asks for at least 4.5:1 for normal text and 3:1 for large text (W3C).

That this check is not a side issue is shown by the WebAIM Million 2024 analysis: 81.0 percent of the one million home pages tested contained text with insufficient contrast, by far the most common automatically detectable failure (webaim.org/projects/million).

If neither white nor black reaches the required value, the colour is not usable as a text colour on its own. The contrast checker then evaluates the specific pair and suggests the nearest lightness that passes, without changing the hue.

Where are the limits?

  • JPEG changes pixels. Compression works in blocks; at edges and in flat areas the stored value differs from the original. For an exact brand colour the design file is the source, not a photo of it.
  • Colour profiles are converted. If the image carries a profile other than sRGB, the browser converts it before the pixels reach the canvas. You get the value visitors see, which is not necessarily the value stored in the file.
  • A screenshot is not a file. It captures what your display shows, including brightness, night mode and the display profile.
  • Very large images are scaled down. The browser canvas is limited to about 16.7 megapixels on iOS. Above that the tool scales proportionally and tells you; colours shift marginally as a result.
  • Semi-transparent pixels come back with their alpha value and are skipped for the palette. What you actually see on a coloured background is the composited colour, not that value.
  • CMYK is not a conversion without a profile. For print the value here is a starting point, not a specification.

Frequently asked questions

Can I pick a colour from anywhere on my screen, not just from an image?

Yes, but only in some browsers. The screen eyedropper uses the browser EyeDropper API, which lets you sample any pixel on your desktop, including other windows. As of 2026 it exists in Chromium-based browsers (Chrome, Edge, Opera) and only in a secure context, which this site is. Firefox and Safari do not implement it. The tool shows the button only when the API is actually there and says so plainly when it is not, instead of pretending with a fallback that silently does something else. Without the API, load an image or paste a screenshot with Ctrl + V.

How is the palette calculated?

In three steps. First every sampled pixel is placed in a coarse colour bucket, 32 steps per channel instead of 256, because in a photo almost no two pixels share an exact value. Then neighbouring buckets are merged in the OKLab colour space, which measures distance the way the eye does rather than the way RGB numbers do. Finally the groups are sorted by how many pixels they contain. Near-white and near-black are counted separately from the start, otherwise the background and the shadows would fill every slot and the palette would be five shades of grey.

Is my image uploaded anywhere?

No. The file is read by your browser with the standard image decoder, drawn onto a canvas and analysed there. No upload, no API call, no logging, nothing stored. You can disconnect from the network and the tool keeps working. That is also why very large photos are scaled down first: the browser canvas has a hard area limit of about 16.7 megapixels on iOS, and the tool tells you when that happened.

Why does the picked colour differ slightly from the original file?

Three usual reasons. JPEG compression changes pixel values, especially at edges and in flat areas. An embedded colour profile other than sRGB is converted by the browser before the pixels reach the canvas. And a screenshot captures what the display shows, not what the file contains. If you need the exact value from a design file, take it from the design tool; if you need the value people actually see, this is the right place.

Which format should I paste into my CSS?

HEX is the shortest and works everywhere, which is why it is the default here. rgb() is easier to read when you generate values from code. hsl() is the one to use when you want to vary a colour on purpose, because lightness and saturation are separate numbers you can nudge without losing the hue. All three describe the same sRGB colour, so it is a question of what you plan to do next, not of quality.

How do I know whether text in this colour is readable?

The tool shows the WCAG contrast ratio of the picked colour against white and against black straight away. WCAG 2.1 success criterion 1.4.3 asks for at least 4.5:1 for normal text and 3:1 for large text. If neither white nor black gets you there, the colour is not suitable as a text colour on its own, and the contrast checker linked next to those numbers will suggest the nearest lightness that does pass.