Twitch does not take one emote image. It takes three, at fixed square sizes, and it rejects the upload rather than resizing for you. At least one automated upload in the same flow caps at 1 MB.
The practical consequence most people miss: the size you design at is almost never the size viewers see. Chat renders the 28-pixel file, and that is where emotes live or die.
The three required sizes
Upload all three yourself if you want control over how each size is resampled. Twitch will accept a single large image and downscale it, but its resampling is a single pass and small details blur badly.
| File | Pixels | Format | Cap | Where it appears |
|---|---|---|---|---|
| Large | 112 × 112 | PNG or GIF | 1 MB | Emote picker, hover card, channel page |
| Medium | 56 × 56 | PNG or GIF | 1 MB | Some chat and card contexts |
| Small | 28 × 28 | PNG or GIF | 1 MB | Chat — where nearly every impression happens |
Why 28 pixels decides everything
At 28×28 an emote has 784 pixels total. A subject that fills half the canvas gets under 400 pixels to work with — roughly the size of a single character in this paragraph.
Downscaling from 1024 to 28 is a 36× reduction. It is not a shrink; it is an averaging. Every thin line, gradient and piece of text averages into the surrounding colour and disappears. That is why an emote can look excellent at 112px and like a smudge in chat.
The four properties that survive downscalingScore your emote at 28px
Animated emotes
Animated emotes are GIF, under 1 MB, with at most 60 frames. Sixty frames is two and a half seconds at 24fps or four seconds at 15fps, so an animated emote is a short loop, not a clip.
The byte cap is usually the binding constraint rather than the frame count. GIF stores a palette per frame, so a full-frame pan or zoom explodes the file size, while a loop where most of the frame holds still and one element moves compresses to a fraction of it.
Sub badges use different numbers
Sub badges are a separate slot with their own sizes and a much tighter cap: 72×72, 36×36 and 18×18, each under 25 KB. Badges are drawn dozens of times per screen in the subscriber list, which is why Twitch keeps them tiny.
Every platform, side by side
Kick publishes slot counts — 60 channel emotes for any channel, plus 24 subscriber emotes once you are an Affiliate or Verified — but not pixel sizes. A square transparent PNG at Twitch sizes is the safe upload.
| Platform | Slot | Pixels | Cap | Animates |
|---|---|---|---|---|
| Twitch | Channel emote | 112 / 56 / 28 | 1 MB | GIF, 60 frames |
| Twitch | Sub badge | 72 / 36 / 18 | 25 KB | No |
| Discord | Custom emoji | 128 | 256 KB | GIF |
| Discord | Sticker | 320 | 512 KB | APNG, 5 s |
| YouTube | Membership emoji | 48 – 480 | 1 MB | No — GIFs render as a still |
| Kick | Channel emote | not published | — | GIF |
| Slack | Custom emoji | 128 | 128 KB | GIF, 50 frames |
Questions
Can I upload just one image and let Twitch resize it?
Yes, up to 1 MB in the same upload flow. But Twitch resamples in one pass, and small details blur. Exporting 112, 56 and 28 separately gives you control over each one.
Does Twitch accept GIF emotes?
Yes. Animated emotes are GIF, under 1 MB, with at most 60 frames.
What size should I design at?
Work at 512px or larger so you have something to export from, but design for 28px. Check the small size before you commit — that is the only version most viewers see.
Why does my emote look blurry in chat?
Either it was shrunk from one large image in a single pass, or it carries fine detail and thin lines. Both disappear at 28px. Design with one bold shape and a thick outline instead.