smallcord

Fit a video under Discord's limit

Drop a clip — smallcord reads its length on your device and computes the exact bitrate that fits, then gives you the command to do it.

Honest heads-up: smallcord does not transcode video inside your browser yet. The only ready-made in-browser video engines (ffmpeg compiled to WebAssembly) ship under a GPL / non-redistributable licence that doesn't fit this project — so rather than ship something we can't license cleanly, this page does the reliable part: it plans the exact bitrate and hands you a one-line command to run the transcode locally. Need to shrink a single image right now? The image tool works fully in your browser today.

Video fit planner

Your Discord tier Which one?
Drop a video above or click to choose one. It is read on your own device to measure its size and length — nothing is uploaded.

Everything runs in your browser — your files never leave your device.

How the planner works

1

Pick your tier

10 MB (free), 50 MB (Nitro Basic), or 500 MB (Nitro) — match the account you'll upload from.

2

Drop your video

Your browser reads the file's size and length locally — no upload — and works out the target bitrate to fit.

3

Run the command

Copy the ready-made ffmpeg line (or use the HandBrake tip) to transcode on your machine, then upload.

Why a bitrate, not a magic button

Video size is almost entirely bitrate × duration. To land a clip under a hard cap, you pick a total bitrate so that bitrate × seconds ≈ target bytes, split between video and audio, with a little headroom for the container's own overhead. smallcord does exactly that math (the same planner that's unit-tested in this repo): it reserves 128 kbps for audio, keeps ~3% headroom for MP4 mux overhead, and reports the video bitrate that should land under your limit. If even the lowest watchable bitrate can't fit the clip's length into the cap, it says so plainly and suggests trimming, lowering resolution, or a bigger tier — instead of handing you a number that won't work.

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 given clip compresses depends on its motion and detail — a static screen-share shrinks far more cleanly than fast gameplay. If a first pass lands slightly over, drop the video bitrate about 5% and re-run. The command uses H.264 (libx264) in an MP4, which Discord previews inline on every platform.

Questions

Is my video uploaded anywhere?

No. This page reads the file's size and duration on your own device using the browser's built-in video decoder, and computes the bitrate 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.

Why can't smallcord just transcode it in the browser?

It technically can, with ffmpeg compiled to WebAssembly — but the ready-made builds of that engine bundle GPL-licensed encoders (libx264/libx265), or are marked non-redistributable, which doesn't fit this project's licensing. We'd rather be honest about that than ship something we can't license cleanly. A clean, permissively licensed in-browser encoder is on the roadmap; until then the planner plus a local command gets the job done reliably.

I don't have ffmpeg. What's the easiest way?

HandBrake (handbrake.fr) is a free, open-source app for Windows, macOS, and Linux with a normal window and buttons. Load your video, choose the MP4/H.264 preset, set the average video bitrate to the number smallcord shows, and export. If you're comfortable in a terminal, install ffmpeg and paste the command from the planner.

The result 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 seconds off the clip. Cutting the resolution to 720p or 480p also helps a lot, because fewer pixels need fewer bits to look sharp at the same bitrate.