Compress a video to 10 MB
Compress a video to 10 MB?
Ten megabytes is the size of a short phone clip and also a common mail-server message limit. Both uses need different targets, and this page shows the measured results for each. Browser runs measured 18 October 2026. FFmpeg size-cap runs measured 28 October 2026.
Gmail Help: Send attachments with your Gmail message; Microsoft Support: reduce attachment size in Outlook
Last updated
Ten megabytes is the size of a short phone clip and also a common mail-server message limit. Both uses need different targets, and this page shows the measured results for each.
Browser runs measured 18 October 2026. FFmpeg size-cap runs measured 28 October 2026.
Rate by clip length at 10 MB
The same arithmetic as the 8 MB page, with 25% more room. A 30 second clip fits a rate that looks fine at 1080p. Past 5 minutes the picture rate falls below what 480p needs.
| Clip length | Video rate that fits | Highest tier whose floor it meets |
|---|---|---|
| 15 s | 5,353 kbps | 4K |
| 30 s | 2,612 kbps | 1440p |
| 1 min | 1,242 kbps | 1080p |
| 2 min | 557 kbps | 480p |
| 5 min | 146 kbps | below 480p |
| 10 min | 9 kbps | below the compressor's 80 kbps minimum |
| 20 min | none left | 128 kbps of audio alone fills the target |
The rate column is the compressor's own bitrateFromTargetSize function for 10 MB (1 MB = 1,048,576 bytes), assuming 128 kbps of audio is kept and 2% container overhead. The tier column compares that rate with the floor table in the compressor's constants.js: 1.2 Mbps for 1080p, 0.7 for 720p, 0.35 for 480p. The floors are this site's rule of thumb for watchable output, not a standard.
If the 10 MB is a mail limit, the file must be smaller
Microsoft's help lists 10 MB as the default maximum message size in Exchange, and says administrators can change it (Microsoft support). The limit applies to the whole message. Attachments travel as MIME and are Base64-encoded, which turns every 3 bytes into 4 (RFC 2045, section 6.8).
The consequence is arithmetic: a 10 MB message holds an attachment of at most 10 × 3/4 = 7.5 MB, before the message body and headers take their share. Aim for 7 MB if the cap is a message cap. The email video compressor page has presets for Gmail and Outlook with their own published numbers.
Measured runs at a 10 MB target
The browser table below comes from one run set on 2026-10-18: the live /tools/video-compressor/ page driven by headless Chrome/154.0.8037.92 on 13th Gen Intel(R) Core(TM) i9-13900K (32 threads, 126 GB RAM, Linux 7.0.0-34-generic), software WebCodecs with no GPU. The sources are synthetic files made with ffmpeg (ffmpeg version 6.1.1-3ubuntu5): a test pattern, with temporal noise added where the label says noisy, plus a 48 kHz sine tone. They are not camera footage. Outputs were saved through the page's Save button and measured with ffprobe. The raw records are in the repository at docs/evidence/runs/2026-10-18-video-target-runs.json. A phone or a machine with a hardware encoder can land at different sizes, and that was not measured.
| Source clip | Setting | Output vs target | Format, size | Average rate, whole file | Encode time |
|---|---|---|---|---|---|
| 1080p30, 60 s, noisy synthetic source 54.1 MB | Balanced, original size | 15.3 MB, over by 53% | MP4 H.264/AAC, 1920×1080 | 2.14 Mbps | 5 s |
| 1080p30, 60 s, noisy synthetic source 54.1 MB | Smallest preset | 10.3 MB, over by 3% | WebM VP9/Opus, 1920×1080 | 1.43 Mbps | 10 s |
| 1080p30, 60 s, noisy synthetic source 54.1 MB | Balanced, 720p | 9.6 MB, under | MP4 H.264/AAC, 1280×720 | 1.34 Mbps | 15 s |
| 1080p30, 180 s, clean synthetic source 125.4 MB | Balanced, original size | 43.0 MB, over by 330% | MP4 H.264/AAC, 1920×1080 | 2.01 Mbps | 17 s |
| 1080p30, 180 s, clean synthetic source 125.4 MB | Smallest preset | 20.4 MB, over by 104% | WebM VP9/Opus, 1920×1080 | 0.95 Mbps | 21 s |
| 1080p30, 180 s, clean synthetic source 125.4 MB | Balanced, 720p | 12.4 MB, over by 24% | MP4 H.264/AAC, 1280×720 | 0.58 Mbps | 29 s |
| 1080p30, 300 s, noisy synthetic source 163.1 MB | Smallest preset | 29.3 MB, over by 193% | WebM VP9/Opus, 1920×1080 | 0.82 Mbps | 40 s |
| 1080p30, 300 s, noisy synthetic source 163.1 MB | Balanced, 480p | 13.2 MB, over by 32% | MP4 H.264/AAC, 852×480 | 0.37 Mbps | 164 s |
| 1440p30, 300 s, screen-recording style source 16.7 MB | Balanced, original size | 12.3 MB, over by 23% | MP4 H.264/AAC, 2560×1440 | 0.34 Mbps | 51 s |
What the runs show
At the original 1080p size Balanced wrote 15.3 MB for the 60 second noisy clip and 43.0 MB for the 180 second clean one. Neither is near 10 MB. Switching to 720p gave 9.6 MB for the first clip, which is under 10 MB, and 12.4 MB for the second, which is not.
The screen-recording style clip is the exception. It is five minutes of mostly still pixels, and at 1440p it came out at 12.3 MB, close to the target with no resolution change. It was already a small file (16.7 MB), so it shows how much easier static content is than moving content. Real screen captures vary, and one synthetic example does not predict yours.
The five-minute noisy clip shows the limit. At 480p it ended at 13.2 MB, and it took 164 seconds to encode. No setting in the compressor reached 10 MB for that clip. Cutting it into shorter parts is the practical answer. The Smallest preset wrote WebM (VP9 video, Opus audio) in every run, not MP4. Check that the app you send to accepts WebM before you choose it.
FFmpeg two-pass files, and the Base64 body of a 10 MB message
On 28 October 2026, ffmpeg version 6.1.1-3ubuntu5 on 13th Gen Intel(R) Core(TM) i9-13900K (Linux 7.0.0-38-generic x86_64) encoded one synthetic source, then two-pass libx264 files with AAC audio at 128k and preset medium. The source is lavfi testsrc2 at 1920×1080, 30 fps, 60 seconds, plus a 440 Hz sine, libx264 veryfast at 8000k, AAC at 160k, and +faststart. ffprobe reports 60 seconds, 1920×1080 H.264 at 8,004,566 bps, and AAC at 153,807 bps. The file is 61,252,959 bytes, SHA-256 1b690c37e69e07279073be5cb797a1e9f87017c1fea8da64d9e47e7d27a66377. The size-cap outputs use no -pix_fmt and no +faststart. Read any finished file with wc -c. The records are in docs/evidence/runs/2026-10-28-size-cap-encodes.json.
Rendobar's published command for a 60 second file is (10 * 8192) / 60 - 128 = 1237 kbit/s, preset medium, with no printed output size. Linuxize's decimal form is (10 * 8000 / 60) - 128 = 1205 kbit/s before rounding down. Their page says to lower the rate a few percent when the file is over the cap. The 1138k row is a 5 percent reserve on 10,000,000 bytes: (9.5 * 8000 / 60) - 128, rounded down. RFC 2045, section 6.8 turns every 3 bytes into 4 Base64 characters. A MIME body also wraps at 76 columns. The table's last two columns are the raw character count and the CRLF-wrapped body of that same string, measured on the file, before message headers.
| Video rate | Bytes | Against 10,000,000 | Against 10,485,760 | Raw Base64 chars | MIME CRLF bytes | Wall | SHA-256 |
|---|---|---|---|---|---|---|---|
1237k | 10,308,701 | over by 308,701 | under by 177,059 | 13,744,936 | 14,106,646 | 9.499 s | 164494a7ec562adac74daeda2f8db45acd1dadfd28d79e480f030126a4b6cc54 |
1205k | 10,061,280 | over by 61,280 | under by 424,480 | 13,415,040 | 13,768,068 | 9.365 s | e530fb5fdda682dd3953f49d6cf68917286575a65ed815ea8ac54a1d5a4fa4a6 |
1138k | 9,538,003 | under by 461,997 | under by 947,757 | 12,717,340 | 13,052,008 | 9.461 s | 6bef8d1500d03423b1755c83114d815fcea65a44910c085884c9ba26de4fef98 |
872k | 7,397,539 | under by 2,602,461 | under by 3,088,221 | 9,863,388 | 10,122,952 | 9.425 s | 52c3afcf1d398b85d4f9f9b6605b50fddabd4f1689d284de35c8605d514fc669 |
805k | 6,979,076 | under by 3,020,924 | under by 3,506,684 | 9,305,436 | 9,550,316 | 9.500 s | 66a71fab512be8e85a3b8f29518230e91c973c50ab989d05e64aa99cb99e3b9b |
The 1237k file is 10,308,701 bytes: over by 308,701 against 10,000,000, and under by 177,059 against 10,485,760. The 1205k file is 10,061,280 bytes. The 1138k file is 9,538,003 bytes. A repeat of the 1138k and 805k commands produced the same SHA-256, and the wall times in those two rows are the repeat. All five outputs are smaller than the 61,252,959 byte source, and each probed duration is 60.01 seconds at 1920×1080 with audio at 128,080 bps.
The 872k file is 7,397,539 bytes. Its raw Base64 string is 9,863,388 characters, under 10,000,000. The same string wrapped at 76 columns with CRLF is 10,122,952 bytes, over 10,000,000 before headers. The 805k file is 6,979,076 bytes, under by 20,924 against 7,000,000. Its raw Base64 string is 9,305,436 characters and the wrapped body is 9,550,316 bytes, both under 10,000,000 before headers. The email video compressor has the Gmail and Outlook presets.
Old and new caps near 10 MB
Discord's File Attachments FAQ lists 20 MB for free accounts, raised from 10 MB earlier in 2026. A clip prepared for a 10 MB cap fits under that with room to spare. The Discord compressor starts at 19 MB.
The MP4 files the compressor wrote still carry container tags (major_brand, minor_version, compatible_brands, creation_time). The creation_time value is the time of the encode, not of the original recording. For a file you plan to publish, run the output through Verify metadata removed and read Remove MP4 metadata.
FAQ
How big can the attachment be if my mail server limit is 10 MB?
RFC 2045 turns 3 file bytes into 4 Base64 characters, so 7,500,000 file bytes is the raw character budget inside a 10,000,000 byte message. On the 28 October 2026 872k file (7,397,539 bytes) the raw Base64 string was 9,863,388 characters, and the 76-column CRLF body was 10,122,952 bytes before headers. The 805k file was 6,979,076 bytes, with a wrapped body of 9,550,316 bytes.
How long is a 10 MB video?
Length and bitrate decide the size together. The rate table above uses this site's 10 MB, which is 10,485,760 bytes, from 15 seconds to 20 minutes. On the measured 60.01 second 1080p file, 1205k video plus 128k AAC wrote 10,061,280 bytes, and 1138k wrote 9,538,003 bytes.
Which setting gives the best quality at 10 MB?
In these runs the 720p Balanced setting was the first that reached 10 MB on one-minute clips, and it keeps an MP4 container. Smallest comes out smaller at full size but is WebM.
Can I trust the estimate before the run?
Use it as a guide only. In the runs on this page the estimate said about 10 MB and the first 1080p results were between 15 and 43 MB. The result card after the run is the real size.
More tools
Video Compressor · Video size limits by platform · Video compression guide · Remove MP4 metadata · Verify metadata removed