UtilityKit

500+ fast, free tools. Most run in your browser only; Image & PDF tools upload files to the backend when you run them.

GIF Compressor

Reduce animated GIF file size by lowering FPS, scaling dimensions and tuning palette. Two-pass palette encoding via ffmpeg.wasm — browser only.

About GIF Compressor

GIF Compressor reduces the size of any animated GIF by re-encoding it with a tuned colour palette, optionally lower frame rate, and optional smaller dimensions. All processing runs locally via ffmpeg.wasm — your file never leaves the browser. Three quality presets cover the full range: High (full 256 colours, dithered), Medium (128 colours, dithered, the sweet spot for most GIFs), and Low (64 colours, no dither, smallest). Pair the preset with FPS reduction (10 fps is usually enough) and width scaling (drop large GIFs to 480 px or below) to often cut size by 60–80% with minimal visual loss.

Why use GIF Compressor

  • Shrink GIFs by 60–80% with sensible defaults
  • Two-pass palette generation preserves colour better than single-pass
  • Sierra dither in High/Medium hides banding on gradients
  • FPS reduction is the cheapest way to drop file size without blur
  • 100% browser — no upload, no quota, no privacy worries
  • Free, no watermark, no signup

How to use GIF Compressor

  1. Upload your GIF file via the drop zone.
  2. Choose an output FPS — 10 fps is a good default; 5–8 fps gives the biggest size win for talking-head or slow content.
  3. Optionally enter a smaller output width in pixels. Leave -1 to keep the original size.
  4. Pick a quality preset: High (256 colours), Medium (128, recommended) or Low (64, smallest).
  5. Click 'Compress GIF' and wait for the two-pass encoder.
  6. Preview the compressed result and download — the status bar shows the percent saved.

When to use GIF Compressor

  • Trimming a viral GIF down for upload-size limits on chat apps
  • Bringing a 5 MB tutorial GIF under the 1 MB email-attachment threshold
  • Optimising GIFs for embed in Markdown READMEs and docs sites
  • Reducing storage cost on a marketing site with many animated assets
  • Cleaning up screen-recorded GIFs that ship at 30 fps and 1080 px
  • Preparing GIFs for mobile-friendly performance on low-bandwidth networks

Examples

Tutorial GIF for README

Input: 1.8 MB, 30 fps, 1080 px wide

Output: ≈420 KB after Medium quality at 10 fps and 720 px (-77%)

Slack reaction GIF

Input: 9 MB meme GIF at 1080p

Output: ≈1.4 MB after Low quality at 8 fps and 480 px, well under Slack limits

Pixel-art animation

Input: 600 KB, 256-colour GIF

Output: ≈210 KB after Low (64 colours, no dither) preserving sharp edges

Tips

  • Cutting FPS from 30 to 10 typically reduces size by 60% with no visible loss for talking heads or slow motion.
  • Drop width before lowering palette — viewers notice colour banding more than they notice crisp small frames.
  • On pixel-art GIFs, always use Low quality with no dither — palettes are already small and dithering looks ugly.
  • If the file is still too big after Medium quality, scale width to half and re-run.
  • For Slack/Discord, target under 8 MB; most other chat apps cap around 25 MB.
  • Saving a GIF as MP4 with the GIF to Video tool is usually a 5–10× bigger size win than compressing the GIF itself.

Frequently Asked Questions

Does my GIF leave my device?
No — ffmpeg.wasm runs locally in the tab. Nothing uploads to a server.
Why two passes?
Pass 1 builds an optimal 256/128/64-colour palette specific to your GIF. Pass 2 re-encodes using that palette, which preserves colour far better than picking colours frame-by-frame.
What FPS should I choose?
5 fps for slideshow-style content, 8–10 fps for talking-head and tutorial clips, 12–15 fps for fast motion. Below 5 fps motion looks juddery.
When should I lower colour count?
Drop to 128 for most photos and screen-record content; drop to 64 for solid-colour cartoons and pixel art where the palette is small anyway.
Is the dither important?
Yes on photos and gradients — Sierra dither hides palette banding. On pixel art, switch to Low (no dither) to keep crisp edges.
What is the maximum input size?
There is no server cap. Browser memory typically handles GIFs up to a few hundred MB; very large GIFs may stall on phones.
Why does it require Chrome/Edge?
ffmpeg.wasm needs SharedArrayBuffer for multi-threading, and that requires the page to ship COOP/COEP headers, which most browsers honour but some block.
Will the GIF still loop after compression?
Yes — looping metadata is preserved automatically.

Explore the category

Glossary

Palette
The 64/128/256 colours available to a GIF frame. A custom palette tailored to your content preserves quality far better than a generic one.
Dither
An algorithm that mixes adjacent palette colours in a pattern to simulate intermediate shades — Sierra is a high-quality dither used here.
FPS
Frames per second. Halving FPS roughly halves file size in most cases without looking choppy on slow motion.
Lanczos
A high-quality resampling filter used when scaling the GIF to a smaller width — sharper than bilinear or bicubic.
ffmpeg.wasm
WebAssembly build of FFmpeg that runs entirely in the browser — used here for two-pass palette generation and re-encoding.
SharedArrayBuffer
Browser API for shared multi-threaded memory; required by ffmpeg.wasm and only enabled on cross-origin-isolated pages.