Home/Tools/GIF Compressor
Discord · Slack · Twitter · 100% Private

GIF Compressor

Drop a GIF below. Compression happens entirely on your device — no upload, no server, no tracking. Get under Discord, Slack, and Twitter size limits with adjustable quality and frame-skip controls.

network out: 0 bytes

$ tips

  • Discord: aim for under 10 MB (free) or 50 MB (Nitro). Quality 15-20 usually works.
  • Twitter / X: aim for under 15 MB (web) or 5 MB (mobile). Quality 10-15 + frame-skip 2 if needed.
  • Slack: 1 GB limit, so just aim for reasonable file size. Quality 20 is a good default.
  • Frame-skip 2 cuts animation in half but rarely looks worse for short reaction GIFs.
  • To verify nothing is being uploaded, open DevTools → Network tab before dropping a file. The tab stays empty.

How offline GIF compression works

This page uses gif.js, an open-source GIF encoder that runs entirely in your browser via Web Workers. The compressor decodes your GIF's frames, optionally skips some, then re-encodes the result at the quality you choose. No data leaves your device.

Two levers: quality and frame-skip

Quality (1-30): lower numbers = smaller file = more visual artifacts. Higher numbers = larger file = closer to original. 1 is the most aggressive, 30 is the highest. Default is 20.

Frame-skip (1-5): 1 = keep every frame (no skipping). 2 = keep every 2nd frame. 3 = keep every 3rd frame. Higher numbers give smaller files but choppier animation. Default is 1.

The combination of these two gives you full control. For most use cases, quality 15-20 with frame-skip 1-2 gives the best result.

Why this is the most private way to compress a GIF

Most "free GIF compressor" websites work by uploading your GIF to their server, processing it there, and sending the compressed version back. This works for memes and reactions, but is a problem if your GIF contains:

  • Error messages or screenshots from private work
  • Personal moments captured as GIFs
  • Internal communications you don't want on a third-party server
  • Anything you wouldn't share via email with a stranger

This tool runs entirely in your browser. The GIF never leaves your device. There is no upload endpoint. The architecture itself makes leakage impossible — not because we promise to be careful, but because there is nothing to be careful with.

How to verify it's really offline

You don't have to trust us. Verify it yourself:

  1. Open your browser's DevTools (right-click → Inspect, or F12).
  2. Switch to the Network tab and clear it.
  3. Drop a GIF onto the compressor above.
  4. Watch the Network tab — it stays empty during compression. No XHR, no fetch, no WebSocket. Nothing.

Alternatively: load this page, then turn off your wifi. The compressor still works because everything it needs is already in your browser. If it needed a server, it would stop working when you go offline.

When to use GIF vs WebP for animations

GIFs remain the universal standard for animations across the web — they work everywhere, including in email, on social media, and in chat apps. WebP animations are 25-35% smaller but are not universally supported (Safari added support in 2024, but some platforms still don't render them).

  • Use GIF for Discord, Slack, Twitter, email, older browsers, anywhere compatibility matters.
  • Use WebP for your own website (faster page loads), modern apps, and any context where you control the rendering.

For converting animations to WebP, our Image to WebP tool handles the conversion.

Limits and tips

  • Animated GIFs are limited by browser decoding: the engine extracts the first frame as a static representation. For full animation control, the tool uses gif.js to re-encode the original frames.
  • Very large GIFs (50+ MB, 1000+ frames) may take 30+ seconds to process. The progress bar shows real-time status.
  • The compressed GIF preserves the original loop count and per-frame timing.

Frequently asked questions

Is GIF compression really offline?

Yes. The GIF compressor uses gif.js to re-encode frames in your browser. Your GIF never leaves your device. You can verify this by opening DevTools → Network tab before dropping a file — it stays empty during the entire compression process.

How much can a GIF be compressed?

Typical results: 30-70% size reduction with default settings. Frame-skipping (keeping every 2nd or 3rd frame) gives bigger reductions but makes animation choppier. Lowering quality (1-10) gives bigger reductions but introduces more artifacts.

What is frame-skipping and should I use it?

Frame-skipping removes intermediate frames from the animation. Keep every 2nd frame = animation plays at half speed. Keep every 3rd = one-third speed. For Discord reactions and short memes, frame-skipping 2 is usually invisible.

What quality level should I use?

The quality slider ranges from 1 (most compressed, lowest quality) to 30 (least compressed, highest quality). Start with 20 for most GIFs. For Discord, 15-20. For visual fidelity, 25-30. For maximum compression, 5-10.

Will my GIF loop and timing be preserved?

The loop count and per-frame delays are preserved. The compressed GIF will play at the same speed and loop the same number of times as the original.

Is this GIF compressor safe for sensitive GIFs?

GIFs are rarely sensitive, but the same architecture applies. If you have a private GIF, this tool never transmits it off your device. We only collect anonymous, cookieless pageview analytics via Plausible.

Does this work for Discord, Slack, and Twitter?

Yes. Discord's free tier limits GIFs to 10 MB. Twitter/X limits GIFs to 15 MB on web, 5 MB on mobile. Most user-shared GIFs on these platforms are 1-5 MB; this compressor gets them well under the limits with quality 15-20.