Fit a GIF under Discord's limit
Drop a GIF — smallcord measures it on your device and plans the smallest way to post it, honestly.
The honest fix is an MP4. A GIF is a hugely inefficient way to store animation; the same clip as a silent H.264 .mp4 is usually 5–20× smaller, and Discord autoplays an MP4 inline exactly like a GIF — loops and all. So smallcord's main recommendation is to transcode to MP4. In-browser transcoding isn't shipped (the ready-made ffmpeg WebAssembly builds are GPL / non-redistributable — see below), so this page plans the exact settings and hands you a one-line command to run locally. A keep-it-a-GIF fallback is offered too.
GIF fit planner
Everything runs in your browser — your files never leave your device.
How the planner works
Pick your tier
10 MB (free), 50 MB (Nitro Basic), or 500 MB (Nitro) — match the account you'll upload from.
Drop your GIF
Your browser reads its size, dimensions and frame count straight from the file — no upload — and works out the fit.
Run the command
Copy or download the ready-made ffmpeg line — MP4 (recommended) or a smaller GIF — then upload the result.
Why an MP4 beats a "smaller GIF"
A GIF stores every frame as a palette-indexed bitmap with only lightweight LZW compression and a maximum of 256
colors. That's why GIFs balloon: a few seconds of motion can be tens of megabytes. H.264 (the codec inside a normal
.mp4) uses motion prediction between frames and proper compression, so the identical animation routinely
lands 5–20× smaller with better color. Discord treats a small, silent, looping MP4 exactly like a GIF —
it autoplays inline, loops, and needs no click. smallcord reads your GIF's real dimensions and frame count, then the
same planGif math that's unit-tested in this repo works out a video bitrate that should land under your
tier's cap (with ~3% container headroom) and gives you the ffmpeg command.
Honest limits: this is a planning estimate, not a byte-exact promise. Real encoders hit a target average
bitrate with tolerance, and how well a clip compresses depends on its motion and detail. If the MP4 lands slightly
over, drop the bitrate ~5% and re-run. The keep-it-a-GIF fallback (scale down, fewer frames, smaller palette) is even
rougher — GIF size swings 2–3× with content — so it's there for when you genuinely need a .gif, with the
tradeoff spelled out. If even the MP4 route can't fit a very long clip, the tool says so plainly instead of guessing.
Questions
Is my GIF uploaded anywhere?
No. This page reads the file's bytes on your own device — parsing the GIF header for its width, height and frame count — and does all the planning locally. There is no server to receive it; you can confirm in your browser's Network tab that choosing a file makes zero requests. The actual transcode also runs on your machine, via the command we give you.
Wait, the output is an MP4, not a tiny GIF?
Right — and that's on purpose. There is no honest way to make a GIF "magically tiny"; the format itself is the
problem. Converting to a silent H.264 MP4 is how you actually get a small file that still animates. Discord plays
that MP4 inline just like a GIF: it autoplays, loops, and no one has to click it. If you truly need a real
.gif (for somewhere that only accepts GIFs), use the "keep it a GIF" fallback the tool shows — it shrinks
by scaling down, dropping frames and cutting colors, with visible quality loss.
Why can't smallcord just convert it in the browser?
It technically can, with ffmpeg compiled to WebAssembly — but every ready-made build of that engine bundles GPL-licensed encoders (libx264/libx265) or is marked non-redistributable, which doesn't fit this project's licensing. Rather than ship something we can't license cleanly, smallcord plans the exact settings and hands you a local command. A permissively licensed in-browser encoder is on the roadmap; until then this is the honest, reliable path.
I don't have ffmpeg. What's the easiest way?
Install ffmpeg (ffmpeg.org — Windows, macOS, Linux) and paste the command the planner gives you into a terminal in the folder with your GIF, or use the Download .sh button and run the saved script. Prefer a window with buttons? HandBrake (handbrake.fr, free) can open a GIF and export an MP4 — set the average video bitrate to the number smallcord shows.
The MP4 came out a little over the limit — now what?
That's normal: encoders aim for an average bitrate and overshoot slightly on busy footage. Lower the video bitrate by roughly 5% and re-encode, or trim a few frames off the clip. Reducing the resolution or frame rate also helps a lot.
More smallcord tools
Got a different file? Fit a video (MP4/MOV/WebM) plans a target bitrate the same way, and fit an image re-encodes a PNG or JPEG fully in your browser to slip under the same Discord caps.