Compress a video for Discord
To send a video on Discord without a Nitro subscription, it has to fit under the upload limit. As of August 2026, it's 20 MB for free accounts (50 MB with Nitro Basic, 500 MB with Nitro); older guides often cite 10 or 25 MB. Check the current limit: the default value aims for 19 MB to leave a margin.
Updated on · Platform limits checked on
Shown in the file's properties.
Lowering the resolution helps when the target size is very small.
Only used by the first command (analysis).
How to use it
- Install ffmpeg if you haven't already.
- Enter the size you want and the duration of the video: the video bitrate is calculated for you.
- Run the two commands one after the other, in the video's folder: the first analyzes, the second encodes.
- Check the resulting file size. If it's slightly over, lower the target size by 1 to 2 MB and try again.
- Then delete the ffmpeg2pass-0.log files created by the first command.
Aiming for the right size
The calculator takes the size you want and the duration to work out the video bitrate. With 19 MB for 90 seconds, you get a bitrate of about 1,500 kbps, which gives a decent picture at 720p. The longer the video, the lower the bitrate: beyond a few minutes, lower the resolution or trim the section you need.
If the video is still too big
Three levers, in order of effectiveness: trim the section you need, lower the resolution to 720p or 480p, then lower the audio bitrate. You can also share a link to online storage: a link doesn't count toward the upload limit.
Cut a video without re-encoding
If your video is already small
This method aims for a size; it doesn't always reduce it: if the original video is already smaller than the target size, re-compressing it can make it larger. In our tests, a 0.96 MB video grew to 2.4 MB with a 20 MB target. In that case, keep the original file, or use the quality-based method (CRF).
Frequently asked questions
Why two commands?
Two-pass encoding first analyzes the video, then distributes the bitrate to get close to the target size. It's the most reliable method for hitting a specific file size.
Is the final file exactly the size I entered?
No: it's usually a bit smaller. The calculation keeps a 5% margin, and a bitrate cap (the -maxrate and -bufsize options) stops ffmpeg from exceeding the target, which would otherwise happen on low-motion videos. Here, 1 MB equals 1,000,000 bytes.
How do I find out my video's duration?
Open the file's properties, or run ffprobe on the video; it is installed with ffmpeg.
What is Discord's limit?
It has changed several times: 8 MB, then 25 MB, then 10 MB in 2024, then 20 MB in August 2026 for free accounts. Check Discord's official help for the current value.
What is -x264-params mbtree=0 for?
It disables an encoder optimization that can make the second pass fail on some videos (the "Incomplete MB-tree stats file" error). It very slightly increases the file size for a given quality.
The resulting file is much smaller than the target size. Is that normal?
Yes, for a very static video (slideshow, screen recording): it doesn't need all the available bitrate, and ffmpeg may display "2pass curve failed to converge". The result is still valid.
ffmpeg shows "Unrecognized option 'fps_mode'". What should I do?
Your version of ffmpeg is older than 5.1. Update ffmpeg, or replace "-fps_mode passthrough" with "-vsync passthrough" in both commands.
More tools
- Compress a video for WhatsApp
- Shrink a video to a specific size (in MB)
- Compress a video to send by email
- Compress a video for Telegram
- Prepare a video for Instagram (Reels, Stories, posts)
- Prepare a video before uploading it to YouTube
- Reduce video size with H.265 (HEVC)
- Convert MKV to MP4 without re-encoding