KKwikfig.

Color Picker from Image

Click any pixel in an image to read its exact HEX, RGB and HSL colour and build a palette — sampled locally from the corrected image, never uploaded. Runs entirely in your browser — your numbers never leave this device.

Choose the image to pick colours from
Click to browse, or drag and drop a file here — it never leaves your device.

No image loaded yet. Load one and click any point on it to read that pixel's exact colour — the image is decoded on this device and never uploaded.

How it works

Sample = the RGBA pixel at the clicked point of the displayed (EXIF-corrected) image | HEX = # plus the two-digit hex of each channel | HSL = the standard RGB → HSL conversion (hue 0–359, saturation and lightness as whole percents, the same rounding as the Color Converter)
One sampled pixel, three readouts — the brand coral #f04e23
ReadoutValue for #f04e23Used for
HEX#f04e23CSS, design tools, the fastest thing to paste
RGBrgb(240, 78, 35)Code, image editors, canvas and shader values
HSLhsl(13, 87%, 54%)Hand-tuning: keep the hue, move lightness or saturation

Load an image and click anywhere on it: the tool reads the single pixel under your click from the rendered canvas and reports it three ways — HEX for CSS and design tools, RGB for code and image editors, and HSL for adjusting lightness and saturation by hand. The conversions use the same functions and the same rounding as Kwikfig's Color Converter (hue as a whole number 0–359, saturation and lightness as whole percents), so a colour sampled here reads identically there. Every new colour you click is added to a palette strip under the image; clicking a palette swatch copies its HEX value, ready to paste into a stylesheet or design file.

Two details keep the sample honest. First, the image is orientation-corrected on load: phone photos stored sideways with an EXIF rotation flag are turned upright before display, and sampling uses that displayed, upright image — the pixel you click is the pixel whose colour you get, and the readout names its position in source-image pixels. Second, sampling reads the displayed canvas, which is scaled to fit the page (at most 720 px wide); on a much larger photo the displayed pixel under the cursor may blend two neighbouring source pixels, which is why the sampled position is reported — for single-pixel-critical work on textures, crop the region first with the Image Cropper and sample the crop at natural size.

The image never leaves your device. It is decoded in your browser, drawn to a local canvas, and sampled in memory; no copy is uploaded, stored or logged, and the picker works offline once the page has loaded.

Worked examples

Sampling a sky-blue pixel

Input
A click on a pixel whose stored colour is dodger blue
Working
The pixel reads R = 30, G = 144, B = 255. As hex that is 1e, 90, ff → #1e90ff. The standard conversion gives hue 210, saturation 100%, lightness 56%.
Result
HEX #1e90ff · RGB rgb(30, 144, 255) · HSL hsl(210, 100%, 56%)

Matching a brand colour from a screenshot

Input
A click on the coral button in a site screenshot
Working
The pixel reads R = 240, G = 78, B = 35: hex f0, 4e, 23 → #f04e23, and HSL hue 13, saturation 87%, lightness 54%. The swatch joins the palette and a click on it copies #f04e23.
Result
HEX #f04e23 · RGB rgb(240, 78, 35) · HSL hsl(13, 87%, 54%)

Reading a leaf green from a photo

Input
A click on a leaf in a garden photo
Working
The pixel reads R = 23, G = 122, B = 87 → hex 17, 7a, 57 → #177a57; HSL hue 159, saturation 68%, lightness 28% — a deep green, as the low lightness says.
Result
HEX #177a57 · RGB rgb(23, 122, 87) · HSL hsl(159, 68%, 28%)

Frequently asked questions

Is the image I sample uploaded anywhere?

No. It is decoded and drawn to a canvas inside your browser and sampled in memory — the file never leaves your device, is never stored or logged, and the picker works with the network disconnected.

Why does the sampled colour differ slightly from the original photo's pixel?

Usually because the on-screen image is a scaled preview (at most 720 px wide): if your photo is 4032 px wide, each displayed pixel blends several source pixels, and the sample is the displayed pixel under your click. The sampled position in source pixels is shown with every reading; for exact single-pixel values, crop the area with the Image Cropper first so it displays near natural size, then sample the crop.

My portrait photo loads upright — does that affect sampling?

It makes sampling match what you see. The photo's EXIF orientation is applied on load, so the displayed image is upright and clicks land on the pixels you intend. Without the correction you would be clicking a sideways image and reading coordinates that match nothing you recognise; the page notes the orientation value it applied.

How do I use the palette?

Every distinct colour you click is added to the palette strip (duplicates are kept out). Click any swatch to copy its HEX value to the clipboard, then paste it into your CSS, design tool or the Color Converter to derive harmonies and check contrast. The palette lives only in this tab — copy the values out before closing it.

Can I sample transparency?

The readout reports the colour channels of the clicked pixel as displayed on the page. Fully or partly transparent pixels in a PNG are shown composited by the browser's rendering, so their sampled RGB is the displayed blend rather than the stored value with its alpha — for logo work, sample an opaque part of the mark.

Related tools

More in Image Tools · Browse all tools