Skip straight to it
Get the 128px file, already under 128KB.
Free resizer, already set to fit Slack's cap. No account, nothing uploaded to a server. The same tool also covers Discord and Twitch sizes — Slack is one preset among a few, not a separate product.
128×128, under 128KB
One size, one file cap — and the cap is the part that catches people who've made a Discord emoji before and expect the same amount of room.
| Rule | Value | Notes |
|---|---|---|
| Shape | 128 × 128 px, square | Slack's own recommended upload size |
| Max file size | 128KB | Tighter than Discord's 256KB cap for the same kind of file |
| Static formats | PNG, JPG | PNG keeps a transparent background — JPG doesn't |
| Animated format | GIF | Up to 50 frames, same 128KB cap |
| Not accepted | WebP, SVG, AVIF, APNG | Easy to assume WebP works — Slack doesn't take it here |
Square only — Slack doesn't crop for you
Discord and Twitch both force a square crop before they'll take your upload. Slack doesn't crop a rectangular image at all — it stretches it to fit, which is a real distortion, not a resize.

uploaded square
shows exactly as drawn

uploaded wide
same file — Slack stretches it to fit, not crops it
- Crop to a perfect square before you upload, even if that means cropping tighter than you'd like
- Preview the file at actual size before uploading — 128px is smaller than most editors show by default
- Keep a transparent background if the emoji isn't meant to be a solid-colour square
- Upload a rectangular screenshot or logo assuming Slack will crop it for you — it stretches instead
- Assume a slightly-off square 'rounds' cleanly — a 130×110px file gets visibly squashed
- Save it as WebP to save space — Slack doesn't accept that format for a custom emoji at all
What it actually looks like inside Slack
The number that matters is what a coworker actually sees — small, inline in a message, and even smaller sitting on a reaction. Here's the same generated file doing both.
Unlike Discord, which blows an emoji-only message up to a bigger "jumbo" size, Slack keeps a custom emoji the same small size everywhere it shows up — inline in a sentence, sitting alone, or riding on a reaction. There's no bigger stage to design for; whatever reads clearly at that one small size is the whole job.
Animated Slack emoji: still 128×128, still a GIF
Same square, same 128KB ceiling — the one limit that's actually unique to an animated emoji is how many frames it's allowed.
| Rule | Value |
|---|---|
| Size | 128 × 128 px — identical to a static emoji |
| Format | GIF |
| Max frames | 50 |
| Max file size | 128KB, same hard cap as a static emoji |
| Requirement to add | None beyond normal upload permission — works on the free plan too |
That last row is the opposite of how Discord handles some of its own animated assets. An animated Discord avatar needs Nitro. An animated Slack emoji doesn't sit behind any paid plan — the same free workspace that has custom emoji at all can have animated ones.
What actually goes wrong
The pixel count is rarely the problem. The crop, the file cap, and the format account for almost everything else.
- Export at exactly 128×128, even if the source art started much bigger
- Check the actual file size before uploading, not just the pixel dimensions
- Use PNG when the design needs a transparent background — JPG can't keep one
- Ask whoever manages your workspace first if you're not sure you have permission to add one
- Assume an animated GIF gets a looser file cap — it's the same 128KB either way
- Upload a rectangle and expect a crop — Slack stretches it instead
- Save it as WebP — Slack doesn't take that format for a custom emoji at all
- Judge it only at full size in an image editor, never at the size it'll actually show
Resize it free, right now
Crop to a perfect 128×128 square — no stretching — and download a file that already clears Slack's 128KB cap.
Drop in an image, download a 128px file already under Slack's cap.
The same free tool covers Discord and Twitch sizes too — pick Slack, get the correct square back, no stretching.
Questions people actually ask
Keep going
The sizes, the file rules, and the design decisions that separate an emote people spam from one nobody can make out. Draw it, commission it or use a maker — this covers all three.
128×128, 256KB, and how many slots your server really has. How to make a set that still reads at 16 pixels — which is how small a reaction actually gets.
Drop in one image, get 112, 56 and 28px back with transparency intact. No account, no watermark.
112×112, 56×56, 28×28 — the three sizes Twitch asks for, where each one actually shows up, and the file rules that get uploads rejected.
One emoji sized.
Want more from the same picture?
On Air Kit turns one photo or description into a matching set of reaction images. Slack, Discord and Twitch all read the same 128px square, so one set covers all three without redoing the work per platform.
