How to shrink a video to a specific file size on a Mac
A video’s file size is its bitrate multiplied by its duration, so shrinking to a specific size means choosing a bitrate that fits: target size in megabits divided by length in seconds, minus an allowance for audio and overhead. On a Mac you can do that arithmetic yourself and feed it to ffmpeg in Terminal with a two-pass encode, or use a tool that takes the size in MB and works out the rest. QuickTime’s fixed presets will get you close but cannot aim at a number.
The arithmetic
Size is bitrate times time. Everything else (resolution, frame rate, codec) only changes how good the picture looks at that bitrate.
Say you need a 90-second clip under 25 MB:
- Convert the size to megabits: 25 MB is 200 megabits (multiply by 8).
- Divide by the duration: 200 divided by 90 is about 2.2 megabits per second (Mbps) total.
- Subtract audio. A stereo AAC track at 128 kbps uses 0.128 Mbps, leaving about 2.1 Mbps for video.
- Leave margin. Encoders do not hit a bitrate exactly, and the container adds a few percent. Aim 5 to 10 percent under: about 1.9 Mbps for video.
At 1.9 Mbps, 1080p H.264 will look soft on anything with motion; 720p will look reasonable. That is the second half of the job: picking a resolution the bitrate can afford, covered below.
The same arithmetic tells you when the target is unrealistic. Ten minutes under 25 MB is 0.33 Mbps total, which is below what even 480p needs to look acceptable. At that point the right answer is a shorter clip, a split, or a link.
Method 1: let the tool do the math
Manatee is built for this exact request. Open it, switch to Shrink, drop the video onto the window, and type the size in MB. It finds the quality that fits under that figure and writes a new file beside the original; the original is never altered. It accepts the formats you are likely to have (MOV, MP4, M4V, MKV, AVI, WebM, WMV and many more), and the encoding runs on your Mac, so nothing is uploaded anywhere. Every feature is free for the first 24 hours; after that it is a single $9 purchase.
This is the practical route when the number is the point: a 25 MB email cap, a 16 MB chat limit, a 100 MB course upload.
Be clear about what Manatee is not. It is not a video editor: it will not trim, cut, crop or change the audio track, so do any trimming in QuickTime first. And it cannot beat physics. If the size you ask for is too low for the length, the output will be visibly degraded, and the honest fix is a shorter video. For a folder of clips that all need the same treatment, see how to batch compress videos on a Mac.
Method 2: QuickTime Player, by trial and error
QuickTime has no bitrate setting, but its presets are predictable enough to work when the target is not tight.
- Open the video in QuickTime Player.
- Trim first with Edit > Trim; duration is your biggest lever.
- Choose File > Export As and pick 1080p. Save and check the size in Finder (Command-I).
- Too big? Export the original again at 720p, then 480p if needed.
Rough expectations for QuickTime’s H.264 presets: 1080p lands around 6 to 10 MB per minute for typical footage, 720p around 3 to 5 MB per minute, and 480p around 1.5 to 3 MB per minute. Fast motion and fine detail push those up. If 720p comes out at 31 MB and you need 25, you have no setting in between, which is the method’s limitation.
Always re-export from the original, not from the previous export. Each pass through a lossy encoder compounds the damage; the mechanism is explained in why compressing a video twice makes it look worse.
Method 3: ffmpeg in Terminal with a two-pass encode
If you are comfortable in Terminal, ffmpeg gives exact control. A two-pass encode analyzes the whole video first, then distributes the bitrate so the final size lands very close to the target.
- Install ffmpeg if you have not already. With Homebrew:
brew install ffmpeg. - Work out the video bitrate as above. For this example: 1900 kbps video, 128 kbps audio, 720p, 30 fps.
- Run the first pass (it writes analysis data and no output file):
ffmpeg -y -i input.mov -c:v libx264 -b:v 1900k -vf "scale=-2:720" -r 30 -pass 1 -an -f mp4 /dev/null
- Run the second pass to produce the file:
ffmpeg -i input.mov -c:v libx264 -b:v 1900k -vf "scale=-2:720" -r 30 -pass 2 -c:a aac -b:a 128k -movflags +faststart output.mp4
- Check the size. Two-pass typically lands within a few percent of the calculated figure. If it overshoots, lower
-b:vby 10 percent and run both passes again.
What the pieces do: -b:v is the video bitrate, scale=-2:720 sets the height to 720 while keeping the aspect ratio (the -2 keeps the width even, which H.264 requires), -r 30 sets the frame rate, and +faststart puts the index at the front so the file starts playing before it has fully downloaded. Drop -r 30 to keep the source frame rate.
This is the same problem Manatee’s Shrink mode solves from the other end; the Terminal route is for people who want to see and adjust every number.
Pick a resolution the bitrate can afford
A bitrate is only meaningful in relation to the number of pixels it has to describe. Spread too thin, it produces blocking, smeared motion and banded skies. Rough floors for H.264 to look acceptable on typical camera footage:
- 1080p: 4 Mbps and up. Looks good at 6 to 8.
- 720p: 2 Mbps and up. Looks good at 3 to 4.
- 480p: 1 Mbps and up.
- 360p: 0.5 Mbps and up, for “you can see what happened” only.
Screen recordings and talking-head footage with a static background need far less; action, sports, confetti and water need more. HEVC achieves similar quality at roughly two thirds of the H.264 bitrate, with the compatibility trade-off that older devices and many Windows machines cannot play it. Frame rate is the other lever: dropping 60 fps to 30 halves the frames to describe, which is nearly free for ordinary footage. The trade-offs are laid out in bitrate, resolution and frame rate: which one to cut to shrink a video.
So: calculate the bitrate from your size and duration, then choose the highest resolution whose floor that bitrate clears.
Why it still overshoots sometimes
A few reasons a file comes out larger than the arithmetic promised:
- Single-pass encoding. Without the analysis pass, the encoder cannot plan ahead and often overshoots on busy sections. Use two-pass, or a tool that searches for the size.
- Audio you forgot. A 320 kbps stereo track on a short clip is a meaningful share of a low target. 128 kbps is plenty for speech and fine for music on a phone speaker; 96 kbps is acceptable for speech alone.
- Container overhead. An MP4 carries an index and metadata. On low targets (under 5 MB) this can be several percent.
- Decimal versus binary megabytes. Finder shows decimal MB (1,000,000 bytes). Some services count 1,048,576-byte megabytes, and some the other way. Give yourself 5 percent and stop worrying about it.
Questions
What bitrate do I need for a 10 MB video?
It depends entirely on length. Divide 80 (megabits) by the duration in seconds. For a 30-second clip that is about 2.6 Mbps total, which supports 720p comfortably. For three minutes it is 0.44 Mbps, which is 360p territory and will look rough.
Can I shrink a video to a specific size without losing quality?
Not in the strict sense; reaching a smaller size requires discarding information. Whether the loss is visible depends on whether the bitrate is adequate for the resolution. Trimming length is the one reduction that costs nothing in picture quality.
Does QuickTime have a bitrate or target size setting?
No. It offers resolution presets only. For a numeric target, use ffmpeg as above or a tool that accepts a size.