NearVid

2026-08-09

How to turn a screen recording into a Slack custom emoji GIF (under Slack’s 128KB limit)

You clip a good three seconds out of a screen recording or a call — a reaction, a running gag, a perfectly-timed error dialog — and want it as an animated custom emoji in Slack. You export a GIF, try to upload it, and Slack rejects it. Not because your workspace doesn't allow animated emoji; almost always because the file is bigger than Slack actually allows one to be. Here's the real limit, why a straightforward export usually blows past it, and how to use NearVid's existing GIF controls to land under it without repeated trial-and-error uploads.

What Slack actually asks for

Slack's own help center article on adding custom emoji states it plainly: "Square images under 128KB and with transparent backgrounds work best. Images can be in JPG, PNG, or GIF format." For animated emoji specifically, the same article adds a second, separate ceiling: "GIFs can include up to 50 frames." That's two different limits stacked on top of each other — a byte budget and a frame budget — and a GIF that's fine on one can still fail the other.

Worth being precise about the wording: Slack's own phrasing is "work best," not "required," for the square/transparent part. A non-square, non-transparent GIF isn't necessarily rejected outright the way an over-128KB or over-50-frame one is — but it's the shape Slack itself recommends, and a wide 16:9 screen-recording clip squeezed into a small round emoji slot is exactly the kind of image that "works best" square.

Why a straightforward export blows past 128KB fast

128KB is a tiny budget — smaller than most single photos straight off a phone. An animated GIF has to spend bytes on every frame it contains, and NearVid's own default GIF settings (10fps, 320px wide) aren't tuned for that ceiling; they're tuned for a normal, watchable clip. Two variables set that budget more than anything else:

  • Frame count. Frames per second multiplied by duration in seconds is the total frame count, and every one of those frames costs bytes. Ten seconds at 10fps is 100 frames — twice Slack's own 50-frame ceiling before the byte budget even enters the picture.
  • Pixel count per frame. A wider export has more pixels to encode per frame, and GIF's palette-based, largely non-predictive compression (there's no equivalent to a video codec's motion-compensated inter-frame prediction) means those bytes add up close to linearly with resolution, not sublinearly the way a modern video codec's would.

Duration is the input that multiplies both of those at once — a longer clip is both more frames and, if anything moves, more per-frame change to encode — which is exactly why it's the first thing worth cutting down, not the last.

The three levers NearVid actually gives you here

NearVid's GIF export exposes exactly three controls, and each one maps onto Slack's two ceilings differently:

  • Duration, via trim first. NearVid's trim is a lossless stream copy — cutting the source down to just the seconds you actually want costs nothing extra and happens before the GIF encode even starts, so there's no reason to export the whole clip and hope. NearVid's GIF export also hard-caps duration at 10 seconds regardless of what you request — a ceiling that exists, per the tool's own source comment, "since GIFs get huge fast." For a Slack emoji, you want to cut far below that 10-second ceiling, not right up against it.
  • Frame rate, via the fps preset. NearVid offers three fixed options — 5, 10, or 15fps, not a free-form slider. At the lowest preset, 5fps, a 10-second clip is exactly 50 frames — sitting right at Slack's ceiling, with zero margin. Drop the duration well under 10 seconds at 5fps and the frame count drops proportionally, which is the actual point: 5fps over 2 seconds is 10 frames, comfortably inside Slack's limit with room to spare.
  • Width, via the width preset. NearVid offers three fixed presets — 240, 320, or 480px — and always derives height automatically from the source's own aspect ratio (scale=width:-1 in the underlying ffmpeg filter). There's no crop-to-square option; a 16:9 screen recording exported at any width preset stays 16:9, just smaller. The narrowest preset, 240px, is the one actually worth reaching for here — fewer pixels per frame is the lever that does the most for the byte budget, more than fps does once frame count is already small.

A workflow that gets there without repeated uploads

Put together, the order that avoids the most re-tries: trim first, down to roughly one to three seconds — well under both the 10-second engine cap and the 50-frame Slack ceiling — using NearVid's lossless trim. Then export the GIF at the 5fps and 240px presets, the narrowest options on both axes NearVid exposes. Check the resulting file's actual size yourself before uploading — NearVid's WebM and MP4 exports show an "≈" expected-size estimate next to the quality selector before you commit, but that estimate doesn't run for GIF output at all, so there's no preview number here; you only find out the real size once the export finishes. If it's still over 128KB, the next cut is duration again, not fps or width — trimming another second off does more for the byte count than any further preset change will.

What NearVid doesn't do here

To be specific about scope: NearVid doesn't crop to square, add a transparent background, or know Slack's limits at all — it has no "target 128KB" mode or Slack-specific preset, and it doesn't upload anywhere for you. The width presets stop at 240px; there's no narrower custom value if 240px still isn't small enough for a particular clip's content, and the fps presets stop at 5fps, so there's no way to go lower than 10 frames per 2 seconds. All three exports still run entirely on-device — the clip never leaves your browser tab to get turned into a GIF — but getting a specific clip under a specific external byte ceiling is still a manual check-and-retry loop, not a guarantee NearVid makes for you.

The honest summary

Slack's own help article sets two real, separate ceilings for a custom emoji GIF: under 128KB, and up to 50 frames. NearVid's default GIF settings aren't built for either one, but its trim, fps, and width controls can get you there deliberately: trim to one to three seconds first (free, lossless), export at the 5fps / 240px presets (the narrowest NearVid offers), and check the actual resulting file size yourself, since GIF output — unlike WebM or MP4 — doesn't get NearVid's "≈" size estimate ahead of time. Duration is the lever that does the most work of the three; reach for it first, before touching fps or width again.

Sponsored
← NearVid

This page shows ads only if you consent.