GIF Color Changer
Replace a color, shift hue, apply a tint, or apply a Grayscale/Sepia/Invert/Moonlight effect on a GIF — every frame, delay and loop count preserved.
Input
Animated or static GIF. Every frame is processed and re-encoded — this uses one credit per run.
Pixels close to this color are replaced.
How close a pixel's color must be to match, and how soft the replaced edge is.
Output
Result will appear here.
Guides
Recolor a GIF without breaking its animation. Upload a GIF, pick an adjustment — Replace Color, Hue Shift, Tint, or an Effect preset — and every frame is decoded, recolored, and re-encoded with its original delay, disposal method, and loop count intact.
How it works
Upload a GIF (animated or static), then choose one adjustment:
- Replace Color — pick a color to replace and a new color, plus a Tolerance for how close a pixel's color must be to count as a match. Higher tolerance catches a wider range of similar shades and blends the edge more softly, so an anti-aliased source (a logo, an icon, a screen recording) doesn't come out with a hard fringe around the swap.
- Hue Shift — rotate every pixel's hue around the color wheel, from 0° to 360°, the same math behind CSS's
hue-rotate()filter. - Tint — wash the GIF toward one color while keeping each pixel's original shading, so detail and contrast survive the tint instead of flattening into a single wash.
- Effect — apply a ready-made look: Grayscale, Sepia, Invert, or Moonlight (a cool, desaturated night tone).
Every frame gets the same treatment and is re-quantized together into one shared color palette, so colors stay consistent from frame to frame instead of flickering between slightly different shades on playback.
Privacy
The GIF is processed on our server, not in your browser — that's what makes multi-frame decoding and re-encoding possible without a heavy in-browser library. It's used only to produce your result and isn't stored afterward. This uses one credit per run, including on the website itself.
Does this work on animated GIFs?
Yes — that's the whole point. Every frame is individually recolored, and the original per-frame timing, loop count, and transparency are preserved in the output.
Why does replacing a color leave some pixels unchanged?
Increase the Tolerance slider. At low tolerance, only near-exact matches to your chosen color are replaced; raising it catches nearby shades too (useful for anti-aliased edges or slightly-off source colors).
I just need to change the file format, not the colors
Use Image Converter (or its dedicated GIF to PNG / GIF to JPG leaves) to convert a GIF to another format, or the other direction with Image Converter's GIF target. For a single-frame photo tint instead of a GIF, Colorize Image runs entirely in your browser for free.
Use it from code
From 3 credits per callREST API
curl -X POST https://api.iotools.cloud/v1/tool/gif-color-changer \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"file": "data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAAC…",
"mode": "replace",
"sourceColor": "#ff0000",
"targetColor": "#0000ff",
"tolerance": "30"
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `gif-color-changer` tool (GIF Color Changer) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.