How Animated Emoji GIFs Work: Frames, Timing and Colors
GIF is an old format, dating from 1987, and it's still the way custom emoji move on Slack, Discord, Twitch and Teams. Knowing a bit about how it works explains a lot of the quirks you'll run into: odd colors, jagged edges, size limits and animations that play at a different speed than expected.
Frames and delays
An animated GIF is a sequence of still images (frames), each with a delay that says how long to show it before moving to the next. When the last frame finishes, a loop setting tells the viewer to go back to the start. Emoji GIFs loop forever.
Most Gifmoji animations are 10 frames, and the whole catalog ranges from 4 to 48. Slack allows up to 50 frames in an animated emoji and Twitch allows up to 60, so every Gifmoji animation fits on both.
The speed setting in Gifmoji changes the delay, not the frames. Fast shows each frame for less time, Slow for more. That's why speed has almost no effect on file size.
Why a "faster" GIF can play slower
GIF delays are stored in hundredths of a second, so the shortest possible delay is 10 milliseconds. In practice, browsers and most apps treat very short delays (0 or 1 hundredth of a second) as invalid and replace them with a default of about 100 milliseconds, to protect against old GIFs that were never meant to animate that fast.
The result is counter-intuitive: a GIF made too fast plays far slower than intended. Around 20 milliseconds per frame (50 frames per second) is the practical maximum for a GIF to play at the speed it was made for.
256 colors per frame
Each GIF frame can contain at most 256 colors, chosen from a palette stored with the image. A photo has thousands or millions of distinct colors, so the encoder has to pick the 256 that best represent each frame and map every pixel to the nearest one. This is called quantization.
For faces and simple objects at emoji size, 256 colors is plenty. Where it shows is smooth gradients, like a sunset sky or a softly lit wall, which can break into visible bands. A cutout subject without a background avoids most of that.
When an export is over the selected platform's size limit, Gifmoji re-encodes it with 64 colors. Fewer colors mean fewer bits per pixel and more repetition, which compresses better. More on that in shrinking an emoji GIF.
Transparency: on or off
A GIF can mark one palette color as transparent, so every pixel is either fully see-through or fully solid. There's no partial transparency like PNG offers, which is why GIF cutouts have crisp rather than feathered edges. See making a transparent emoji for how to get the cleanest result.
Compression
GIF compresses each frame losslessly with an algorithm called LZW, which finds and reuses repeated sequences of pixels. Large flat areas, like a transparent background, collapse to almost nothing. Fine texture and noise barely compress at all. That's why the content of the photo affects file size as much as its dimensions do.
Why not a video or a newer format?
APNG and animated WebP support full transparency and millions of colors, and are often smaller than GIF. They're better formats, but support for them as custom emoji varies by platform, while GIF works for animated custom emoji on Slack, Discord, Twitch and Teams. That's why Gifmoji exports animated emoji as GIF. Its PNG and WebP options save a single still frame, for platforms or uses where you want a static emoji with smooth edges.
What makes a good loop
Because emoji loop forever, the jump from the last frame back to the first should be invisible. Gifmoji's animations are built as loops: a spin ends where it started, a bounce lands back in its starting position. When you look at an effect in the preview, you're seeing exactly the loop that will play in chat.
Common questions
Why does my GIF play at a different speed in different apps?
Apps handle GIF timing slightly differently, and most slow down frames shorter than about 20 milliseconds to a default of around 100 milliseconds. Exports at normal speeds play consistently.
Why do the colors in my emoji look slightly different from the photo?
Each GIF frame is limited to 256 colors, so the photo's colors are reduced to the closest 256. Smooth gradients are affected most. Removing the background usually helps.