Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

GIF Compressor

Make animated GIFs lighter — or fit them under an emoji or sticker size limit.

Image No upload Works offline Free, no sign-up

Next steps

About the GIF Compressor

Shrink an animated GIF without changing how it plays. The compressor rebuilds the GIF frame by frame: it chooses the best palette (256 colours or fewer), stores only the part of each frame that changes, writes pixels that stay the same as transparent so the previous frame shows through, and merges frames that change nothing into the one before. On top of that you can use lossy compression (small changes between frames are skipped), remove frames (their time goes to the frames that stay, so the speed is unchanged) or scale it down.

Need a GIF under a hard limit? Choose Fit under a size limit — for example a Slack or Discord emoji or a Discord sticker, or your own number of KB — and the tool tries the gentlest changes first until the file fits, then shows what it changed. The original and the result play side by side with their sizes. Everything runs in a background worker in your browser; the GIF is never uploaded.

How to use it

  1. Choose or drop a GIF (or paste it). It is compressed straight away with the default settings: all colours, lossy 10 and every frame.
  2. Compare the original and the result. To go smaller, lower Colours, raise Lossy, remove frames or pick a smaller Size — small GIFs update as you change settings; for big ones select Compress GIF.
  3. For a hard limit, choose Fit under a size limit, pick a platform or enter your own KB, and choose what the search may change. It stops at the first result that fits.
  4. Select Download to save the GIF.

Examples

Reaction GIF for a Discord emoji
Input
480 × 270 px, 64 frames · Fit under: Discord emoji
Result
Scaled to fit 128 × 128 (128 × 72 px), then lossy and fewer colours are tried until it is under 256 KiB

Discord’s developer documentation gives 256 KiB as the maximum for emoji and animated emoji, and describes the upload as a 128 × 128 image.

Screen recording with a still background
Input
Lossy 0, all frames
Result
Only the changing area of each frame is stored; frames where nothing moves are merged

Screen recordings and UI demos usually shrink the most, because most of each frame is identical to the one before.

Halving the frames of a 30 fps clip
Input
Frames: Remove every 2nd frame
Result
Half the frames, each shown twice as long — the animation lasts exactly as long as before

Common uses

  • Getting a GIF under the size limit for a Slack or Discord emoji or a Discord sticker.
  • Making GIFs for README files, documentation and blog posts load faster.
  • Shrinking screen recordings and product demos before emailing or posting them.
  • Reducing GIFs that a chat app, forum or CMS rejects as too large.

What each setting does

  • Colours — a GIF frame can hold at most 256 colours. Fewer colours make smaller files; flat graphics and cartoons often look the same at 64 or 32. Photographic GIFs band with too few.
  • Lossy — pixels whose colour changed only a little since they were last drawn are left as they are, which gives the compressor long runs of identical pixels. 0 keeps every frame exact; low values are usually hard to see in motion, while very high values can leave faint trails behind moving parts.
  • Frames — removing frames saves the most for smooth, high-frame-rate GIFs. The delay of each removed frame is added to the frame before it.
  • Size — halving the width and height leaves about a quarter of the pixels.
  • Dithering (more options) mixes palette colours in small patterns to imitate gradients. It looks smoother but noise compresses badly, so the file grows.
  • Palette — one palette for all frames avoids colour flicker and saves 768 bytes per frame; one per frame suits GIFs whose scenes change completely.

Platform limits

  • Slack: “Square images under 128 KB and with transparent backgrounds work best” and “GIFs can include up to 50 frames” (Slack Help Center). The Slack preset aims under 128,000 bytes and keeps at most 50 frames.
  • Discord emoji: “Emojis and animated emojis have a maximum file size of 256 KiB” (262,144 bytes), uploaded as “the 128x128 emoji image” (Discord developer documentation).
  • Discord stickers: GIF, PNG, APNG or Lottie, “max 512 KiB”, and “constrained to 5 seconds in length for animated stickers, and 320 x 320 pixels” (Discord developer documentation). The compressor cannot shorten an animation, so it warns when a GIF is longer than 5 seconds.

Platforms change their rules; check the linked pages if an upload is refused, and use My own size limit for anything else.

How the GIF is rebuilt

Each frame is first drawn exactly as a browser shows it — following the GIF89a disposal method of the frame before (GIF89a specification) — then compressed again: the palette comes from the PnnQuant quantiser (or the exact colours, when the GIF has few enough), every pixel is mapped to its nearest palette colour, and each frame is saved as the smallest rectangle that changed, with LZW compression. Where a pixel has to become transparent, the previous frame is set to clear its area afterwards. Timing, looping and transparency are kept.

Limitations

  • GIFs up to 100 MB, 4,096 pixels on each side and 2,000 frames. Very long, large GIFs take a while — the progress bar shows how far it has got, and you can cancel.
  • The result is always a GIF. Where a GIF is not required, a video is usually far smaller — see GIF to MP4.
  • A GIF that is already well optimised (for example by gifsicle) may get only slightly smaller without lossy compression, fewer colours, fewer frames or a smaller size.
  • Lossy compression and fewer colours are visible changes; compare the two previews before you download.
  • The tool keeps the length of the animation, so it cannot fix a GIF that is too long for a platform; change its speed or trim it first.

Privacy

Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.

Frequently asked questions

How can I make a GIF smaller without losing quality?

Leave Lossy at 0 and Colours at 256: the GIF is then rebuilt losslessly, storing only what changes between frames and merging identical frames. How much that saves depends on how the GIF was made — screen recordings and GIFs from simple encoders often shrink a lot, already-optimised GIFs very little.

Why did my GIF get bigger?

Some GIFs are already optimised with tricks this tool does not reverse, and dithering adds noise that compresses badly. Turn dithering off, raise Lossy, use fewer colours, remove frames or make it smaller. You can always keep the original.

Does removing frames make the GIF play faster?

No. Each removed frame’s delay is added to the frame before it, so the animation lasts as long as before — it just moves in bigger steps.

Is my GIF uploaded?

No. It is decoded and compressed by your browser, in a background worker on your device, and works offline once the page has loaded.

What do KB and KiB mean for size limits?

A KB is 1,000 bytes; a KiB is 1,024 bytes. Discord states its limits in KiB (256 KiB = 262,144 bytes); Slack says KB, so the Slack preset aims under 128,000 bytes to be safe.

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.