Image Color Changer

Replace one colour in a picture with another. Pick the colour off the image, set how far the match reaches, and keep the shading so the result still looks like an object rather than a flat cut-out.

Drag & drop a file here, or

JPG PNG WebP BMP AVIF GIF Max 50MB • Processed in browser • Nothing leaves your device

Runs in your browser

The Tolerance Names Its Space

A tolerance of 20 covers a different set of pixels in CIELAB than it does in sRGB, so the page states which one produced the count. CIELAB is closer to what your eye calls "the same colour"; sRGB is literal channel distance.

Shading Survives

Keep-shading mode takes the new colour's hue and leaves each pixel's own lightness alone, so a folded shirt stays folded. Flat mode paints every matched pixel identically, which is what a logo or a solid background wants.

Privacy-First

Every pixel is read and rewritten by the Canvas API on your own device. Nothing is uploaded, nothing is stored, and no account is needed. Close the tab and the image is gone.

Advertisement

How it works

Picking the colour beats typing it

A colour that looks flat almost never is. A white background out of a camera is a thousand near-whites, and a red logo saved as JPEG has a halo of off-reds around every edge. Typing #ffffff catches the one exact value and leaves the rest, which is why the result looks moth-eaten. Click the eyedropper, click the area you mean, and the tool takes the real value that is actually in the file rather than the one you assumed was there.

Tolerance is a distance, and distance needs a space

Tolerance decides how far from the picked colour a pixel can sit and still count as the same colour. That distance can be measured two ways. CIELAB delta-E is built so that one unit is roughly one just-noticeable difference, so it groups shades the way your eye does. sRGB distance is the straight line between the three channel numbers, which is faster and more literal but will happily treat two greens you cannot tell apart as far away. The same tolerance number means different pixel sets in the two, so this page prints the space next to every count instead of leaving it to be guessed.

Flat colour is rarely what a photo wants

Painting every matched pixel the identical new colour is correct for a logo, an icon or a solid backdrop. On a photograph it destroys the object: a blue jumper becomes a blue silhouette, because the folds were made of lightness differences that have just been flattened. Keep-shading mode takes only the hue and saturation of the new colour and leaves each pixel with the lightness it already had, so the shadows, the highlights and the fabric texture come through the change intact. Not every lightness can hold every colour - a very dark pixel cannot be a bright yellow - so where sRGB will not stretch that far, the tool gives up some of the colour rather than the lightness, and reports the largest lightness it had to move.

Hard edges and transparent pixels

A hard tolerance cut leaves a fringe of unreplaced pixels along every edge, because anti-aliasing put half-way colours there. The soft edge control extends the match past the tolerance and blends those pixels part of the way, and they are reported as blended rather than replaced, because they were not. Fully transparent pixels are skipped entirely and counted separately: a pixel with zero alpha carries whatever channel values happened to be left in the buffer, so matching it would be inventing a colour that is not visible in the picture.

Frequently Asked Questions

How do I change the colour of an image?

Upload the picture, click the eyedropper and click the colour you want gone, then choose the colour you want instead. Tolerance decides how much of the surrounding shade goes with it. For a photograph, switch the mode to keep shading so the object keeps its folds and shadows; for a logo or a flat background, leave it on flat colour.

Why did only part of the colour change?

Because the rest of it is not quite the same colour. Compression, lighting and anti-aliasing spread a nominally single colour across hundreds of near values, and a low tolerance catches only the ones closest to the pixel you picked. Raise the tolerance until the report says most of the area changed, and add some soft edge to pick up the half-way pixels along the boundary.

What does the tolerance number actually measure?

The distance between a pixel and the colour you picked, in whichever space is selected. In CIELAB it is a delta-E figure, where roughly one unit is the smallest difference a person can see. In sRGB it is the straight-line distance between the channel values, rescaled so that 100 is black to white. Both run 0 to 100 on the slider, but they do not select the same pixels, which is why the count on the page always names the space it was measured in.

Should I use CIELAB or sRGB?

CIELAB for photographs and anything where you are thinking in terms of what looks like the same colour, since it groups shades the way your eye does. sRGB when you want a literal, predictable channel cut — screenshots, flat graphics and generated images, where the colours are exact values rather than lit surfaces.

What is the difference between flat colour and keep shading?

Flat colour writes the identical new value into every matched pixel, so the area comes out as one solid block. Keep shading takes only the hue and saturation of the new colour and leaves each pixel its original lightness, so a shadowed part stays dark and a highlight stays bright. On a real object flat mode looks like a cut-out; on a logo it is exactly right. Where a pixel is too dark or too bright to hold the full new colour, the colour is eased back rather than the lightness, because the lightness is what the mode exists to protect.

What does the soft edge slider do?

It extends the match a little past the tolerance and blends those outer pixels partway to the new colour instead of replacing them outright. That covers the anti-aliased fringe that would otherwise be left behind as an outline in the old colour. Those pixels are reported as blended, not replaced, because they were only moved part of the way.

What happens to transparent areas?

They are left alone and counted separately. A fully transparent pixel has no visible colour — the channel values sitting underneath it are leftovers, not something you can see — so matching it against your picked colour would be meaningless. Partly transparent pixels keep their own opacity and only have their colour changed, which is what keeps a soft edge soft.

Does this work on a transparent PNG?

Yes, and the alpha channel is preserved on output. The file is written back as PNG, so transparency survives the round trip. If you upload a JPEG, there is no transparency to begin with and there will be none in the result.

Can I replace more than one colour?

One at a time. Change the first colour, download the result, then upload that file and change the next one. Each pass is independent and lossless as long as you keep saving as PNG.

Is my image uploaded anywhere?

No. The picture is read into a canvas in your own browser and every pixel is compared and rewritten there. There is no server call, no storage and no account, and closing the tab discards the file.