Drop a cap on that Slack GIF.
Slack custom emoji has the strictest gif spec on the platform. Miss any of the three caps and the upload rejects.
- 128 kb hard cap or upload rejects · 128×128 max dimension · 50-frame ceiling for the animation · all three checked at upload, no retry hint
gifcap. resize to 128 px, fps to ≤25, set the cap to 128 kb. gifcap binary-searches quality until all three constraints satisfied. one preset, ready to upload.
| axis | manual ffmpeg / online tools | gifcap |
|---|---|---|
| hits all three caps at once | guess and retry | enforced together |
| quality at 128 kb | posterized, smudged | gifski per-frame palettes |
| preset workflow | re-enter limits each time | slack-emoji preset (coming soon) |
| workspace tier | works on free workspaces | works on free workspaces |
| cost | free | free tier; pro $29 lifetime |
How gifcap solves this — in detail
Slack custom emoji enforces three caps simultaneously: 128 kb, 128×128 pixels, 50 frames. Slack's uploader rarely tells you which one tripped — it just rejects with a generic error. Most encoders let you set one constraint at a time, so making a Slack emoji becomes a guess-and-check loop that takes more time than the emoji itself.
gifcap addresses all three in a single pass. The output dimensions clamp at 128 px, fps caps at 25 to keep the frame count under 50 across reasonable durations, and the binary-search size cap targets 128 kb. gifski's per-frame palette keeps the few hundred kilobytes the encoder is allowed to use packed with as much detail as the source supports.
The constraint stack is unusual because it's symmetric — you can't trade one for the others. A 128×128 PNG won't accept higher fps to compensate for fewer colors. gifcap encoding under all three at once produces an emoji that ships, every time, on every workspace tier.
Slack — custom emoji limits
- Animated GIF emoji file size: 128 KB max
- Dimensions: 128×128 px max
- Frame count: 50 max
- Static emoji: 128×128 px, no animated-frame requirement
- Direct file upload (channel) autoplay threshold: ~2 MB
- Maximum upload size (any file): ~50 MB on Slack Free, higher on paid