Animated GIFs get big fast. A ten second screen recording turned into a GIF can be 20 MB; a reaction GIF saved from the web can be too large for a chat app's upload limit; a product animation can make an email slow to open. GIF is an old format with simple compression, so the usual "save at a lower quality" slider does not exist. Making a GIF smaller means changing what is inside it: fewer colors, fewer pixels, fewer frames, and less repeated information between frames.
This compressor does all four. It decodes your GIF frame by frame, rebuilds each full frame exactly as a browser would show it, then encodes a new GIF with your settings. You see the original and the result side by side with their sizes. Everything runs in your browser; the GIF is never uploaded.
Why GIF files are so large
GIF dates from 1987, and its animation support from 1989. It compresses each frame with LZW, a lossless method that works well on flat areas of one color and badly on photographic detail, noise and gradients. Each frame can use at most 256 colors. And unlike video, a GIF has no way to describe motion; the only shortcuts are storing a smaller rectangle of the frame or making unchanged pixels transparent. So a GIF made from a phone video, with grain and slight camera shake in every frame, ends up storing nearly every pixel of every frame. That is why a few seconds can weigh many megabytes, and why the settings below work: they reduce exactly the things LZW struggles with.
How to compress a GIF
- Drop a .gif file into the box above, or click it to choose one. The original appears with its size, dimensions, frame count and length.
- Click a quick preset, Light, Balanced or Strong, or set the options yourself.
- Click Compress GIF. A progress bar counts through the frames.
- Compare the two previews and the numbers: before, after, the percentage saved and the frame count.
- If it is still too big, try stronger settings and compress again. When you are happy, click Download compressed GIF.
The settings, from biggest saving to smallest
| Setting | Options | Effect on size | Effect on looks |
|---|---|---|---|
| Store only the pixels that change | On or off, with a tolerance | Large for GIFs with a still background | None at tolerance 0; tiny color drift at higher values |
| Width | Original, 75%, 50%, 33%, custom px | Large: 50% width leaves about a quarter of the pixels | Smaller picture |
| Frames | Keep all, every 2nd, every 3rd, every 4th | Large: every 2nd frame removes about half | Motion gets less smooth; speed stays the same |
| Colors | 256, 128, 64, 32, 16 | Moderate | Banding in gradients and photos at low values |
The presets combine them: Light keeps full size, all frames and 256 colors and only stores changed pixels with a small tolerance. Balanced uses 75 percent width and 128 colors. Strong halves the width, uses 64 colors and keeps every second frame.
How "store only the pixels that change" works
In most animations, much of the picture stays the same from one frame to the next: a background behind a moving figure, the interface around a cursor in a screen recording, the static parts of a product shot. A plain GIF repeats all of those pixels in every frame. GIF also allows a frame to be partly transparent, so the previous frame shows through. The compressor uses that: for each frame after the first, pixels that have not changed are made transparent, and only the changed pixels are stored. Long runs of transparent pixels compress extremely well.
The Ignore tiny changes slider sets how different a pixel must be to count as changed. Video-based GIFs are full of tiny flickers from compression noise. At 0, every flicker is stored; at 8 to 16, invisible flickers are skipped and the file shrinks a lot more. Very high values can leave slight color trails in slow, subtle fades, so raise it step by step and check the preview.
In tests with a 480 by 360 animation of a ball moving across a gradient, changed-pixel storage at tolerance 8 cut the file by about two thirds while keeping every frame and the full size. Turning it off made the same GIF about three times larger than the original, because the original file already stored only the changed area of each frame. That is how much this one idea is worth.
One exception: if your GIF has transparent areas of its own, such as a sticker or a logo with no background, changed-pixel storage cannot be used, because transparent would then mean two different things. The compressor detects this and rebuilds such GIFs frame by frame, and tells you so. Width, colors and frames still work.
Tips by type of GIF
Screen recordings and app demos
Mostly static with small changes, so changed-pixel storage is the big win. Keep text readable: reduce width only as far as the text stays sharp, and use 128 or even 64 colors, since interfaces use few colors anyway. Keeping every 2nd frame is usually fine for clicks and scrolling.
GIFs made from video clips
The whole frame changes slightly in every frame because of camera movement and noise. Raise Ignore tiny changes to 16 to 24 so the static parts of the scene are not re-stored, reduce width, and drop frames for long clips. If the result is still large, a video file may be the better format.
Cartoons, stickers and illustrations
Flat colors compress well already. Fewer colors (64 or 32) often look identical, and Light or Balanced presets are usually enough. If the sticker has a transparent background, transparency is kept and the savings come from colors and width.
Photo slideshows
Every frame is a different photo, so changed-pixel storage helps little. Width and frame count matter most. Keep 256 colors to avoid banding in skin and skies.
Size targets
| Where the GIF goes | Target | Usually works |
|---|---|---|
| Discord (free account) | Under 10 MB upload limit | Balanced, or Strong for long clips |
| Email newsletter | Under about 1 MB | 480 to 600 px wide, 128 colors, every 2nd frame for long ones |
| Website or blog | As small as looks right, often 1 to 3 MB | Balanced; consider a video for anything longer |
| Slack, Teams, WhatsApp | A few MB | Balanced |
| Forum or GitHub README | Under 5 to 10 MB depending on the site | Width 600 or 800, 128 colors |
Discord lowered the free upload limit to 10 MB in late 2024. Other limits change and vary by account type, so check the platform's current help page if you are close to a limit.
A sensible order of attempts
- Start with Light. If the GIF has a still background, this alone can save 30 to 70 percent with no visible change.
- Still too big? Reduce the Width to 75 percent, then 50 percent. Many GIFs are shown smaller than their real size anyway.
- Next, Colors to 128 or 64. Screen recordings, cartoons and text handle this well; photos less so.
- Last, Frames: keep every second frame. The animation keeps its speed because each kept frame is shown for the time of the frames it replaces, but motion is less smooth.
If the result is larger than the original, the compressor says so and suggests stronger settings. That happens with GIFs that were already optimized by a desktop tool. In that case, keep the original or use a smaller width.
Worked example
A 12 second screen recording was exported as a GIF: 960 by 540 pixels, 180 frames, 14.6 MB. It needs to go into a Discord channel on a free account.
- Light preset: the interface barely changes between frames, so the file drops a lot while staying full size. Check the after size; if it is under 10 MB, done.
- If not, Balanced: 720 pixels wide, 128 colors. Text in the recording stays readable at that width.
- If it must be smaller still, keep every 2nd frame. A screen recording at 15 frames per second becomes 7.5, which still shows clicks and scrolling clearly.
Each attempt takes seconds, and the original stays untouched, so you can try as many combinations as you like.
What stays the same
- Timing: each frame keeps its delay. Dropped frames add their time to the kept frame before them.
- Looping: the loop setting of the original GIF is kept, so a GIF that loops forever still loops forever.
- Disposal rules: the decoder rebuilds every frame the way a browser shows it, including GIFs that only store parts of frames, so nothing jumps or smears in the output.
- Very short delays: frames shorter than 0.02 seconds are shown by browsers as 0.1 seconds. The compressor writes that real speed, so the result plays as you saw it before.
Troubleshooting
- "That is not a GIF file": the compressor only accepts GIFs. For JPG, PNG or WebP use the image compressor.
- "Could not read this GIF": the file is damaged or only partly downloaded. Download it again, or open it in a browser tab to check it plays.
- Faint trails or smudges in the result: Ignore tiny changes is set too high for this animation. Lower it to 4 to 8.
- Colors look blotchy: too few colors for a photographic GIF. Go back to 128 or 256 and save size with width or frames instead.
- The tool warns the GIF is very large: it has many frames at a big size. Choose 50 percent width or keep every 2nd frame before compressing, or use a computer with more memory.
- The compressed GIF plays only once: the original was set to play once, and the compressor keeps the original loop setting. GIFs without a loop setting play once in browsers.
When a GIF is the wrong format
For long clips, a GIF will always be heavy. A short MP4 or WebM video of the same clip is often a tenth of the size with better quality, and most websites, chat apps and social networks play video directly. Use GIF where it is needed (email, some chat apps, places that do not accept video), and video elsewhere. If you run your own site, smaller files make pages faster, and AM Jarvis's AI Site Builder builds niche sites where you control those choices.
To make a new GIF from scratch, use the GIF maker for images or the video to GIF converter for clips. For still images, the image compressor shrinks JPG, PNG and WebP files.
Compressing on a phone
The compressor runs in mobile browsers too. Tap the drop box to pick a GIF from your files or downloads; on an iPhone, GIFs saved to Photos can be chosen from the photo library. Compression takes longer on a phone than on a laptop because every frame is rebuilt and analyzed, so a long GIF may need a minute. Stay on the page while the progress bar runs. When it finishes, the download goes to your Files or Downloads app, ready to send in a chat. For GIFs with hundreds of frames, start with 50 percent width; it makes the work four times lighter for the phone as well as making the file smaller.
Limits and privacy
Large GIFs take memory to decode, because every frame is rebuilt at full size. GIFs with hundreds of frames at large sizes may be slow on phones; the tool warns when a GIF is very large and you can always cancel. The GIF is processed entirely in your browser using two open source libraries, gifuct-js for decoding and gifenc for encoding. Nothing is uploaded, and no watermark is added.