WoluTools

Images & Design

Compress a GIF to a target size like 2 MB

Upload a GIF, APNG, WebP or AVIF animation and set a size limit. You get the smaller file and what was cut (frames, colours or size), or a clear answer if it cannot fit.

or drop it here

GIF, APNG, WEBP, AVIF · Up to 1 file
Free account needed for your 3 free jobs a day

No file at hand? See the prepared example

Standard toolIncluded · 3 free jobs a dayFree: 3 jobs a dayPro: up to 200 jobs a day · €12.99/month or €89.99/year
  • GIF / APNG / WEBP / AVIF
  • Up to 1 file
Prepared result preview · fictional sample dataSynthetic animated WebP
Source
Reduce dimensions until the confirmed byte target is met or attempts are exhausted
Verified package preview
  • Candidate widths: 960, 720, 540 and 360 px
  • Frame rate: 12 fps
  • Actual output bytes are recorded

optimized-720.webp · manifest.json

BringGIF, APNG, WEBP, AVIF
GetOptimized animation, measured status, method manifest
PrivacyEncrypted source · 24-hour result

One clear job, from source to download

  1. 1

    Add the source

    Supported formats and limits are visible before the upload.

  2. 2

    Confirm the settings

    Review the exact source, options, units and access before processing.

  3. 3

    Inspect and download

    Check the preview and warnings, then unlock the complete package.

Getting an animation under a file size limit

What you upload

You upload one animated file per job as GIF, APNG, WebP or AVIF. Then you set the maximum size in KB, for example the limit of the form you need to upload to. The output stays animated and does not collapse into a single still frame. The tool reduces width, frame rate or colours until the file fits or the attempts run out.

What you get back

You get the optimized animation and manifest.json. The size shown is measured on the encoded file, not estimated from the settings, so it matches what an upload form will see. The manifest lists every reduction made to width, frame rate or palette. If the target cannot be reached, the job reports a clear miss with the smallest result it managed. A file above your target is never marked as passed.

Floors you set

Besides the size limit you can set a minimum width and a minimum frame rate. The optimizer respects both, even when that means missing the byte target. Set them to the point where the animation still looks right for its purpose. A tight size limit with high floors will often end in a miss. Whether the smaller file is good enough is your call, so play it before you use it.

Questions before you run it

Which animated formats can I upload?

GIF, APNG, WebP and AVIF, one file per job. The output stays animated rather than collapsing to a single still frame.

How does it decide what to reduce first?

It works through candidate widths and frame rates inside the floors you set, then records which dimension, frame-rate or palette reduction produced the file you download. Each step is listed in manifest.json.

What if the target size cannot be reached?

The job returns a clear miss together with the smallest result it managed. A file above the target is never marked as passed.

Can I stop it dropping below a certain width or frame rate?

Yes. Minimum width and minimum frame rate are controls you set beforehand, and the optimizer respects them even when that means missing the byte target.

Is the reported size an estimate or the real file size?

The bytes shown are measured on the encoded output, not predicted from the settings, so the number matches what an upload form will see.