AM Jarvis

GIF Compressor: Make Animated GIFs Smaller

Shrink animated GIFs by cutting colors, width and frames and storing only changed pixels, with a before and after view.

Drop a GIF here or click to choose Animated or still GIF. It is decoded and rebuilt in your browser, never uploaded.

Runs in your browser. Your GIF is never uploaded. Decoding uses the open source gifuct-js library and encoding uses gifenc.

In short

Drop a GIF into the compressor and press Balanced or Strong, or set the width, colors and frames yourself. Keep Store only the pixels that change on. Click Compress GIF to see the new size next to the original, with the saving in percent, then download. The GIF is decoded and rebuilt in your browser and never uploaded.

On this page
  1. Why GIF files are so large
  2. How to compress a GIF
  3. The settings, from biggest saving to smallest
  4. How "store only the pixels that change" works
  5. Tips by type of GIF
  6. Size targets
  7. A sensible order of attempts
  8. Worked example
  9. What stays the same
  10. Troubleshooting
  11. When a GIF is the wrong format
  12. Compressing on a phone
  13. Limits and privacy

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

  1. 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.
  2. Click a quick preset, Light, Balanced or Strong, or set the options yourself.
  3. Click Compress GIF. A progress bar counts through the frames.
  4. Compare the two previews and the numbers: before, after, the percentage saved and the frame count.
  5. 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

SettingOptionsEffect on sizeEffect on looks
Store only the pixels that changeOn or off, with a toleranceLarge for GIFs with a still backgroundNone at tolerance 0; tiny color drift at higher values
WidthOriginal, 75%, 50%, 33%, custom pxLarge: 50% width leaves about a quarter of the pixelsSmaller picture
FramesKeep all, every 2nd, every 3rd, every 4thLarge: every 2nd frame removes about halfMotion gets less smooth; speed stays the same
Colors256, 128, 64, 32, 16ModerateBanding 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 goesTargetUsually works
Discord (free account)Under 10 MB upload limitBalanced, or Strong for long clips
Email newsletterUnder about 1 MB480 to 600 px wide, 128 colors, every 2nd frame for long ones
Website or blogAs small as looks right, often 1 to 3 MBBalanced; consider a video for anything longer
Slack, Teams, WhatsAppA few MBBalanced
Forum or GitHub READMEUnder 5 to 10 MB depending on the siteWidth 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

  1. Start with Light. If the GIF has a still background, this alone can save 30 to 70 percent with no visible change.
  2. Still too big? Reduce the Width to 75 percent, then 50 percent. Many GIFs are shown smaller than their real size anyway.
  3. Next, Colors to 128 or 64. Screen recordings, cartoons and text handle this well; photos less so.
  4. 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.

  1. 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.
  2. If not, Balanced: 720 pixels wide, 128 colors. Text in the recording stays readable at that width.
  3. 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.

Frequently asked questions

How do I reduce the size of a GIF?

Drop the GIF in, choose the Balanced preset and click Compress GIF. Compare the before and after sizes. For a bigger saving, lower the width to 50 percent, reduce colors to 64 and keep every 2nd frame. Download when the size and look are right.

Does compressing a GIF reduce quality?

Storing only changed pixels at a low tolerance is close to lossless. Reducing width, colors or frames does change the look: smaller picture, some color banding, or less smooth motion. Try the Light preset first, which keeps full size, all frames and 256 colors.

Why did my GIF get bigger?

Some GIFs were already optimized by desktop software, and rebuilding them at full settings cannot beat that. The tool tells you when the result is larger. Use a smaller width, fewer colors or fewer frames, or keep the original.

Will the GIF play at the same speed?

Yes. Frame delays are kept, and when you drop frames, their time is added to the frame shown before them, so the total length stays the same. Motion becomes less smooth, but the animation does not speed up.

Can I compress a GIF with a transparent background?

Yes. Transparency is kept. Because transparent pixels are already used by the GIF itself, changed-pixel storage is turned off for such GIFs, so the savings come from width, colors and frames instead.

How do I get a GIF under 10 MB for Discord?

Start with the Balanced preset. If the result is still above 10 MB, set the width to 50 percent and keep every 2nd frame. Long or large GIFs may need both, and a short video clip is another option for long recordings.

Is there a file size limit?

There is no fixed upload limit because nothing is uploaded. The limit is your device memory: every frame is rebuilt at full size during compression. Very large GIFs with hundreds of frames may be slow on phones, so use a computer for those.

Is my GIF uploaded to a server?

No. The GIF is decoded and re-encoded in your browser using the open source gifuct-js and gifenc libraries. Nothing is sent to a server, and no watermark is added to the result.