Skip to content

How to reduce video file size without visible quality loss

Shrink a video file with HandBrake, FFmpeg, QuickTime, or Clipchamp. Tested commands, bitrate math, and what each change saved on a real 1080p clip.

To reduce a video file size, re-encode the video at a lower bitrate. A file's size is its bitrate multiplied by its length, so every method cuts one of the two. The changes that save the most are exporting with a constant quality setting (called CRF or RF in HandBrake and FFmpeg) instead of a high fixed bitrate, lowering the resolution to what viewers need, and switching from H.264 to H.265 where the destination can play it. Trimming the video and lowering the audio bitrate help too. Free tools such as HandBrake, FFmpeg, QuickTime Player on a Mac, and Clipchamp on Windows all do this. The demo below shows the trade-off for a 10-minute screen recording: the file shrinks from about 300 MB to about 60 MB, and the smallest version blurs the on-screen label.

Choose 1080p at 4,000 kbps, 720p at 2,000 kbps, or 480p at 800 kbps for a fictional 10-minute screen recording, then read the file size and check whether the label is still legible. The sizes follow from bitrate times length (4,000 kbps for 600 seconds is 300 MB); the picture quality is illustrative. Test your own master on the screens your viewers use. Open the demo in a new tab.

What makes a video file large

Bitrate is the amount of data the file uses for each second of video, measured in megabits per second (Mbps) or kilobits per second (kbps). To estimate a file's size in megabytes, multiply the bitrate in Mbps by the length in seconds and divide by 8. A 10-minute video at 8 Mbps is 8 × 600 ÷ 8 = 600 MB. Audio adds to that: AAC audio at 128 kbps adds about 1 MB for each minute.

Resolution, frame rate, and codec matter because they change how much bitrate a video needs to look good. YouTube's recommended upload encoding settings show the scale. The sizes in the table are our arithmetic from YouTube's rates for standard frame rates (24 to 30 fps):

Video size per minute at YouTube's recommended upload bitrates (checked October 2026)
ResolutionYouTube's recommended video bitrateSize of 1 minute of videoSize of 10 minutes of video
2160p (4K)35 to 45 MbpsAbout 263 to 338 MBAbout 2.6 to 3.4 GB
1440p16 MbpsAbout 120 MBAbout 1.2 GB
1080p8 MbpsAbout 60 MBAbout 600 MB
720p5 MbpsAbout 38 MBAbout 375 MB
480p2.5 MbpsAbout 19 MBAbout 188 MB

These are upload rates for a platform that compresses the video again, so they are generous. A file for a web page, an email link, or storage can usually use much less, as the tests below show.

Ways to reduce video file size

We ran each change on the same test clip on October 5, 2026: a 77-second, 1080p, 60 fps product demo rendered as motion graphics of app screens, encoded with FFmpeg 8.1.1. The H.264 baseline at FFmpeg's default quality (CRF 23) was 4.35 MB. One clip is not a benchmark. Footage from a camera, especially in low light, has noise that costs more bits, so test your own video before you set a standard.

What each change did to one 77-second 1080p test clip (Mindstamp test, October 2026)
Change from the H.264 CRF 23 baselineFile sizeSmaller than baseline
None (H.264, CRF 23, 1080p, 60 fps)4.35 MB0%
Switch to H.265 at CRF 282.07 MB52%
Lower the resolution to 720p2.23 MB49%
Speed the video up 2x2.74 MB37%
Lower the frame rate to 30 fps3.81 MB12%
Put the MP4 in a ZIP file at maximum compression4.03 MB7.5%

1. Re-encode with a constant quality setting

A fixed bitrate spends the same amount of data on every second, whether the screen is still or moving. A constant quality mode lets the encoder spend bits where the picture needs them, so static slides cost little and fast motion costs more. Our test clip started at 11.7 MB and came out at 4.35 MB from this step alone. FFmpeg calls the setting CRF and HandBrake calls it RF. On both, a lower number means higher quality and a bigger file. HandBrake's quality guide tells you to "always use constant quality unless you have a specific reason not to."

2. Lower the resolution to what viewers need

Dropping our clip from 1080p to 720p cut it by 49%. The cost was detail: measured against the source with VMAF (explained below), the 720p version scored 88.2, compared with 95.6 for the 1080p version. Mindstamp's help article on compressing a video recommends 1080p for most horizontal video and suggests testing 720p only when the video has no small text or detailed screens. Never export at a higher resolution than the source; upscaling cannot add detail.

3. Use H.265 or AV1 where the video will play

Newer codecs need fewer bits for the same picture. MDN's web video codec guide says HEVC (H.265) can in theory produce files half the size of AVC (H.264) at comparable quality, and that AV1 compresses up to 50% better than AVC. Our clip matched that: H.265 at CRF 28 was 52% smaller than H.264 at CRF 23 and scored 94.4 on VMAF against 95.6. Playback is the limit. MDN says every major browser plays H.264 in an MP4, while H.265 support depends on the browser, operating system, and hardware. Use H.265 for storage and for Apple devices, and keep an H.264 copy for web pages and email recipients.

4. Cut the length

Size grows with every second, and trimming dead air at the start and end costs nothing in quality. Speeding the video up also saves space, though less than you might expect, as the speed question below shows.

5. Lower the audio bitrate, or remove the audio

Audio is small next to video, but it is fixed per second. AAC at 128 kbps is about 1 MB per minute. A background loop on a web page needs no audio track at all, and FFmpeg's -an option removes it.

6. Lower the frame rate only as a last step

Halving the frame rate from 60 to 30 fps saved only 12% on our clip, because the encoder already spends few bits on frames that change little from the one before. Both YouTube's upload guidance and Mindstamp's help center say to keep the frame rate of the source.

What does not help

  • ZIP files. An MP4 is already compressed, so a ZIP at maximum compression saved 7.5% on our clip.
  • Compressing a compressed file again and again. Each lossy encode discards detail. Keep an untouched master and make every smaller copy from it.
  • Upscaling a small file to make it look sharper. It makes the file bigger and adds no detail.

How to reduce video file size with HandBrake

HandBrake is a free, open-source video converter for Windows, Mac, and Linux (version 1.11.2 was current in October 2026). Its presets handle most of the settings for you.

  1. Open HandBrake and drop in the video file.
  2. Choose a preset. General > Fast 1080p30 makes an MP4 with H.264 video and AAC audio, and Fast 720p30 does the same at 720p. HandBrake's preset documentation explains that the name gives the maximum resolution and frame rate, so a 60 fps source comes out at 30 fps. To keep the source frame rate, set Framerate on the Video tab to Same as source.
  3. On the Video tab, keep Constant Quality. To shrink the file further, raise the RF value one or two steps at a time. HandBrake suggests RF 20 to 24 for 1080p and RF 19 to 23 for 720p.
  4. For a smaller file that you will not play in a browser, set the Video Encoder to H.265 (x265). HandBrake warns that RF values are not comparable between encoders, so check the result rather than reusing the H.264 number.
  5. Choose where to save the file, start the encode, and play the result at full size on the screen your viewers use.

For a hard size limit, the Web presets named Social 25 MB, such as Social 25 MB 2 Minutes 540p60, are built to keep a video of that length under 25 MB.

How to compress a video with FFmpeg

FFmpeg describes itself as "a complete, cross-platform solution to record, convert and stream audio and video". It is free and runs from the command line. Every command below ran without errors on FFmpeg 8.1.1 on macOS on October 5, 2026. Replace input.mov and the output names with your own files. The options are the same on Windows; only the folder loop at the end is specific to macOS and Linux shells.

Check the file you have

ffprobe -v error -show_entries format=duration,size,bit_rate:stream=codec_name,width,height,r_frame_rate -of default=noprint_wrappers=1 input.mov

This prints the codec, resolution, frame rate, length in seconds, size in bytes, and overall bitrate in bits per second. If the bitrate is far above the YouTube table above, a re-encode should shrink the file a lot.

Compress to an H.264 MP4 that plays everywhere

ffmpeg -i input.mov -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k -movflags +faststart output.mp4
  • -crf 23 is the x264 default quality. Try 26 for a smaller file, or 20 when small text must stay sharp.
  • -preset slow spends more time searching for savings. Slower presets give a smaller file at the same quality, and faster presets the reverse.
  • -c:a aac -b:a 128k encodes the audio as AAC at 128 kbps.
  • -movflags +faststart moves the MP4's index to the front of the file, so playback can start before the download finishes. YouTube's upload guidance asks for the same thing ("Fast Start"), and it matters when you embed the video with HTML on your own server.

Lower the resolution

ffmpeg -i input.mov -vf scale=-2:720 -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k -movflags +faststart output-720p.mp4

scale=-2:720 sets the height to 720 pixels and calculates a width that keeps the shape and is an even number, which H.264 needs.

Compress to H.265 (HEVC)

ffmpeg -i input.mov -c:v libx265 -crf 28 -preset slow -tag:v hvc1 -c:a aac -b:a 128k -movflags +faststart output-hevc.mp4

CRF 28 is the x265 default, according to the x265 documentation. -tag:v hvc1 changes the label on the video track from FFmpeg's default, hev1. In our test, WebKit (the engine behind Safari) refused to play the hev1 file and played the hvc1 file, while Chrome played both. On our test machine, an Apple M5 Max Mac, H.265 took 42 seconds to encode the 77-second clip, against 8 seconds for H.264.

Make a WebM file with AV1

ffmpeg -i input.mov -c:v libsvtav1 -crf 35 -preset 6 -c:a libopus -b:a 96k output.webm

This uses the SVT-AV1 encoder, where CRF runs from 0 to 63 and a higher preset number encodes faster. AV1 is slow to encode: this command took 3 minutes 11 seconds for the 77-second clip. Use it when you serve many views of the same file, and list the WebM next to an MP4 in your <video> element, because MDN notes that Safari plays AV1 only on devices with a hardware AV1 decoder.

Hit an exact file size with two-pass encoding

When a file must stay under a limit, work out the bitrate first. For a 3-minute (180-second) video that must fit in 25 MB: 25 MB × 8 ÷ 180 seconds = 1.11 Mbps in total. Take off 128 kbps for audio and keep about 5% spare, which leaves about 930 kbps for the video. Then run two passes:

ffmpeg -y -i input.mov -c:v libx264 -b:v 930k -preset slow -pass 1 -an -f null -
ffmpeg -i input.mov -c:v libx264 -b:v 930k -preset slow -pass 2 -c:a aac -b:a 128k -movflags +faststart output-25mb.mp4

The first pass analyzes the video and writes a log file; the second uses it to spread the bits well. In our test, the second pass landed within 4% of the target video bitrate. The -f null - part throws away the first pass's video output.

Compress every video in a folder

mkdir -p compressed
for f in *.mov; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k -movflags +faststart "compressed/${f%.*}.mp4"
done

This loop runs in the macOS Terminal or a Linux shell and handles file names with spaces. It writes each result to a folder named compressed, with the same name and an .mp4 extension.

Reduce file size on a Mac or Windows PC without installing anything

On a Mac, QuickTime Player can export a smaller copy. Choose File > Export As, then pick 4K, 1080p, 720p, or 480p. Apple's QuickTime Player guide says the 4K and 1080p options can use H.264 or HEVC: pick Smaller File Size for HEVC or Greater Compatibility for H.264. The 720p and 480p options always use H.264. The export is a QuickTime movie (.mov) file.

On Windows 11, Clipchamp is the built-in video editor. Trim the video on the timeline, select Export, and choose a resolution. Microsoft's help article on choosing an export resolution lists 480p, 720p, 1080p, 4K, GIF, and audio-only exports, with 1080p as the largest free resolution. Use HandBrake or FFmpeg when you need a specific file size.

How to reduce video bitrate

You can lower a video's bitrate in three ways, and the right one depends on what you need to control:

Three ways to lower a video's bitrate
MethodHow to set itUse it when
Constant qualityRaise CRF in FFmpeg or RF in HandBrakeYou want the smallest file that still looks right, and the exact size does not matter
Target bitrate-b:v 2M in FFmpeg, ideally with two passes, or Avg Bitrate in HandBrakeA file has to fit a size limit
Capped constant quality-crf 23 -maxrate 2M -bufsize 4M in FFmpegYou stream the file and need to stop bitrate peaks from causing buffering

A full capped command looks like this:

ffmpeg -i input.mov -c:v libx264 -crf 23 -maxrate 2M -bufsize 4M -preset slow -c:a aac -b:a 128k -movflags +faststart output-capped.mp4

To change only the audio, copy the video unchanged with -c:v copy. Because FFmpeg does not re-encode the video, these commands finished in under a second on our clip. The first lowers the audio to 96 kbps, and the second removes the audio track:

ffmpeg -i input.mp4 -c:v copy -c:a aac -b:a 96k output-audio96.mp4
ffmpeg -i input.mp4 -c:v copy -an output-silent.mp4

Does speeding up a video reduce file size?

Yes, when you re-encode it at the same frame rate, because the result has fewer frames and fewer seconds of audio. Our clip played at 2x was 37% smaller. It did not halve, because each remaining frame differs more from the one before and costs more bits. When we kept every frame and doubled the frame rate to 120 fps instead, the file was only 21% smaller. This command doubles the speed of both video and audio and keeps the frame rate:

ffmpeg -i input.mov -vf "setpts=PTS/2" -af "atempo=2" -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k -movflags +faststart output-2x.mp4

Faster playback changes how a lesson feels, so keep it for screen recordings with slow stretches and leave a speaker at normal speed.

How to reduce file size for stored video and streaming

If you store a library of on-demand video, or call an encoding API, the same rules apply at scale. Four settings matter most:

  • Use a quality-based rate mode instead of a fixed bitrate. In x265 that is CRF, the default mode, which the x265 documentation describes as aiming for uniform quality and letting the size follow the complexity of the video. Start at the default of 28 and compare 26 and 30 on your hardest scenes.
  • Use the slowest preset your time budget allows. The x265 preset guide says slower presets test more encoding options to get the best quality at your bitrate.
  • Set -tune grain only for grainy film sources, and -tune animation for animation. Leave tune unset for screen recordings and talking heads.
  • Keep the original master in cold storage and re-encode from it when a better codec arrives, instead of compressing the compressed copy.

Cloud services expose the same idea under other names. AWS Elemental MediaConvert calls it QVBR, and its QVBR guidelines suggest quality level 9 with a 6 Mbps maximum for 1080p as a starting point, and quality level 7 for viewing on a PC or tablet (checked October 2026).

To check "no visible loss" with a number instead of your eyes alone, compare the compressed file with the original using VMAF, a perceptual quality score that Netflix developed. A higher score means closer to the original. FFmpeg builds that include libvmaf run it like this, with the compressed file first:

ffmpeg -i output-hevc.mp4 -i input.mov -lavfi libvmaf -f null -

Both files must have the same resolution; scale the smaller one up inside the filter if they do not. Compare scores between your candidate settings rather than treating one number as a pass mark. Our H.264 CRF 23 file scored 95.6 and our H.265 CRF 28 file scored 94.4, at less than half the size.

Should you compress a video before you upload it?

Usually not, if the destination is a video platform. Video platforms encode each upload again for streaming. Mindstamp, for example, encodes uploads for adaptive streaming (HLS), so each viewer gets a version sized for their connection and screen, as our help article on HLS and MP4 explains. Every extra compression step before upload throws away detail the platform could have used. Compress first only when:

When you do compress for Mindstamp, our help center recommends an MP4 with H.264 video and AAC audio at the source frame rate, and 1080p for most horizontal video. Judge the export on its most detailed frame. In an interactive video, that is often a screen where a viewer has to read a label, a question, or a button target, which is the point the demo above makes. If a video already has interactions, replace the source file and the interactions, share link, and embed code stay as they are. If the result looks soft, our article on why a video looks blurry covers the usual causes, and upload and processing problems covers failed uploads.

Common questions

Does compressing a video reduce its quality?

Every lossy encode, including H.264, H.265, and AV1, discards some detail. At moderate settings the loss is small: our H.264 file at CRF 23 was 63% smaller than its source file and scored 95.6 on VMAF. Quality drops become visible when you push the bitrate too low for the resolution, or when you compress a file that was already compressed.

What is the best format for a small video file?

An MP4 with H.264 video and AAC audio is the safest choice, because every major browser plays it. An MP4 with H.265 is about half the size for similar quality; MDN lists support in Safari and, with hardware or operating system conditions, in Chrome, Edge, and Firefox. A WebM with AV1 is smaller again where it plays. Our HTML video guide shows how to offer AV1 with an H.264 fallback on a web page.

How do I make a video small enough to email?

Personal Gmail accounts can attach up to 25 MB, and Gmail turns larger files into a Google Drive link, according to Gmail Help. Use the two-pass command above with a 25 MB target, or HandBrake's Social 25 MB presets. For anything longer than a couple of minutes, send a link instead; our guide on how to share a video compares the options.

How do I shrink a webinar or screen recording?

Screen recordings and webinars compress well, because slides and screens stay still for long stretches and constant quality mode spends almost nothing on frames that do not change. Keep 1080p if the slides have small text, and cut the waiting room and the dead air at the end.

Pick one video you share often and run it through HandBrake or the first FFmpeg command above. Compare the result with the original on the smallest screen your viewers use, and keep the settings as your standard once the smallest text still reads clearly. To see the trade-off before you encode anything, try the compression tradeoff viewer.

Sources and further reading