Free tool · runs in your browser

One image, every emote size

Twitch wants 112, 56 and 28. Discord wants 128 under 256 KB. Kick, 7TV, BTTV and Slack all differ again. Drop one image and get every file, correctly sized and named, in a single ZIP. Nothing is uploaded.

Drop an emote

or · PNG, WebP or GIF

Your file never leaves this device.

Every platform's emote spec

Each platform enforces a different square, a different byte cap and a different format list — and most reject the upload rather than resizing it for you.

PlatformSlotPixelsCapAnimated
TwitchChannel emote112 / 56 / 281 MBGIF, 60 frames
TwitchSub badge72 / 36 / 1825 KBNo
DiscordCustom emoji128256 KBGIF
DiscordSticker320512 KBAPNG, 5 s
YouTubeMembership emoji48–4801 MBNo
KickChannel emotenot published—GIF
SlackCustom emoji128128 KBGIF, 50 frames

Kick documents its slot counts — 60 channel emotes for any channel, plus 24 subscriber emotes once you are an Affiliate or Verified — but does not publish pixel sizes. The square transparent PNG you made for Twitch is the safe upload.

Why 28 pixels is the only size that matters

Twitch chat renders emotes at 28×28. The 112px file is what the picker and hover card show, and 56px appears in a few contexts, but nearly every viewer sees the smallest one. If an emote does not read at 28px, it does not work — no matter how good the 1024px master looks.

Check yours with the readability scorer before you upload; it measures silhouette, contrast on both chat themes and edge survival at exactly that size.

Questions

Does resizing here hurt quality?

Each size is resampled from your source independently with a premultiplied area filter, rather than stepping down through intermediate sizes. That is the main cause of soft, muddy emotes: resizing 1024 → 112 → 56 → 28 compounds rounding error at every step.

Is anything uploaded?

No. Decoding, resizing, PNG encoding and the ZIP are all done in your browser. There is no upload request.

What if a file is over the cap?

Each file's size is checked against its platform's published limit and flagged. For static emotes this is rare — most land in single-digit KB. Animated GIFs are the usual culprit, because GIF stores a full palette per frame.