Back to Blog
Guide

How to Make an Emoji From a Video (Slack and Discord)

To make an emoji from a video, cut 1 to 2 seconds, crop it to a square, scale it to 128 x 128 and save it as a GIF under 128 KB for Slack or 256 KB for Discord. One tested ffmpeg command, the frame rate and color settings that decide the file size, and a free browser tool that shrinks the GIF for you.

Slack Green Team
September 28, 2026
October 4, 2026
5 min read
Share:
emoji
slack
discord

To make an emoji from a video, cut the clip to 1 or 2 seconds, crop it to a square, scale it to 128 x 128 pixels, and save it as an animated GIF. Emoji do not accept video files, so the GIF is the step that matters. Slack takes emoji up to 128 KB and 50 frames; Discord takes up to 256 KB. Frame rate and color count decide whether you fit: on our test clip, 2 seconds at 30 frames per second came out at 566 KB, and the same 2 seconds at 10 frames per second with 32 colors came out at 119 KB, under both limits.

You can do it with one ffmpeg command, below, or convert the clip to a GIF with any video-to-GIF tool and then drop the GIF into our free emoji resizer. The resizer keeps the animation, cuts frames and colors until the file is under 128 KB, and runs in your browser.

We ran every command on this page with ffmpeg 8.1.1 on 28 September 2026.

Why an emoji from a video has to be a GIF

Slack accepts JPG, PNG and GIF for custom emoji. Discord accepts JPEG, PNG, GIF and WEBP. Neither takes MP4 or MOV, so a video emoji is a short looping GIF made from the video's frames.

Frames from a test emoji made from a video: a 2 second clip at 12 fps, 128 x 128

The limits that matter:

SlackDiscord
File sizeUnder 128 KBUnder 256 KB
Frames50 in Slack's help; a 150-frame GIF passed our September 30 upload testNo frame limit in Discord's help
ShapeSquareSquare works best
NameLetters, numbers, hyphens, underscoresLetters, numbers, underscores

At 128 x 128, each frame of a busy clip costs several kilobytes, so the frame count sets the size. Fifty frames is 5 seconds at 10 frames per second, or about 1.7 seconds at 30.

Make an emoji from a video with ffmpeg

ffmpeg is free on Mac, Windows and Linux (on a Mac: brew install ffmpeg). This command takes 2 seconds starting at 0:01, crops the middle square, scales it to 128 x 128, and builds a GIF with a 32-color palette at 10 frames per second:

# 2 seconds from 0:01, square crop, 128 px, 10 fps, 32 colors
ffmpeg -ss 1 -t 2 -i clip.mp4 -vf "fps=10,crop=ih:ih,scale=128:128:flags=lanczos,split[a][b];[a]palettegen=max_colors=32[p];[b][p]paletteuse" emoji.gif

What each part does:

  • • -ss 1 -t 2 starts at 1 second and keeps 2 seconds. Change these to pick your moment.
  • • crop=ih:ih cuts a square as tall as the video from the center. For a vertical phone video use crop=iw:iw.
  • • scale=128:128 sets the emoji size.
  • • palettegen and paletteuse build a palette from the clip itself, which looks far better than GIF's default colors. max_colors=32 keeps the file small.
  • Check the result before you upload:

    ls -lh emoji.gif          # must be under 128K for Slack, 256K for Discord
    ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of csv=p=0 emoji.gif   # frame count, 50 or fewer for Slack

    We uploaded both GIFs to Slack

    On October 4, 2026 we rebuilt the 10 fps and 30 fps GIFs from the same test clip with ffmpeg 8.1.1 and uploaded them to our own Slack workspace through the emoji.add call the Add Emoji dialog uses:

    emoji10.gif   120,844 bytes, 20 frames   -> ok, stored as a 128 x 128 GIF, 120,833 bytes, 20 frames
    emoji30.gif   588,209 bytes, 60 frames   -> resized_but_still_too_large

    The 10 fps version went in unchanged, frame for frame. The 30 fps version was refused with resized_but_still_too_large, which the dialog shows as "This image is a bit too big, even after resizing". So the 128 KB limit is checked after Slack's own resize, and frames and colors are what you cut to get under it. We deleted the test emoji afterwards.

Never appear "away" on Slack again

Cloud-based. No downloads. Works 24/7 even when your laptop is off.

Frame rate and colors decide the file size

We made the same 2 seconds of a 1280 x 720 test video into a 128 x 128 GIF three ways:

SettingFramesFile sizeFits SlackFits Discord
30 fps, 256 colors60566.2 KBNoNo
12 fps, 64 colors24174.4 KBNoYes
10 fps, 32 colors20118.6 KBYesYes

The test clip was a fractal zoom with fine detail in every frame, a hard case for GIF. If your file is still too big: shorten the clip first, then drop to 8 frames per second, then 16 colors, then 96 pixels. Emoji show small in chat, so each step is hard to see.

Make it without the command line

  • Turn the clip into a GIF. Any video-to-GIF converter works; on an iPhone, the Shortcuts app has a Make GIF action. Keep it short and square if the tool allows it.
  • Shrink it for emoji. Drop the GIF into our emoji resizer, pick 128 px and Crop to square or Fit whole image, and download.
  • Our emoji resizer on the 30 fps GIF: 566.2 KB and 60 frames in, 104.9 KB and 50 frames out, animation kept

    We gave the resizer the 30 fps file from the table, 60 frames and 566.2 KB. It returned a 64 x 64 GIF with 50 frames and 104.9 KB, under Slack's limits. It cut the frame count to Slack's 50 by spreading the kept frames across the clip, so the loop lasts as long as before. It lowered the size to 64 pixels to get under 128 KB; with a shorter or slower clip it stays at 128.

    To add an effect such as intensifies, spin or party to a still frame, use the emoji maker instead.

    Upload the video emoji

    Slack: click your workspace name, then Customize workspace, then Add custom emoji, and upload the GIF. The steps for desktop and iPhone are in how to add custom emoji to Slack. If Slack says the file is too big, see Slack GIF size limit. If the emoji does not animate after upload, see Slack GIF not playing.

    Discord: open Server Settings, Emoji, Upload Emoji, or use Add Emoji in the emoji picker. Animated emoji slots need Nitro or Nitro Basic on the server. The full steps are in how to make a custom emoji for Discord, and size errors in Discord emoji too big.

    FAQ

    Can you make an emoji from a video?

    Yes, as an animated GIF. Cut 1 to 2 seconds, crop to a square, scale to 128 x 128, and keep the GIF under 128 KB for Slack or 256 KB for Discord.

    Can I upload an MP4 as an emoji?

    No. Slack and Discord accept image formats only. Convert the MP4 to a GIF first.

    How long can a video emoji be?

    In Slack, 50 frames: 5 seconds at 10 frames per second. In practice the 128 KB size limit usually stops you first, at 1 to 3 seconds.

    Why is my video GIF too big for Slack?

    Too many frames or colors. Lower the frame rate to 10 or 8, cut the colors to 32, shorten the clip, or run it through the emoji resizer.

    How do I make a GIF emoji from a video on my phone?

    Make a GIF from the clip with a GIF app or the iPhone Shortcuts Make GIF action, then open the emoji resizer in your phone browser to shrink it to emoji size.

    Always Active

    Stop Jiggling Your Mouse.

    Join hundreds of remote workers who never worry about their Slack status. Set it up once, stay green forever.

    Related Articles

    Guide

    How to See All Your DMs in Slack, Including the Hidden Ones

    The DMs tab lists your direct messages with people. App DMs, Slackbot and DMs with deleted accounts sit elsewhere. We compared the tab with the full list the Slack API returned.

    Slack Green Team
    Guide

    Slack Images Not Showing? 5 Causes We Reproduced

    We uploaded images to a Slack test channel and then switched each image setting off, ran /collapse, and posted from a bot that was not in the channel. Five causes, each reproduced.

    Slack Green Team
    Guide

    How to Message Yourself on Slack (and What It Notifies)

    Your own name under Direct messages opens a private DM with yourself. We sent it a note, a file, a scheduled message and a reminder, and checked which ones raised a badge.

    Slack Green Team