GIF compression

Same loop
Less waiting

Four controls, each acting on a different part of the file: the pixels, the frames, the color table and the parts that never move.

Four levers

Use them one at a time. Stacking all four is how a clean animation turns to mush.
Lossy level1 – 200

How much the encoder is allowed to fudge between neighboring pixels. Low values are invisible; high values flatten gradients into blocks.

Frame droppingDEDUPE OR EVERY NTH

Strip frames that repeat, or take out every second, third, fourth or fifth one. Timing is stretched so the loop still runs at its old length.

Palette size2 – 256 COLORS

Fewer entries in the color table means a smaller file. Dithering scatters the error so banding reads as texture instead of stripes.

Transparency passPIXEL REUSE

Pixels that do not change between frames are marked transparent so the encoder can skip them entirely. Often the quietest win of the four.

Working order

01

Bring the animations

Up to 10 GIFs at once, 25 MB each. Screen captures, reaction clips and UI demos all behave the same way.

02

Turn the levers

Start with the lossy slider on its own. Reach for frame dropping and a smaller palette only when the file is still too heavy.

03

Watch the loop, then take it

Every result shows both sizes and the saving. If a setting made the file bigger, the original is handed back instead.

It refuses to make things worse

Some GIFs are already optimized. When a pass adds bytes, the untouched file is returned and the row says so.

Ten in a queue

Send a whole set of documentation clips through with one configuration instead of repeating yourself.

Deleted on completion

Uploads leave the worker as soon as the compressed GIF is ready. There is no copy sitting anywhere afterwards.

Need bigger animations or a faster queue? The plans are here →