Discord GIF Emote Size: Exact Dimensions for Emotes, Stickers, and Banners

June 12, 2026

Discord’s upload limits for emotes are tight, the error messages are vague, and half the guides online quote numbers from 2021. Here’s the current spec sheet for every animated asset on Discord, verified against Discord’s own documentation, plus a workflow that reliably gets a GIF under the 256KB emote cap without turning it into a smear.

The numbers that matter

AssetDimensionsMax file sizeFormatsRequirement
Custom emoji (static or animated)128×128 recommended256KBJPEG, PNG, GIF, WebP, AVIFManage Expressions permission to upload
Sticker320×320 exactly512KBPNG, APNG, GIF, LottieBoost Level 1+ for slots beyond the base 5
Server banner (static)960×540 min, 16:910MBPNG, JPEGBoost Level 2
Server banner (animated)960×540 min, 16:910MBGIFBoost Level 3
Profile avatar (animated)128×128 recommended10MBGIFNitro (full, not Basic)
Profile banner680×240 min10MBPNG, JPG, GIFNitro (full, not Basic)
GIF posted in chatany10MB free / 50MB Nitro Basic / 500MB NitroGIFnone

Sources: Discord’s custom emoji guide, Sticker Creators FAQ, Server Banners article, and File Attachments FAQ.

Emotes: 128×128, and 256KB is the real boss fight

Discord’s own wording on emoji dimensions: “128x128. Bigger or smaller will work, but 128x128 is juuuust right.” Upload something larger and Discord compresses it for you, usually badly. Upload exactly 128×128 and you control the quality.

The dimension is the easy part. The hard part is the 256KB file size cap, which sounds generous until you do the math on an animated GIF:

  • A 128×128 frame is 16,384 pixels.
  • With 64 colors and typical flat emote art, each frame compresses to roughly 2–6KB after LZW and frame differencing.
  • That gives you a budget of roughly 40–100 frames for clean art, and far fewer for photographic or noisy footage.

At 15fps, that’s a 3–6 second loop at best. In practice, the emotes that look good are 1–2 seconds long. Twitch emote artists figured this out years ago: short, punchy loops beat long animations every time.

Two more details worth knowing:

  • Emotes render tiny in chat. Discord scales them way down inline, and only shows them larger as “jumbojis” when a message contains nothing but emojis (27 max before they shrink back). Detail you can’t see at small sizes is wasted bytes.
  • Animated emotes are free to upload, paid to use. Anyone with the Manage Expressions permission can add an animated emoji to a server, but only Nitro members can send them. Static emotes work for everyone.

Stickers: 320×320 exactly, 512KB, and APNG beats GIF

Stickers are stricter and looser at the same time. The dimensions must be exactly 320×320 — not “recommended,” exactly. Get it wrong and you’ll hit the infamous “Invalid Asset” error. The file cap is 512KB, double the emote budget, per Discord’s Sticker Creators FAQ.

The format situation is where it gets interesting. Discord accepts PNG, APNG, GIF, and Lottie for stickers, but recommends APNG for animated stickers, and for good reason:

GIFAPNG
Colors256 per frame24-bit (millions)
Transparency1-bit (on/off, jagged edges)Full 8-bit alpha (smooth edges)
File size at same qualityLargerUsually smaller for art

For a sticker that floats over chat backgrounds in both light and dark mode, GIF’s binary transparency produces a crunchy halo around the edges. APNG’s alpha channel doesn’t. If your source is a GIF, converting to APNG before uploading as a sticker is genuinely worth the extra step. If your source is a video clip, you can skip GIF entirely for stickers.

Banners and profile GIFs: roomy limits, boost-gated

The 10MB ceiling on banners means file size is rarely the problem — access is:

  • Static server banner (960×540 minimum, 16:9): unlocks at Boost Level 2, which takes 7 boosts.
  • Animated server banner: Level 3, 14 boosts. Note it only animates for about 5 seconds when the channel list loads, then pauses until hover — so put the payoff at the start of the loop.
  • Animated avatars and profile banners (680×240 minimum) need a full Nitro subscription; Nitro Basic doesn’t include them.

Slot counts also scale with boosts, per the Server Boosting FAQ:

Boost levelEmoji slots (static + animated)Sticker slots
None50 + 505
Level 1 (2 boosts)100 + 10015
Level 2 (7 boosts)150 + 15030
Level 3 (14 boosts)250 + 25060

The workflow: getting any clip under 256KB

Say you’ve got a 10-second 480px 15fps GIF from a video clip — that’s typically 4–8MB, or about 20–30× over the emote cap. Here’s the order of operations, ranked by how many bytes each step saves:

1. Trim ruthlessly (biggest win). Cut to the 1–2 seconds that actually matter. Going from 10 seconds to 1.5 seconds is an ~85% reduction before you’ve touched anything else. If you’re starting from video, do this in your video to GIF converter before the GIF even exists — re-encoding an existing GIF always loses more quality than encoding once from source.

2. Resize to 128×128. Dropping from 480px to 128px cuts the pixel count by ~93%. Crop to a square around the subject first, then scale — a GIF resizer that lets you crop and resize in one pass avoids a double re-encode.

3. Lower the frame rate. 15fps is plenty for emotes; 10–12fps is usually indistinguishable at emote scale. Going from 30fps to 12fps cuts frames (and bytes) by 60%.

4. Reduce colors. GIF supports up to 256 colors, but emote-sized art rarely needs more than 64, and 32 often passes. Each halving of the palette saves roughly 10–20%.

5. Lossy compression last. Gifsicle-style lossy LZW (a “lossy” slider in most GIF compressor tools, typical range 30–100) introduces small artifacts that are invisible at 32px display size and can shave another 30–50% off.

A realistic budget for that 10-second clip:

StepSettingsApprox. size
Source GIF480px, 15fps, 10s, 256 colors4–8MB
Trimmed1.5s600KB–1.2MB
Resized128×128150–400KB
12fps, 64 colors80–250KB
Lossy ~6050–180KB ✓

The whole chain runs fine in a browser-based tool — GIF Den does the resize and compress steps client-side, so a clip from a private server never touches a server you don’t control (you can check the no-upload claim yourself in devtools). Any pipeline that follows the same order will land in the same place, though.

Where GIF genuinely loses

Worth being honest about: GIF is a 1989 format and it shows. For stickers, APNG is better on every axis except tooling support. For anything posted in chat, an MP4 of the same clip is typically 5–10× smaller at far better quality — if you have a GIF that’s blowing past the 10MB chat limit, running it through a GIF to MP4 converter is smarter than compressing it harder. GIF’s only unbeatable feature on Discord is that it’s the one animated format emotes and avatars accept.

Checklist

  • Emote: 128×128, under 256KB, 1–2 second loop, 10–15fps, ≤64 colors
  • Sticker: exactly 320×320, under 512KB, prefer APNG over GIF for clean edges
  • Server banner: 960×540+, 16:9, under 10MB; animated needs Boost Level 3
  • Profile GIF: needs full Nitro; 128×128 avatar, 680×240+ banner, under 10MB
  • Over budget? Trim length → resize → drop fps → reduce colors → lossy, in that order
  • Always encode from the original video when you can — every GIF re-encode costs quality you can’t get back