GIF Compressor: Reduce Animated GIF File Size Online
The GIF Compressor makes an animated or still GIF file smaller by re-encoding every frame. The pixel size never changes, and all frames, their delays and the loop count are kept. You can use the free web tool without an account, but anonymous use needs a human check. Results depend on the picture, so the size you get will vary.
- The web tool handles one image at a time. Free use allows up to 5 MB per image.
- If the result is not smaller, the panel says so. Results vary with the picture.
- Animations are limited by frames and total pixels. See the limits section below.
Drop an image here
PNG, JPG, WebP, AVIF, GIF, BMP or TIFF, up to 5 MB
A GIF palette can have 256, 16, 4 or 2 colours. Fewer colours make a smaller file and a rougher picture.
Spreads the colour steps so gradients look smoother, with some noise. 100% is the default.
0 to 32. Pixels that hardly change from one frame to the next are reused, which makes the file smaller and can leave faint trails. 20 is the default.
Complete the human check to enable the button.
Result
Your GIF will appear here.
The free web tool takes images up to 5 MB, 30 per day. Signed in, the limit is 10 MB.
Retention: web-tool results are deleted after 10 minutes and no history is kept. API results are kept 1 day on the free plan and 7 days on Starter and Pro (30 days on Business).
No account needed
30 images per day for free, no watermark.
Same pixel size
Compression makes the file smaller without changing the width and height. Camera and location tags are not copied into the result.
Deleted automatically
Web tool results are removed after 10 minutes.
Privacy: what you submit is used only to make this file. The working copy is deleted when the job ends, the result after 10 minutes. See the privacy policy.
Do this from your code
The same request, built from the input and options above. Create an account to get an API key.
curl -X POST https://api.aiipworld.com/v1/render \
-H "Authorization: Bearer $AIIPWORLD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"html":"","output":"pdf","options":{}}'
# returns {"job_id": "...", "status": "queued"}; then poll:
curl https://api.aiipworld.com/v1/jobs/JOB_ID -H "Authorization: Bearer $AIIPWORLD_API_KEY"Batches
The web tool handles 1 image at a time. The API takes one request per image, so you can script as many as your plan allows.
Retention
Web-tool results are kept 10 minutes; free API results 1 day; Starter and Pro results 7 days; Business 30 days. The web tool allows 10 conversions per minute and 50 per day per visitor.
In one sentence
A free online tool that makes an animated or still GIF file smaller at the same pixel size, by choosing colours, dithering and frame loss or a target size in KB, and keeps every frame, delay and the loop count.
Key facts
- Input: GIF (also PNG, JPG, WebP, AVIF, BMP or TIFF), up to 5 MB in the free tool and 10 MB when signed in, and up to 16 MP (4096 x 4096) per frame; the type is read from the file content. Only GIF and WebP animations are kept.
- Output: a GIF by default with the same width, height, frames, frame delays and loop count; colours 256, 16, 4 or 2, dithering 0 to 100 percent, frame loss 0 to 32 (lossy), or a target size in KB found in at most 4 trial encodes; WebP (animated) and the original format are also offered. Lossless only re-optimises and can come out larger.
- Animation limits: up to 300 frames and 64 MP in total (frame width x height x frames) when signed in, 100 frames and 16 MP without an account; over the limit the job fails and the page suggests using only the first frame.
- In our test a generated 320 x 240 px, 20-frame clip saved as a 712 KB GIF became 453 KB at the defaults (36% smaller), 289 KB at 16 colours and 71 KB as an animated WebP; the test clip was generated by our scripts and results vary.
- The upload is deleted when the job ends and the result after 10 minutes; signed-in users pay 1 credit per image plus 1 credit for each started 10 MP of frames beyond the first 10 MP.
- Free without an account: up to 10 conversions per minute and 50 per day per visitor, no watermark. Signed in, each render costs 1 credit (100 free credits every month).
- Files are deleted automatically: 10 minutes after conversion without an account, 1 day with a free account.
- Developers can run the same render with POST https://api.aiipworld.com/v1/render and an API key (see the API docs page).
How it works
- Open the GIF Compressor and upload your GIF. The tool checks the type, size and pixel count, then shows a preview.
- Leave Output format on GIF and keep "Keep the animation" on.
- Check the defaults: 256 colours, dithering 100%, frame loss 20. Change them if you need a smaller file.
- Start the compression and read the result panel for the original and result size, percent saved, frames and loop.
- Download the result. Download links are short-lived, so save the file when it is ready.
Example output
How to use this GIF compressor
To compress a GIF, upload the file to the GIF Compressor. Before upload, the browser checks the type, size and pixel count and shows a preview. For an animated GIF it also counts the frames and shows "Animated GIF: N frames".
Leave Output format on GIF and keep "Keep the animation" on. The defaults are 256 colours, dithering 100% and frame loss 20. These are a place to start for most GIF files. Use the tool when you need to reduce GIF size for sharing.
Start the compression and read the result panel. It shows the original and result size, the percent saved, the frame count, the total time and the loop.
- If you need a smaller file, change the colours or frame loss and run it again.
- The web tool handles one image at a time.
What a GIF compressor does here
This GIF Compressor makes a GIF smaller by re-encoding every frame. It is the same compressor as the Compress JPG and Compress PNG pages, opened on GIF. Use it as a gif size reducer when an animation is too large to share.
The compression is lossy unless "Lossless" is ticked. It uses fewer colours, dithering and frame loss to make the file smaller. All frames, their delays and the loop count are kept.
The result panel also warns you when the result is not smaller or when a target size was not reached.
Colours, dithering and frame loss
GIF compression here is a balance between three settings. GIF uses a palette of at most 256 colours. You can choose 256, 16, 4 or 2 colours, and fewer colours usually means a smaller file with a rougher picture.
Dithering scatters pixels to imitate colours the palette does not have. It runs from 0 to 100 percent, and the default is 100. In our test clip, dithering changed the size very little: 448 KB at 0 against 453 KB at 100.
Frame loss reuses pixels that barely change from one frame to the next. It runs from 0 to 32, and the default is 20. A higher number gives a smaller file but can leave faint trails.
In our generated test animation, 16 colours with frame loss 20 gave 289 KB, 59% smaller than 712 KB. Results vary with the picture.
Compress a GIF to a target size in KB
If you need a file under a set size, choose "Aim for a file size" and type the target in KB. The range is 1 to 20480 KB. The tool searches 8 steps of colours and frame loss, from best quality to smallest, with at most 4 trial encodes.
The tool returns the best step that fits. It does not pad the file up to the target. In our test, a 200 KB target gave 190 KB, and a 300 KB target also gave 190 KB.
If no step fits, the tool returns the smallest result and the panel says the target was not reached. In our test, 100 KB could not be reached, and the smallest result was 117 KB. A 5 KB target also gave 117 KB, not reached.
- Target sizes are in KB, where 1 KB is 1024 bytes.
- A target is a goal for the tool, not a guarantee.
When the GIF does not get smaller
Sometimes the result is bigger than the original. The panel warns you when this happens. In our test, frame loss 0 gave 737 KB, which is about 4% larger than the original. Lossless also gave 737 KB.
A GIF that is already small can grow. The same clip saved with 16 colours, no dithering and frame loss 32 was 102 KB. At the defaults it became 128 KB, which is 25% larger. Compressing a GIF that was already compressed hard can make it bigger.
Pictures that change a lot from frame to frame are the hard case for GIF. Our test clip panned across a photograph, so every pixel changed. Results vary with the picture.
- Try fewer colours or a higher frame loss.
- If the panel says the result is not smaller, keep your original file.
GIF or animated WebP
The output list holds GIF, WebP and "Same as the original". Choose "Same as the original" to keep a GIF as a GIF. Choose WebP to make an animated WebP from an animated GIF, with a lossy quality slider.
In our test, the same 20-frame clip saved as an animated WebP at quality 75 became 71 KB, which is 90% smaller than 712 KB. All 20 frames were kept. At the default GIF settings it became 453 KB.
Pick GIF when the file must stay a GIF. Pick WebP when the place you will use the file accepts WebP and you want a smaller file.
What stays the same: frames, timing and loop
With "Keep the animation" on, which is the default, all frames are kept. Each frame's delay is kept as it is. GIF delays are multiples of 10 ms.
The loop count is kept too. A GIF that plays once stays loop 1 in the result. A GIF that loops forever keeps that setting. The panel shows "Animation: N frames, X s, loops forever" or "plays N times".
A frame delay of 0 or 1 hundredths of a second is not changed. Browsers show it as 100 ms. EXIF rotation is not applied to animations, and camera and location tags are not copied into the result.
Turning off "Keep the animation" leaves only the first frame. The panel says "Only the first of N frames was used". In our test, that gave a one-frame GIF of 36 KB.
Limits for frames and size
An animation has two limits: a frame limit, and a total pixel limit. Total pixels are frame width x frame height x number of frames. Signed in, you can use up to 300 frames and 64 MP in total.
Without an account, the limits are 100 frames and 16 MP in total. The check reads the file header before the frames are decoded, so an oversized animation is refused quickly. Each single frame is still limited to 16 MP (4096 x 4096).
Over the limit, the job fails with "animation_too_large", and the page says to use only the first frame. Turning "Keep the animation" off, or setting animate=false in the API, uses only the first frame. The credits are returned.
- Credits: the base 1 credit per image, plus 1 credit for each started 10 megapixels of decoded frames beyond the first 10 megapixels.
- A GIF cut off before its end marker is refused as an unsupported image.
Compress a GIF for a chat app upload limit
People look for a Discord GIF compressor because chat apps set their own limit for GIF uploads. Those limits come from the app, so check the limit the app shows before you start. Then type that limit in KB as the target size.
Choose "Aim for a file size" and enter the target. The tool returns the best step that fits. If the target is not reached, the panel says so, and you can try fewer colours or more frame loss.
To compress animated GIF files for chat, keep "Keep the animation" on so the motion still plays. Use the result panel to check the final size before you upload.
Transparency in a compressed GIF
A GIF pixel is either fully transparent or fully opaque. GIF has no partly see-through pixels. "Keep transparency" is on by default, so transparent pixels stay transparent in the result.
If you turn "Keep transparency" off, transparent pixels are filled with the background colour. The background colour is white (#ffffff) by default, and you can change it.
Soft edges do not carry over to a GIF. A PNG or WebP with soft edges gets rough edges when it becomes a GIF. This is a limit of the format.
Which files the compressor accepts
The compressor accepts PNG, JPG (also .jpeg and .jfif), WebP, AVIF, GIF, BMP and TIFF. It does not accept SVG, PDF, HEIC/HEIF, BigTIFF or camera RAW files. Only GIF and WebP animations are kept as animations.
The file type is read from the file content, not from the name. A renamed file is read as what it really is. A text file renamed to an image extension is refused with an "unsupported image" message.
Free web use allows up to 5 MB per image and 30 images per day per visitor without an account. Each picture can be up to 16 MP (4096 x 4096) per frame. Signed-in users can send up to 10 MB per image. Signed-in users pay 1 credit per image, plus the animation extras and 1 credit for each 5 MB of result after the first 5 MB.
If the result would be larger than 20 MB, the job fails with "output too large" instead of returning a cut-off file. Sizes are shown in KB (1024 bytes) and MB (1024 x 1024 bytes).
Compress GIF from code
You can compress GIF files from your own code with the API. Use op=image_compress with format=gif. Send the raw image bytes as the request body, not JSON or multipart. Set Content-Type to image/gif, or to image/webp, png, jpeg, avif, bmp or tiff.
Post to https://api.aiipworld.com/v1/image-jobs with your key in Authorization: Bearer or in x-api-key. Settings go in the query string: colours, dither, lossy, target_kb, lossless and animate. Unknown names are rejected.
The response is 202 with a job_id. Poll GET /v1/jobs/:id until it succeeds, fails or times out. For animations, send timeout_sec=60, which is the maximum. The download_url is a short-lived signed link.
The page shows a ready cURL, Node and Python example below the tool. See /docs/#image-compress for details. Each request takes one image. There is no batch endpoint and no webhooks yet.
- Errors: 400 unsupported_image or invalid_params, 413 file_too_large, 402 insufficient_credits, 429 rate limited.
Privacy: what happens to your file
The image is sent to our server. It is not processed in the browser. The server uses sharp, built on the libvips library, for ordinary image processing. It is not artificial intelligence.
The uploaded image is used only to make the result. It is deleted as soon as the job ends, whether it succeeds or fails. The result is deleted after 10 minutes in the free web tool.
No history is kept, and download links are short-lived. You must have the right to use what you upload, as set out in our Acceptable Use Policy. Failed and timed-out jobs are refunded.
Questions
Can I compress a GIF for free?
Yes, you can compress a GIF with the free web tool without an account. Anonymous use needs a human check, and you get 30 images per day per visitor. Signed-in use takes credits.
Does the compressed GIF still move?
Yes, an animated GIF stays animated when "Keep the animation" is on. All frames, their delays and the loop count are kept.
How much smaller will my GIF get?
It depends on the picture, so results vary. In our generated 320 x 240 test animation of 20 frames, the default settings made the file 36% smaller. At 2 colours the file was 87% smaller, but the picture was rough.
What is frame loss?
Frame loss reuses pixels that barely change from one frame to the next. It is lossy, and it runs from 0 to 32 with a default of 20. A higher number gives a smaller file and can leave faint trails.
Why is my compressed GIF not smaller?
The picture may already be small or compressed hard, and the panel will say when the result is not smaller. In our test, frame loss 0 made the file 4% larger, and a small GIF became 25% larger at the defaults. Try fewer colours or a higher frame loss.
Can I compress a GIF to a specific size in KB?
Yes, choose "Aim for a file size" and enter a target from 1 to 20480 KB. The tool returns the best step that fits. If no step fits, it returns the smallest result and says the target was not reached.
How many colours can I choose?
You can choose 256, 16, 4 or 2 colours. Those are the only four sizes.
Is GIF compression lossy?
Yes, unless "Lossless" is ticked. Lossless keeps 256 colours and no frame loss, and only re-optimises the file, so the result can be larger.
Can I make an animated WebP instead?
Yes, set the output to WebP to make an animated WebP from an animated GIF. In our test at quality 75, the 712 KB clip became 71 KB with all 20 frames kept.
What happens to a transparent GIF?
"Keep transparency" is on by default, so transparent pixels stay transparent. If you turn it off, transparent pixels are filled with the background colour, which is white by default.
Why was my GIF refused as too long or too large?
Animations over the frame or total pixel limit are refused from the file header before decoding. Without an account the limits are 100 frames and 16 MP in total. A result larger than 20 MB fails with "output too large".
Can I compress GIF files in code?
Yes, the API accepts op=image_compress with format=gif. Post the raw image bytes to https://api.aiipworld.com/v1/image-jobs with timeout_sec=60 for animations. The page shows ready cURL, Node and Python examples.
Need this in your app or in bulk?
This tool runs on the same platform as the API, so the same image is one HTTP request from your code. A free account includes 100 credits a month.

