Compressing an animated GIF with gifsicle or ImageMagick mogrify

Using gifsicle

Tip via Mark Norman Francis on Twitter:

Saw your GIF size TIL, and gifsicle -O3 --colors 48 --lossy gets it down to 320k. You can tweak the number of colours and loss to get it smaller but that’s when it starts to look worse to my eyes

I installed it using brew install gifsicle and ran it like this:

/tmp % ls -lah datasette-launch.gif 
-rw-r--r--@ 1 simon  wheel   3.7M Sep 13 12:52 datasette-launch.gif
/tmp % gifsicle -O3 --colors 48 --lossy -o datasette-launch-smaller.gif datasette-launch.gif 
/tmp % ls -lah datasette-launch*                                                            
-rw-r--r--  1 simon  wheel   613K Sep 13 12:54 datasette-launch-smaller.gif
-rw-r--r--@ 1 simon  wheel   3.7M Sep 13 12:52 datasette-launch.gif

Original: 3.7MB file:


Compressed 613KB file:


The reduced colours there were a bit too much for me, especially for the purple gradient buttons at the end. So I tried this instead:

gifsicle -O3 --colors 128 --lossy -o datasette-launch-smaller-2.gif datasette-launch.gif

Which gave me a 723KB file which I think looks good enough for my purposes:


Using ImageMagick mogrify

Found this tip on Stack Overflow: to reduce the site of an animated GIF, you can use the mogrify tool like this:

mogrify -layers 'optimize' -fuzz 7%  sqlite-convert-demo.gif

This saves over the original, so make a copy of it first.

I ran this against this 1.3MB animated GIF:

A demo of my sqlite-utils convert command

The result was this 401KB GIF:

Same demo of my sqlite-utils convert command, but a smaller file

The -fuzz 7% option is documented here - it treats similar colours as the same colour:

The distance can be in absolute intensity units or, by appending % as a percentage of the maximum possible intensity (255, 65535, or 4294967295).

Created 2021-08-05T22:02:29-07:00, updated 2021-09-13T13:01:48-07:00 · History · Edit