Skip to content
CreatorPrivacyKit

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 lengthVideo rate that fitsHighest tier whose floor it meets
15 s5,353 kbps4K
30 s2,612 kbps1440p
1 min1,242 kbps1080p
2 min557 kbps480p
5 min146 kbpsbelow 480p
10 min9 kbpsbelow the compressor's 80 kbps minimum
20 minnone left128 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 clipSettingOutput vs targetFormat, sizeAverage rate, whole fileEncode time
1080p30, 60 s, noisy synthetic
source 54.1 MB
Balanced, original size15.3 MB, over by 53%MP4 H.264/AAC, 1920×10802.14 Mbps5 s
1080p30, 60 s, noisy synthetic
source 54.1 MB
Smallest preset10.3 MB, over by 3%WebM VP9/Opus, 1920×10801.43 Mbps10 s
1080p30, 60 s, noisy synthetic
source 54.1 MB
Balanced, 720p9.6 MB, underMP4 H.264/AAC, 1280×7201.34 Mbps15 s
1080p30, 180 s, clean synthetic
source 125.4 MB
Balanced, original size43.0 MB, over by 330%MP4 H.264/AAC, 1920×10802.01 Mbps17 s
1080p30, 180 s, clean synthetic
source 125.4 MB
Smallest preset20.4 MB, over by 104%WebM VP9/Opus, 1920×10800.95 Mbps21 s
1080p30, 180 s, clean synthetic
source 125.4 MB
Balanced, 720p12.4 MB, over by 24%MP4 H.264/AAC, 1280×7200.58 Mbps29 s
1080p30, 300 s, noisy synthetic
source 163.1 MB
Smallest preset29.3 MB, over by 193%WebM VP9/Opus, 1920×10800.82 Mbps40 s
1080p30, 300 s, noisy synthetic
source 163.1 MB
Balanced, 480p13.2 MB, over by 32%MP4 H.264/AAC, 852×4800.37 Mbps164 s
1440p30, 300 s, screen-recording style
source 16.7 MB
Balanced, original size12.3 MB, over by 23%MP4 H.264/AAC, 2560×14400.34 Mbps51 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 rateBytesAgainst 10,000,000Against 10,485,760Raw Base64 charsMIME CRLF bytesWallSHA-256
1237k10,308,701over by 308,701under by 177,05913,744,93614,106,6469.499 s164494a7ec562adac74daeda2f8db45acd1dadfd28d79e480f030126a4b6cc54
1205k10,061,280over by 61,280under by 424,48013,415,04013,768,0689.365 se530fb5fdda682dd3953f49d6cf68917286575a65ed815ea8ac54a1d5a4fa4a6
1138k9,538,003under by 461,997under by 947,75712,717,34013,052,0089.461 s6bef8d1500d03423b1755c83114d815fcea65a44910c085884c9ba26de4fef98
872k7,397,539under by 2,602,461under by 3,088,2219,863,38810,122,9529.425 s52c3afcf1d398b85d4f9f9b6605b50fddabd4f1689d284de35c8605d514fc669
805k6,979,076under by 3,020,924under by 3,506,6849,305,4369,550,3169.500 s66a71fab512be8e85a3b8f29518230e91c973c50ab989d05e64aa99cb99e3b9b

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