Shrink animated GIFs by cutting colours, frames or size. Loop count and timing are kept, and nothing is uploaded.
Animated or still GIF files, read in your browser
Drop images here, or tap to select
GIF only · up to 10 files · Up to 50 MB each
A GIF stores every frame with its own palette of at most 256 colours, which is why a few seconds of animation can weigh several megabytes. This compressor rebuilds the file from the decoded frames: it stores only the pixels that change from one frame to the next, gives each frame a smaller palette if you ask for one, and can drop frames or scale the picture. Playback length and the loop count stay as they were. Everything runs in your browser tab; the GIF is never uploaded.
GIF compression is lossless LZW, so the encoder cannot simply “lower the quality” like JPEG. File size depends on three things: how many pixels are stored, how many distinct colours they use, and how repetitive each row is. A screen recording exported with every frame written in full is the worst case, because the static background is saved again in every frame.
The tool first redraws each frame exactly as a browser would, applying transparency and the three disposal methods (keep, clear to transparent, restore previous). It then compares each frame with what is already on screen and writes only the rectangle that changed. Pixels inside that rectangle that did not change become transparent, and long runs of one value compress very well.
Colours per frame (256, 128, 64, 32 or 16) is the size of each frame’s palette. Flat graphics and UI captures often hold up at 64 colours; photos and gradients band sooner.
Frames to keep drops frames at a fixed rate: “1 in 2” keeps frames 1, 3, 5 and so on, and each kept frame takes over the delays of the frames removed after it, so a 1.2-second loop still lasts 1.2 seconds.
Scale shrinks every frame to 75% or 50% using area averaging. “Ignore small pixel changes” (0–24) keeps a pixel’s previous colour when it moves by no more than that amount per channel, which removes the shimmer that dithered video GIFs carry from frame to frame.
The presets combine these: Light is 256 colours with every frame at full size, Balanced is 128 colours with a threshold of 4, and Strong is 64 colours, every second frame, 75% size and a threshold of 12.
Our test file is a 320×200 GIF with 30 frames at 40 ms each (1.2 seconds, looping forever), exported with every frame written in full: 429,740 bytes. In Chrome, Balanced produced a 117,972-byte GIF with all 30 frames, 72.5% smaller. Strong produced 34,086 bytes at 240×150 with 15 frames and the same 1.2-second length.
Some GIFs are already optimised, and re-encoding them with 256 colours can come out a few bytes larger. When the result is not smaller than your original, the tool says so, and the download button gives you the original file instead of a bigger copy.
GitHub accepts images and GIFs up to 10 MB in issues and pull requests, and chat apps such as Discord set their own upload caps, with custom emoji limited far more tightly than ordinary attachments. For a README demo, start with Balanced; if it is still too heavy, scale to 50% before you drop frames, because a smaller picture with smooth motion usually reads better than a full-size one that stutters.
You can add up to 10 GIFs of 50 MB each at once. Frames are processed one at a time, so memory use stays low; an animation above 400 million frame pixels in total (frames × width × height) is refused with a message.
Add your GIFs
Drop up to 10 GIF files on the page or pick them from your device. Files that are not GIFs are skipped with a message.
Pick a preset
Start with Balanced, or set colours, frames to keep, scale and the change threshold yourself.
Compress
Press Compress. Each row shows the new size, frame count and dimensions, and the preview plays the result next to the original.
Download
Download one GIF, or all of them as a ZIP. If a result was not smaller, you get the original file.
Based on your current tool, you might also find these useful