Shrink a GIF to under 128KB for Slack (ffmpeg and online tools)
2026-09-08
GIFs from Tenor or Giphy are usually 200KB to over 1MB. Slack needs under 128KB. Three ways to get there.
Option 1. Upload it here
Upload the original GIF (up to 5MB) on the upload page. It is converted to spec during review and becomes a public emoji anyone can download. For files that should stay private to your team, use the options below.
Option 2. ffmpeg (most reliable)
Install with brew install ffmpeg on macOS, or winget / the official site on Windows. This command produces a 128px, 12fps, 128-color GIF:
ffmpeg -i input.gif -filter_complex \
"[0:v]scale=128:128:force_original_aspect_ratio=decrease:flags=lanczos,fps=12,split[a][b];[a]palettegen=max_colors=128:stats_mode=diff[p];[b][p]paletteuse=dither=sierra2_4a" \
-loop 0 output.gif
If the result is still over 128KB, adjust in this order:
fps=12→fps=10→fps=8max_colors=128→64→32scale=128:128→scale=96:96- Trim the clip: add
-t 2.5before-i input.gif(first 2.5 seconds)
To center-crop to a square, put crop='min(iw,ih)':'min(iw,ih)', before scale.
Option 3. Online (ezgif)
- Resize: set width to 128, keep aspect ratio
- Optimize: “Lossy GIF” level 30–100
- Still too big: Cut the length, or use “Reduce colors” to 64 under Optimize
Where the bytes come from
GIF size ≈ frames × bytes per frame, and bytes per frame scale with pixels and colors. Biggest wins in order: shorter clip > smaller dimensions > lower fps > fewer colors. A 3-second 220px GIF at 128px, 10fps, 64 colors is typically 5–8× smaller.
Check and upload
Confirm the file is under 128KB (131,072 bytes), then follow the upload steps.
FAQ
The GIF will not get smaller.
If resizing is not enough, reduce frame rate and colors. 10fps with 64 colors gets most clips under 128KB. If it is still too big, trim the clip to 2–3 seconds.
The quality is terrible.
Turning dithering off saves bytes but makes color edges rough. sierra2_4a dithering with 128 colors is a good balance.