GIF Compressor
This GIF compressor shrinks animated GIFs to the size you need, from a 128 KB Slack emoji to a 20 MB Discord upload or any number you type. Pick a target and ProMedia works through lossless re-packing, fewer colours, frame skipping and, only if nothing else fits, smaller dimensions, keeping the first result that fits. Your GIFs are compressed in the browser and never uploaded.
- Runs on your device
- Canvas · GPU
- WASM codecs
- Works offline
Updated
Drop your GIFs here
How to compress a GIF
Step 1: Drop one or more GIFs on the box above.
Step 2: Choose a Target: Slack or Discord emoji, Discord sticker, 1 MB, 5 MB, Discord upload or Custom… in KB. Or switch Compress by to Manual.
Step 3: Press Compress.
Step 4: Check the result card: new size, saving, frames kept and colours used, then download.
Good to know
Formats
Batch-friendly: add many files and they are processed one after another — if one fails, the rest still finish.
How it runs
- GPU canvas
- Pixels are drawn and composited with the GPU-accelerated canvas.
- WebAssembly codecs
- Images are encoded with Squoosh-grade codecs (MozJPEG, WebP, AVIF, OxiPNG, JPEG XL). Each codec loads only when you use it.
| Platform | Plan / type | Limit |
|---|---|---|
| Slack | Custom emoji | 128 KB |
| Discord | Custom emoji | 256 KB |
| Discord | Sticker | 512 KB |
| Discord | Free upload | 20 MB |
Checked 11 October 2026. Platforms change their limits — check the official help pages if a number looks different.
How the GIF compressor reaches a target size
In Target size mode, this GIF optimizer tries one step at a time, starting with the changes you cannot see, and stops at the first result that fits about 4% under your limit. The table shows the order and what each step costs.
| Step | What changes | What you notice |
|---|---|---|
| 1. Lossless re-pack | Exact colours kept; only the pixels that change between frames are stored | Nothing |
| 2. Smarter frame storage | Differences of up to 4 levels (out of 255) count as unchanged | Practically nothing |
| 3. 128 colours | Palette halved; small changes up to 7 levels ignored | Slight banding on gradients |
| 4. 64 colours | Palette halved again; changes up to 10 levels ignored | Visible banding on photos, little on graphics |
| 5. Skip every 3rd frame | Two of three frames kept; their delays absorb the skipped ones (GIFs with 6+ frames) | Slightly choppier motion, same length |
| 6. Skip every 2nd frame | Half the frames kept, same total length (GIFs with 4+ frames) | Choppier motion |
| 7. Scale down | The largest size that fits is searched for, in up to 7 tries | A smaller picture |
Why are GIF files so large?
GIF was designed in the 1980s for simple graphics. Each frame is stored as a picture of up to 256 colours and packed with LZW, which works well on flat areas and badly on noise, film grain and the dither patterns used to fake extra colours. Unlike a video codec, it cannot follow a moving object from frame to frame; it can only skip pixels that stayed exactly the same.
That is why a few seconds of camera footage can weigh several megabytes as a GIF, and why the biggest savings come from fewer colours, fewer frames or fewer pixels.
How to compress a GIF without losing quality
Only the first two steps are lossless or close to it. They help most on GIFs exported by apps that store every frame whole or use more palette entries than they need, and you will see them on the result card as “lossless” colours. If your target is far below the original size, something visible has to give.
To keep the picture as clean as possible, give the compressor less to do first: cut away borders with crop GIF, lower the dimensions yourself with the GIF resizer, then compress. A smaller, sharp GIF looks better than a large one with 64 colours.
Manual mode: colours, frame skip and scale
Switch Compress by to Manual to set the trade-off yourself. The three controls multiply: half the frames at half the scale leaves an eighth of the pixels to store.
| Setting | Range | What it does | Size effect |
|---|---|---|---|
| Colours | 2 to 256 (default 128) | Builds one shared palette with this many colours | Fewer colours, smaller file; below 64 photos band heavily |
| Frame skip | None, every 2nd, every 3rd | Drops frames and adds their time to the frame before, so the GIF keeps its length | About half or two thirds of the frames remain |
| Scale | 25% to 100% | Resizes every frame | 50% leaves a quarter of the pixels |
Compress a GIF to 256 KB for an emoji
Emoji limits are tiny: 256 KB on Discord and 128 KB on Slack. Discord recommends 128×128 px emoji, so shrink the GIF to that size with the GIF resizer first; at 128 px a frame has about 7% of the pixels of a 480 px square frame, which leaves room for more colours and every frame.
Then choose the emoji target here. For stickers and the other Discord limits in one place, use compress GIF for Discord.
GIF compressor or another format?
If the destination accepts video, a GIF is the wrong format to compress. GIF to MP4 usually removes most of the size with better colour, and GIF to WebP keeps transparency and loops by itself on websites. Compress the GIF itself when only a GIF will do: emoji, stickers, email signatures, documentation and chats that show GIFs inline.
| Result | Size | What changed |
|---|---|---|
| GIF compressor, 256 KB target | 193 KB | 64 colours, 23 of 45 frames kept, full 480×270 |
| GIF resizer at 50% | 189 KB | 240×135, all 45 frames |
| GIF to MP4 (Balanced) | 244 KB | Millions of colours, all frames, but a video |
| GIF to WebP (80% quality) | 458 KB | All frames, full colour, transparency kept |
Tips & troubleshooting
Getting “file too large” in Discord? Free accounts can now upload 20 MB per file (raised from 10 MB on 14 Aug 2026), so the Discord upload target is usually enough.
Compressing a batch for the same limit? Drop them all at once; each GIF gets its own search for the best fit.
If the result looks choppy, the compressor had to skip frames. Try a shorter GIF or a smaller scale in Manual mode instead.
Making a new GIF from a video? Choosing a lower width and frame rate in video to GIF beats compressing a big GIF later.
GIF Compressor FAQ
Which target should I pick for Slack or Discord?
Slack emoji must stay under 128 KB. Discord allows 256 KB for an emoji, 512 KB for a sticker and 20 MB per upload on a free account. Pick the matching target and the result card confirms whether it fits; compress GIF for Discord lists only the Discord targets.
How do I compress a GIF without losing quality?
Pick a target close to the current size: the first two steps re-pack the GIF without visible changes. For bigger cuts, crop and resize the GIF yourself first, so the compressor does not have to remove colours or frames.
How do I compress a GIF to 256 KB for an emoji?
Resize it to about 128×128 px with the GIF resizer, then choose the Discord emoji (256 KB) target here. Small dimensions leave room for full colour and smooth motion within the limit.
How do I reduce a GIF’s file size?
Choose a target size and press Compress; ProMedia reduces colours, skips frames and, only if needed, scales the GIF until it fits. Or use Manual mode to pick the colours, frame skip and scale yourself.
Why are GIF files so large?
GIF stores each frame as a 256-colour picture and cannot track motion like a video codec, so every moving pixel is stored again in each frame. Noise, grain and dithering make that worse.
Why did my GIF get smaller in pixels?
Because fewer colours and skipped frames were not enough to reach your target, so the compressor scaled the GIF down, looking for the largest size that still fits. Choose a higher target, or use Manual mode to keep the full size.