Home/GIF Tools/GIF Compressor
🗜

GIF Compressor

FREE

Shrink a GIF by scaling, reducing colours or skipping frames

Free · No sign-up required
Loading...

What the GIF compressor does

Animated GIFs are large for what they show — a five-second clip can be 10 MB — because the format dates from 1987 and stores every frame as an indexed-colour image with weak compression. This tool shrinks a GIF by three levers: scaling the frames down (100%, 75%, 50% or 25%), reducing the colour palette (256, 128 or 64 colours), and at the lowest setting dropping alternate frames. It decodes the GIF with gifuct-js, processes the frames, and re-encodes with gif.js — all in your browser. The animation, loop count and timing are preserved.

Where GIF size comes from

FactorEffect on sizeLever in this tool
Pixel dimensionsProportional to width × heightScale 75% ≈ 56% of size; 50% ≈ 25%
Frame countProportionalLow quality skips every other frame
Colours per frameFewer colours = better LZW compression256 → 128 → 64
Motion between framesStatic areas compress well; full-frame motion does notNot adjustable — inherent to the clip
DitheringAdds noise that compresses poorlyPalette reduction without dithering helps

Choosing settings

  • Start with scale. Most GIFs are displayed smaller than their pixel size. A 800 px GIF shown in a 400 px chat bubble can be scaled to 50% with no visible loss and a 75% size reduction.
  • Then colours. Screen recordings, memes with flat colours and cartoons look identical at 128 or even 64 colours. Photographic clips and gradients show banding below 128.
  • Frame skipping last. Halving the frame rate makes motion choppier; acceptable for reaction GIFs and slow clips, distracting for fast motion.
  • Check the estimated size shown after each change and stop when it fits your target.

Typical results

Source GIFSettingResult
8 MB, 600 × 400, 120 frames, 256 colours75% scale, 128 colours≈ 3 MB
Same50% scale, 128 colours≈ 1.5 MB
Same50% scale, 64 colours, skip frames≈ 600 KB

Results vary with content; the estimate in the tool is based on the actual re-encoded output.

Common uses

  • Meeting upload limits — Slack (many workspaces cap GIFs), forums, email signatures, and messaging apps that reject files over a few MB.
  • Speeding up web pages that use GIFs for product demos or tutorials.
  • Reducing a screen recording exported as GIF for a bug report or documentation.
  • Shrinking sticker and reaction GIFs for chat apps.

When a video would be better

GIF is a poor video format: no audio, 256 colours, and files ten to fifty times larger than an equivalent MP4 or WebM. If the destination accepts video — web pages (<video autoplay muted loop> behaves like a GIF), most social platforms, modern chat apps — convert to MP4 instead and get better quality at a fraction of the size. Use GIF where it is required: email, forums, Markdown READMEs on some platforms, and places that will not autoplay video.

Frequently asked questions

Does compressing change the animation speed?

No. Frame delays are preserved. When frames are skipped at the low setting, the remaining frames' delays are doubled so the total duration stays the same.

Why does the output look grainy or banded?

Too few colours for photographic content. Go back up to 128 or 256 colours and reduce the scale instead.

Is transparency preserved?

Yes. GIF's single transparent colour index is carried through re-encoding.

How long does it take?

Decoding and re-encoding is done frame by frame in JavaScript; a 100-frame GIF takes a few seconds on a laptop, longer on a phone.

Can I compress without losing any quality?

Only marginally — GIF's compression is already lossless per frame. Real savings require scaling, fewer colours or fewer frames.

Is the GIF uploaded?

No. Decoding and encoding happen in your browser.

More tools in this category

GIF Cropper
Crop every frame of an animation to a chosen region
🎨
GIF to Frames
Split an animated GIF into individual PNG frames
🔗
GIF Merger
Join GIFs end to end, or build one from still images
GIF Reverser
Play an animated GIF backwards with the same timing