GIF Resizer
Plenty of GIF resizers upload your file to a server, and a resized GIF can come back flattened to a single frame or smeared, because a GIF frame is usually only the rectangle that changed since the last one. This tool decodes the file in this browser tab, composites every frame in order with its transparency and disposal rules applied, redraws each whole frame at the size you ask for, and writes a new GIF here. The per-frame delays come through in the same order they went in, so the animation runs for exactly as long as it did before, and the loop count is read out of the file's own loop block rather than assumed. You choose how the pixels are picked: a smooth average of everything a new pixel covers, which suits photographs and screen captures, or nearest neighbour, which takes the single pixel underneath and keeps pixel art and small text crisp. The width and height sit on the first screen with an aspect lock, so one side drives the other and nothing is stretched.
Drop a GIF here, or choose one below.
Every frame is decoded, composited and written again in this tab.
· or drop one anywhere on the stage
No GIF open yet. Choose one, or drop it on the stage.
Smooth averages every source pixel a new pixel covers, which suits photographs and screen captures. Nearest takes the single pixel under it, which is what keeps pixel art and small text crisp. Enlarging repeats pixels rather than inventing detail, so a GIF made bigger than it was recorded will look soft either way. The ceiling is 600 frames and 25 million pixels a frame, because every frame is unpacked to full size in the memory of this tab while it works.
Common questions
- How do I resize a GIF without losing the animation?
- Open the GIF, type the width you want, and the height follows while the aspect is Locked. Every frame is decoded and rebuilt, not just the first, so what you download is still an animation. The one thing that makes this work is compositing: a GIF frame usually stores only the rectangle that changed, so the tool draws each frame onto a running canvas, applies the frame's disposal rule, and resizes the whole picture rather than the patch. Resizing those patches on their own is what makes an animation smear or leave trails, and it is a common reason a resized GIF looks broken.
- Are the frame timings and the loop kept?
- Yes, and both are carried rather than recalculated. The delay on every frame is passed through unchanged and in the same order, so the animation runs for the same length of time at the new size, and both panes print that duration. The loop setting is read from the file's own loop block: a GIF that says it repeats forever is written back repeating forever, one that names a count keeps that count, and one that carries no loop block at all is written to play once instead of being quietly set to loop.
- Should I choose smooth or nearest neighbour?
- Smooth takes the average of every source pixel that a new pixel covers, weighting the colour by how opaque each one is so a see-through neighbour cannot drag an edge towards black. That is the right choice for photographs, video captures and screen recordings. Nearest neighbour takes the single pixel the new one lands on and does no blending at all, which is what keeps pixel art, sprites, dithered art and very small text readable instead of turning them into a blur. Enlarging repeats pixels under either rule, because there is no extra detail in the file to invent.
- Why do the colours shift slightly after resizing?
- Because a GIF frame can hold at most 256 colours, and averaging pixels while shrinking creates colours that were not in the original palette. Each output frame therefore gets a fresh 256 colour palette chosen from its own resized pixels, and each pixel is mapped to the nearest entry without dithering, so a large area of flat colour or a soft gradient can move by a shade. Transparency is stored as a single bit in a GIF, not as a fraction, so a softened edge over a transparent background lands on either fully see-through or fully solid. Nearest neighbour avoids both effects on pixel art, because it never blends two colours into a third.
- Is my GIF uploaded anywhere?
- No. The file is read by a JavaScript GIF decoder running in this tab, resized by this page's own code, and written back out by a JavaScript GIF encoder here. There is no upload, no queue, no account and no request of any kind: no byte of the animation reaches a server, an analytics call or an error report. The only thing kept between visits is whether you chose smooth or nearest, stored in this browser, and the platform's Start over button clears that.
- What are the limits, and why does a local tool have any?
- 600 frames, and 25 million pixels in a single frame, which is roughly 5000 by 5000. They exist because decoding a GIF expands it: each frame becomes a full canvas of red, green, blue and alpha bytes in memory while the work runs, and the resized copy sits beside it. Past that a phone stops responding rather than finishing. Nothing is uploaded either way, so the ceiling is this machine's memory rather than a server's patience, and a file over either limit is refused with the number it actually reached instead of a frozen tab. A long run also has a Cancel button that really stops it.
- What size should I make a GIF for an emoji or an avatar?
- Type the exact pixel size the platform asks for and let the aspect lock work out the other side. A square target like 128 by 128 on a wide GIF means turning the lock off, which is allowed, and the picture will be squeezed rather than cropped, so it is usually better to set the long side and accept the shorter one. The resized file is measured after it is written, so the size beside the result pane is the real one rather than an estimate. If the file still needs to be smaller after resizing, the GIF compressor on this site cuts the palette and thins frames as well.
Every frame is composited in order before it is resized, so the animation, the per-frame delays and the loop count come through unchanged. A GIF holds at most 256 colours per frame, so re-encoding re-picks that palette and flat colours can shift slightly: choose nearest neighbour for pixel art.