Skip to main content

Twitch Emote Resizer — 28×28, 56×56, 112×112

Drop any image, get all three Twitch sub-emote sizes (28×28, 56×56, 112×112) as PNG or JPG. Live preview against light + dark + transparent chat. 1 MB byte counter against Twitch's upload cap.

Client-side canvas resize, no upload. Outputs Twitch's 28×28, 56×56, 112×112 spec.

The 28 / 56 / 112 spec, where it comes from, and why all three are required

Twitch ships chat to a mixed device fleet. Mobile phones at 1× pixel density render the 28×28 directly. Desktop chat at 1.5× zoom uses the 56×56. Retina laptops and 4K monitors at 2× zoom render the 112×112. Twitch's emote uploader picks the variant per device after the fact — but only if all three sizes were uploaded at submission. A two-of-three upload fails the Affiliate emote review, which is why this resizer always emits the full set. The same three sizes apply to sub emotes, Bit emotes, and BTTV channel emotes; FFZ and 7TV are looser but still accept the same set as the floor.

Why a 28×28 emote dies and a 112×112 lives

Most emote rejections trace to the smallest size. A face that reads at 112×112 collapses into noise at 28×28 after Twitch's automatic resize. Two design rules win consistently. Thick outlines — at least 4 pixels at 112×112 — survive the downscale to ~1 pixel at 28×28. Thin anti-aliased lines vanish entirely. High inner contrast — light shape on dark background or vice versa — keeps the focal element legible at the smallest size. Both rules trace back to Twitch's own emote-design guidance: design at 112×112 first, never start at 28×28, and verify legibility at the smallest size before submitting.

PNG vs JPG vs GIF — when each format wins

PNG is the default for anything with transparency, hard edges, or large flat-colour areas. The toolbar's PNG export preserves the alpha channel so the emote sits cleanly on Twitch's dark and light chat themes. JPG wins for full-frame photographic emotes — anything where transparency is irrelevant and the colour count is high. JPG output is 2-4× smaller than PNG for the same source, which matters when the 112×112 PNG breaches Twitch's 1 MB cap. GIF is the format for animated emotes — the only animated format the first-party uploader accepts (APNG and animated WebP are rejected at validation). Affiliates and Partners both have animated slots across Tier 1, Tier 2, and Tier 3 subs, and every Bit-emote tier accepts animated GIF. Animated GIF export needs a real GIF encoder; this resizer renders the first frame of a GIF source for the PNG export, so use a tool like ezgif or a desktop GIF-frame editor when you need the full animated set at all three sizes.

When the 25 KB safe target bites and what to do

The 112×112 PNG is the size most often over-budget. Even a moderately detailed emote with full alpha and antialiased edges can run 100-400 KB in PNG — well over the 25 KB safe target Twitch documents. Three fixes, in order of cost: One, switch the format selector to JPG. The same emote usually drops 5-10× and lands inside the safe target, accepting the loss of transparency. Two, run the PNG through an indexed-colour optimiser (TinyPNG, pngquant, or Photoshop's "Save for Web → PNG-8 with 64-128 colours"). The target is often met without changing format. Three, simplify the source — fewer colours, smaller composition — and re-export at 112×112 from the original tool. The 1 MB hard ceiling only really bites on long animated GIFs.

Other Twitch image specs (and where to size them)

Beyond emotes, Twitch creators size four other channel images: profile picture (256×256 recommended), profile banner (1200×480), info-panel images (320×100 minimum, designers often work at 640×200 and downsample), and the video-player offline banner (1920×1080). Our Twitch panel size tool covers panels and video banners. Profile-picture sizing is straightforward — any 1:1 source up to 10 MB, Twitch downsamples to 256×256 server-side. The channel audit tool flags missing or wrong-sized panels and banner images on any public Twitch channel. The full Twitch emote spec — including animated APNG / GIF support per emote tier and the file-size cap — lives in the official Twitch emote guide.

Frequently asked

What are the Twitch emote sizes for sub emotes?
Twitch requires three sizes for every sub emote: 28×28, 56×56, and 112×112 pixels. All three are mandatory at upload. Files must be PNG (static) or GIF (animated), transparent background allowed. Twitch's documented spec caps static PNGs at 25 KB per size and animated GIFs at 1 MB per size with up to 60 frames. The Affiliate dashboard rejects uploads that miss any of the three sizes.
What size is a Twitch bit emote?
Bit emotes use the same three sizes as sub emotes — 28×28, 56×56, 112×112. PNG for static (25 KB target), GIF for animated (up to 1 MB, 60 frames). Twitch's first-party uploader rejects APNG and animated WebP at the file-validation step, so GIF is the only animated route. Bit emote unlocks come in cumulative cheer tiers — each tier you unlock gets its own three-size emote slot.
Why does my emote upload fail with "file too large"?
Twitch's documented spec caps static PNGs at 25 KB per size and animated GIFs at 1 MB per size. Static emotes routinely fail the 25 KB target on full-alpha photographic sources and on heavy outline detail; the 1 MB ceiling only really bites on long animated GIFs. Workarounds: drop the colour palette to 64 or 128 colours (PNG-8), reduce frame count for animated, or accept JPG instead of PNG (JPG is 2-4× smaller but loses transparency). The byte counter on each export flags amber when over the 25 KB safe target and red when over the 1 MB hard cap.
Should I use PNG or JPG for my Twitch emote?
PNG for anything with transparency or sharp edges — sub emotes look correct on both light and dark chat themes only when transparent. JPG is acceptable for square photo-style emotes that fill the entire 28×28 box and never sit on a contrasting background. The format selector above lets you compare both; if your PNG export is over the 25 KB safe target and the emote does not need transparency, the JPG version usually fits.
Can I upload an animated GIF emote?
Yes. Affiliates and Partners both have animated sub-emote slots, with GIF as the only accepted animated format. Slot counts depend on Sub Points and Partner status — check Creator Dashboard → Viewer Rewards → Subscriptions for your current allowance. Bit emotes accept animated GIF at every tier. APNG and animated WebP are rejected by the first-party uploader. This resizer renders the FIRST FRAME of a GIF source for the PNG export — for animated output, export from the original animation tool at 28×28, 56×56, and 112×112 directly.
What about Twitch global emotes and BTTV / FFZ extensions?
Global emotes are managed by Twitch and not creator-uploadable. BTTV (BetterTTV) and FFZ (FrankerFaceZ) are third-party extensions with their own size requirements — both accept larger uploads than Twitch's first-party emote uploader and downscale server-side. The 28/56/112 set this tool produces covers Twitch's native spec; BTTV and FFZ generally accept those sizes as a floor too.
How do I make my emote look sharp at 28×28?
Three rules. One: design at 112×112 first, never start at 28×28 — the larger canvas gets downsampled cleanly, the smaller one gets pixelated when Twitch generates retina variants. Two: keep the focal point above 70% of the bounding box — busy edges at 28×28 turn into noise. Three: prefer thick outlines and high-contrast inner shapes — anti-aliased thin lines vanish at the small size. The "Crop to fill" fit option handles non-square sources by centre-cropping; "Fit inside" preserves aspect with transparent padding.
Where do I upload the resized emotes on Twitch?
Affiliate or Partner dashboard → Creator Dashboard → Viewer Rewards → Subscriptions → Sub emotes (tier 1 / tier 2 / tier 3 tabs). Bit emotes live under Viewer Rewards → Bit Badges & Emotes. Each slot has three drop zones for the 28 / 56 / 112 PNGs. Twitch does not publish a review SLA; turnaround varies from a couple days to a couple weeks. Rejections cite explicit reasons (copyright, prohibited imagery, low-quality scaling) so re-uploading a fixed asset is straightforward.