Auto-resize mode (single upload)
Upload one square image between 112×112 and 4096×4096 pixels at up to 1MB. Twitch downscales it to the three display sizes server-side. Fastest path if your design works at all sizes.
Twitch emote size guide
This page exists because most Twitch emote size guides online still repeat numbers from 2018, or quote third-party tool limits as if they were Twitch's rules. Here's the current spec, organized by what matters during export and upload. Just need to resize a file? The Twitch emote resizer handles it in under 30 seconds.
Upload one square image between 112×112 and 4096×4096 pixels at up to 1MB. Twitch downscales it to the three display sizes server-side. Fastest path if your design works at all sizes.
Upload three separate files at 28×28, 56×56, and 112×112. Use this when you want per-size control — for example, simplifying detail in your 28×28 so it reads in chat.
This trips a lot of people up because Twitch's own help pages quote different numbers in different places — you'll see 25KB, 100KB, 256KB, and 1MB referenced across various guides. Three things are consistent across every source:
The pre-flight check uses 100KB as the target ceiling for manual mode static PNGs. Stay under that and you avoid the whole question.
GIF compression is hard to do right. The Twitch emote resizer for GIF handles the frame optimization and color quantization needed to hit these limits.
Sub badges aren't emotes. They sit next to usernames in chat, so they're smaller and have less room to work with. Same design principles apply but readability at 18×18 is the goal — everything else is secondary. PNG only, no animation, manual upload only (no auto-resize option).
Cheermotes (the Bit emotes) use the same 28/56/112 sizes as emotes but are animated GIFs only, with separate states for each Bit tier. Partner-only feature.
Shortest path: drop your source into the Twitch emote resizer on the home page. It generates all three sizes, runs the pre-flight check against the spec on this page, and gives you a ZIP ready for upload.
Chat preview
Twitch-like preview, not affiliated with Twitch.
welcome lads
huge laugh
lurking with teaPre-flight check
No acceptance promises. Just concrete checks for dimensions, file size, animation rules, transparency, and whether the tiny version still reads in chat.
Generates 28×28, 56×56, and 112×112 outputs for manual upload.
Checks type, square ratio, and static PNG size targets.
Keeps static outputs as PNG and animated outputs as GIF.
Flags frame count, timing, and manual-mode size risks for animated emotes.
Warns when an animation looks too flashy for Twitch's accessibility rule.
Shows whether the 28×28 version still reads in a Twitch-like chat row.
Flags fuzzy transparent edges that can look dirty at 28×28.
Detects white-box or solid-color backgrounds before you export.
Current image resizing happens locally in your browser.
A common mistake — your design looks great at full size and becomes mush at 28×28. Always design with the 28 in mind first.
Easy to miss — people resize the animated emote correctly and still hit a file-size warning. The GIF emote resizer flags this before you download.
Another frequent cause — half-transparent pixels around your emote's edge look fine at 112×112 and like dirt at 28×28. Either build with hard edges or let the resizer's auto-clean handle it.
28×28 pixels. That's the smallest required size, and the one viewers actually see in chat.
112×112 for the display size. Auto-resize uploads can be up to 4096×4096 source, but Twitch downscales to 112×112 for display.
The three standard Twitch emote sizes are 28×28, 56×56, and 112×112 pixels. Sub badges use 18×18, 36×36, 72×72 — different from emotes. Cheermotes share emote sizes (28/56/112) but are animated only.
Static PNG: 1MB in auto-resize mode, target ≤ 100KB per file in manual mode. Animated GIF: 1MB in auto-resize mode, ≤ 512KB per file in manual mode.
This depends on the upload mode. In auto-resize mode (single image upload), the cap is 1MB whether the emote is static PNG or animated GIF. In manual mode (three separate files), static PNGs target ≤ 100KB each and animated GIFs cap at 512KB each. Files over those targets can run into uploader or quality issues.
Only in manual mode. In auto-resize mode you upload one image and Twitch generates the smaller sizes for you.
18×18, 36×36, and 72×72 pixels. Different from Twitch emote sizes, manual upload only.
Technically yes, but they render at different sizes (18×18 vs 28×28) and the optical balance is different. Most streamers design them separately.
Older Twitch guidelines and some emote-creation marketplaces recommend 100KB as a conservative target for animated emotes because it leaves file-size margin and loads fast. The working cap used here is higher — 512KB per file in manual mode — but staying under 100KB is fine if your animation is simple. Don't confuse a recommended target with a working ceiling.
Drop in your image, get the three sizes ready to upload.
Use the Twitch emote resizer →Compression controls and frame optimization for animated GIFs.
Use the Twitch emote resizer for GIF →