Resize a GIF online for free by exact pixels, percentage or presets. An edit to an animated GIF saves a still of its first frame; save as GIF, PNG, JPG, WebP and more.
GIFs are the universal currency for short loops — reactions, screen recordings, micro-tutorials, UI demos. The format dates to 1987 and uses LZW compression with a 256-colour palette per frame, which is why even a 3-second clip can balloon to 5–20 MB. Resizing is the single biggest lever for cutting that file size, because GIF stores pixel data per-frame: halving width and height removes ~75% of pixels across every frame at once.
For the animated cases in that list, do the rescale in Compress GIF — its Image resolution setting scales every frame together and outputs a playing GIF, with palette and frame-drop levers alongside. For the still-image cases, the editor on this page is the shorter path.
| Platform / use | Max file size | Recommended dimensions | Notes |
|---|---|---|---|
| Slack custom emoji | 128 KB | 128×128 | Up to 50 frames; square + transparent works best |
| Discord server emoji | 256 KB | 128×128 | Animated emoji require Server Boost level 1+ |
| Discord free upload | 20 MB (since August 2026) | 640×360 or smaller | Was 8 MB (long-standing), raised briefly to 25 MB, lowered to 10 MB in September 2024, then raised to 20 MB in August 2026 |
| Discord Nitro Basic / Nitro | 50 MB / 1 GB | up to 1080p | Resize for legibility, not size |
| Twitter/X (desktop) | 15 MB | 1280×720 max | Mobile uploads often fail above ~5 MB |
| WhatsApp sticker (animated) | 500 KB | 512×512 | Must be WebP; convert from GIF first |
| Reddit post | re-encoded to MP4 | 1920×1080 max | Reddit hosts as video regardless |
| Property | Static image (JPG/PNG) | Animated GIF |
|---|---|---|
| Frames processed | 1 | All frames (often 10–100+) |
| Compression | DCT (JPG) or DEFLATE (PNG) | LZW per frame, 256-colour palette |
| Disposal handling | n/a | Coalesce expands optimised frames before resize |
| Half-dimensions saving | ~50–60% file size | ~60–75% file size (compounds across frames) |
| Common artefact | Edge softening | Banding from palette mismatch between frames |
Resizing a full animation means coalescing each frame to a complete canvas, scaling it, then re-quantising back to a 256-colour palette and re-applying frame disposal — that's why "just changing width/height" can sometimes grow the file when frame optimisations get rebuilt. On XConvert that whole-animation pass lives in the GIF compressor, which pairs the rescale with colour and frame reduction. The editor on this page takes the simpler static path: it scales the first frame and saves it as a still image.
No. The editor here resizes the GIF as a still image: it works on the first frame and saves it as a still GIF by default, or as PNG, JPG, WebP, BMP, TIFF, ICO, AVIF, PSD or PPM if you change Save as. None of these keep the animation: the editor says so as soon as an animated GIF opens ("Animated GIF: an edit here keeps only the first frame."), and downloading the file without an edit gives back your original animated GIF. If you need the loop preserved, resize with Compress GIF: set its Image resolution to a percentage or preset and every frame is rescaled together, keeping the timing, loop count, and transparency.
That happens on whole-animation rescales when the source was heavily optimised with delta frames (only the changing pixels stored each frame) and the resize step expanded every frame back to a full canvas. The fix lives in Compress GIF, where the rescale runs: cut the colour palette, lower the image quality, or set a Max file size cap there and the optimisation is re-introduced after the resize.
128×128 pixels, square, with up to 50 frames. Stay under 128 KB total — Slack rejects anything 1 byte over. For a static emoji, enter 128 into W and H here and download as PNG. For an animated emoji, do the whole job in Compress GIF — 50% resolution plus a 64-colour palette fits moderately complex animations, and a frame-drop pass covers the rest.
128×128, square, ≤256 KB. Animated server emoji slots require at least Server Boost level 1. Free Discord uploads of regular GIF files now cap at 20 MB (raised from 10 MB in August 2026); for inline GIFs to auto-play in chat the file should be under ~256 KB or it loads as a static thumbnail.
Roughly 60–75% smaller. Cutting width and height in half drops pixel count to a quarter, but GIF's LZW compression doesn't shrink linearly with pixels — neighbouring-pixel patterns compress better at smaller sizes, and the saving compounds across every frame. A 1080p 8 MB loop usually lands around 2–2.5 MB at 540p with the same palette.
If the destination is a webpage or modern chat client, GIF to MP4 or GIF to WebP typically gives 5–20× smaller files at higher quality. Stick with GIF only when the target needs the literal .gif extension — Slack/Discord emoji slots, classic forum embeds, or platforms that strip <video> tags. For the reverse direction (recording → GIF), MP4 to GIF and WebM to GIF are the usual entry points.
GIF only carries 256 unique colours per frame. When you scale a photographic source down to 128×128, the resampler picks new pixel values that don't exist in the original palette, and re-quantising back to 256 colours introduces banding. Reducing the palette to 32 or 64 colours in Compress GIF actually helps — the encoder gets a chance to choose a palette that matches your shrunk image rather than carrying over the original's 256 entries.
Yes — they're two tabs of the same editor. Switch to the Crop tab, drag the crop box (or pick a preset like 1:1), then come back to Resize and scale the cropped result. Crop before you resize: cropping first means you're not downscaling pixels you're going to discard anyway. There's also a standalone Crop GIF page that opens on the Crop tab directly.
No account, no watermark, and no payment gate — the editor is free to use. Nothing is published or shared: there's no public link generated, and the only output is the file you download.