Skip to content
rusthacks.dev
Web

Image Colour Picker

Upload an image or screenshot, click anywhere to read the exact colour, and see its ten dominant colours with their share of the image.

Free · No sign-up · Your inputs stay in your browser

Input

Pick colours from an image

Output

Choose an image

The dominant colours are found by grouping every pixel into 4,096 buckets (16 levels per channel) and averaging the largest ones, which is quick and good enough for pulling a brand colour from a screenshot. Colours from a JPEG carry its compression noise: pick from a flat area, or from a PNG.

Runs in this browser. Nothing you paste is sent to a server.

Getting a brand colour right

Screenshots and logos are the usual source of "what is that blue". Picking from a flat area of a PNG gives the exact value; picking from a JPEG gives a value disturbed by compression, so sample a few points or use the palette average. Browsers also expose an EyeDropper API in Chromium for picking from anywhere on screen.

Palette extraction

Bucket counting is fast and deterministic and finds the large colour areas. It can merge close shades and miss a small accent colour; for that, click it directly.

Share

Frequently asked questions

Is the image uploaded?
No. It is read and drawn in this page; nothing is sent anywhere.
Why does the picked colour differ from the design file?
Colour profiles: an image exported in Display P3 or with an embedded profile is converted for display, and compression changes pixels. Export in sRGB as PNG for exact values.
Is what I paste sent anywhere?
No. The tool runs entirely in your browser with JavaScript. Nothing you type or paste is sent to our server or stored.

Go deeper

Suggested reading

Flat illustration for the post “Hyper Directly in Rust and When to Skip the Framework”, composed around web.
Web

Hyper Directly in Rust and When to Skip the Framework

Hyper 1.x is a low-level HTTP library: you write the accept loop, the service and the routing. See a working server with hyper-util, what a framework adds, and the narrow cases where going direct is right.

3 min read
Flat illustration for the post “Rust Error Connection Refused From Reqwest and Sockets”, composed around errors.
Tooling

Rust Error Connection Refused From Reqwest and Sockets

Connection refused means nothing was listening at that address and port. Check the bind address, localhost versus 127.0.0.1, containers and Docker networks, startup order and the wrong port, with commands for each.

4 min read

Keep planning

Similar tools