Resize GIF animations

Resize an animated GIF and keep it animated. Every frame is resized, frame timing and loop behaviour are preserved, and nothing leaves your browser.

Drop a GIF

Resize GIF — Free, Fast & Private

Most online image resizers will happily accept a GIF and hand you back a still. The reason is technical and invisible until it bites: the standard way a browser reads an image decodes only the first frame, so a generic resizer flattens your animation to a single picture and reports success. This tool takes the slower, correct route. It parses the GIF's actual block structure, walks the animation frame by frame, resizes each frame, and writes a new GIF — so what you download still moves. Frame delays are copied over exactly, the loop count (play once, loop N times, loop forever) survives, and if the source uses palette transparency, the output keeps a real transparent palette index rather than inventing black fringes. All of it happens on your device; the file never uploads.

Why resizing is the best GIF diet there is

A GIF's file size is roughly proportional to its pixel count multiplied by its frame count, and pixel count falls with the square of the width. Take a 800px-wide screen recording down to 480px and each frame carries about a third of the pixels — across two hundred frames, that compounds into a dramatically smaller file with no frames dropped and no timing changed. This matters because GIF has no quality slider: it is a lossless format over a limited palette, so unlike JPEG there is no "compress at 70%" lever to pull. Dimensions are the honest lever. If a GIF is too big for a Discord upload, a README, or an email, resizing it down is almost always the fix that costs the least visually — the motion is what people watch, not the pixel dimensions.

What "every frame kept" actually involves

GIF frames are not independent pictures. Many encoders store only the pixels that changed since the previous frame, plus a "disposal" instruction saying what to do with the old ones — keep them, clear them, or restore an earlier state. Resize those patch frames naively and the animation shreds into flickering rectangles. This tool composites each frame onto a running canvas exactly as a GIF player would, honouring all the disposal modes, and resizes the composited result — so partial-update GIFs, the majority of real-world screen recordings, come out looking right. It then re-quantizes each resized frame to a fresh palette and streams it into the output file one frame at a time, which is why a 100 MB input stays within a browser tab's memory budget instead of exploding into gigabytes of decoded frames.

Downscale only — upscaling a GIF is a trap

The width presets stop at your GIF's own width; anything at or above it is disabled, because this tool never upscales. That is a deliberate refusal, not a missing feature. A GIF is limited to 256 colours per frame to begin with; stretch those pixels larger and interpolation smears the hard palette edges into mush, then re-quantization bands the smears. The result is a bigger file that looks worse — the worst trade in image editing. If you genuinely need a small animation displayed larger, do it in CSS or the video editor where the GIF will be used, where scaling happens at display time and costs no bytes. And if what you actually want to enlarge is a still image, the AI upscaler is built for that.

Long GIFs take a while, and the progress bar is real

Every frame is decoded, composited, resized, re-quantized and re-encoded. That is honest work and it takes honest time: a 50-frame reaction GIF finishes in a blink, but a 500-frame screen recording can take from several seconds to a minute depending on your device, and the tool warns you up front when it sees a frame count in that range. The progress bar counts actual frames processed, not a decorative animation. Because the work runs in a background thread on your own machine, the tab stays responsive — and unlike an upload-based service, there is no queue, no per-file quota, and a retry at a different width costs only the re-encode time.

The preview is the first frame, on purpose

After you drop a file in, the preview shows the first frame as a still image, with the frame count and duration printed beside it. That is deliberate: a moving preview under a resize decision reads as if it were the output, when it is only the input. The readout also tells you when a file is a single-frame GIF — plenty of images wear the .gif extension without animating, and for those the still-image image resizer gives you more control over output format. If the animation itself has dead weight — intro frames, trailing padding — resizing will not remove it; this tool changes dimensions, never frame count or timing. What comes out plays exactly like what went in, smaller.

How it works

  1. Drop in your GIF: GIF only — the tool verifies the actual file bytes, not just the extension, and tells you the frame count, dimensions and duration before anything happens.
  2. Pick a target width: Preset widths from 1920 down to 320px. Widths at or above the source are disabled — this tool only downscales, because upscaling a palette-limited GIF only makes it blurrier and bigger.
  3. Resize every frame: Frames are composited, resized and re-encoded one at a time in your browser. The per-frame progress bar is real; long recordings take longer.
  4. Download the animated result: The output is a GIF that still animates — same frame timing, same loop behaviour, smaller dimensions and, almost always, a much smaller file.

Frequently asked questions

Does the resized GIF still animate?
Yes — that is the entire point of this tool. Every frame is resized and re-encoded, frame delays are copied exactly, and the loop count is preserved. Generic image resizers flatten a GIF to its first frame because that is all a browser canvas reads by default; this one goes through a dedicated animated-GIF engine instead.
Why can I not make my GIF bigger?
Upscaling is disabled by design. GIF frames are limited to 256 colours; enlarging them interpolates those hard palette edges into blur, and re-encoding then adds banding on top. You would get a larger file that looks worse. Scale the GIF up at display time (CSS, video editor) instead — it costs nothing and looks the same.
How much smaller will the file get?
File size tracks pixel count, which falls with the square of the width: half the width is roughly a quarter of the pixels per frame. Real savings vary with content — noisy video-derived GIFs shrink more than flat-colour ones — but width reduction is consistently the most effective size lever GIF has, since the format offers no quality dial.
Is my GIF uploaded anywhere?
No. The file is parsed, resized and re-encoded entirely in your browser — there is no server-side step and no network request carrying image data. That is also why there is no file queue and no daily limit; the only cost is your own device’s processing time.
Why does a long GIF take so long?
Every frame is individually decoded, composited (GIFs store partial-update frames), resized, re-quantized and written to the output. A 500+ frame GIF means 500+ rounds of that, which can take from several seconds to a minute depending on your hardware. The warning appears before you start, and the progress bar counts real frames.
Are frame delays and looping preserved?
Yes. Each frame’s delay is carried over unchanged, and the loop count — including "loop forever" and the no-loop case — is written into the output exactly as the source declared it. Transparency is preserved too, when the source actually uses it.
What is the maximum file size?
100 MB per GIF. The engine processes frames one at a time rather than decompressing the whole animation up front, which is what makes files that size workable inside a browser tab at all.

All Image Tools

Solutions by use case