Optimization

How to Reduce Video File Size: Compress MP4, MOV & WebM Without Quality Loss

Reduce video file size by 70-95% without losing quality. Learn to compress MP4, MOV, WebM for WhatsApp, email, Discord with free tools, FFmpeg commands, and exact MB targets.

  • 18 min read
  • Updated:
  • By Convert a Document
In this guide:

Reduce video file size by 70-95% without losing quality. Learn to compress MP4, MOV, WebM for WhatsApp, email, Discord with free tools, FFmpeg commands, and exact MB targets.

Your perfectly edited video is ready to share, but there's one problem: it's 150 MB and you need it under 25 MB for email, or under 16 MB for WhatsApp, or your upload is timing out. Sound familiar? Video file sizes can be massive, but modern compression techniques can shrink them by 70-95% with virtually no visible quality loss. This complete guide shows you how to compress MP4, MOV, and WebM videos using free tools, exact commands, and proven strategies.

Understanding Why Video Files Are So Large

Before compressing, understanding what makes videos large helps you make smarter compression decisions.

The Three Main Size Factors

1. Resolution (Pixel Count)

Higher resolution = exponentially larger files:

Resolution Pixels Typical File Size (1 min, H.264)
480p (SD) 640 x 480 12-20 MB
720p (HD) 1280 x 720 30-50 MB
1080p (Full HD) 1920 x 1080 60-100 MB
4K (UHD) 3840 x 2160 200-400 MB

2. Bitrate (Quality Setting)

Bitrate determines how much data is used per second of video. Higher bitrate = better quality but larger files.

  • Low bitrate (2-4 Mbps): Streaming quality, visible compression artifacts
  • Medium bitrate (5-8 Mbps): Good quality for most uses (1080p)
  • High bitrate (10-20 Mbps): Excellent quality, larger files
  • Very high bitrate (50+ Mbps): Cinema-grade, professional editing

3. Codec (Compression Algorithm)

Different codecs compress video with different efficiency:

Codec Efficiency File Size (1 min 1080p) Compatibility
Uncompressed None (baseline) ~8 GB Universal
H.264 (AVC) Good 60-100 MB Universal
H.265 (HEVC) Excellent (50% smaller than H.264) 30-50 MB Modern devices (2016+)
VP9 Excellent (similar to H.265) 30-50 MB Web browsers, YouTube
AV1 Superior (30% smaller than H.265) 20-35 MB Limited (newest devices)
Key Insight: You can reduce file size by lowering resolution, reducing bitrate, or switching to a more efficient codec. The best approach combines all three strategically.

Quick Compression: Common File Size Targets

Different platforms and use cases have different size requirements. Here are the most common targets and how to hit them:

Platform Limits Reference Table

Platform/Use Case File Size Limit Recommended Strategy
WhatsApp 16 MB Reduce to 720p, use CRF 28-30
Discord (Free) 8 MB Reduce to 480p or trim length, CRF 30
Discord (Nitro) 50 MB 720p, CRF 25-28
Email (Gmail, Outlook) 25 MB 720p, CRF 26-28
Twitter/X 512 MB Usually no compression needed
Instagram Feed 4 GB (but optimize for upload speed) 1080p, CRF 23-25
TikTok 287 MB 1080p, CRF 23-25
General Web Upload Forms 10-50 MB typical 720p, CRF 26-28

Method 1: HandBrake (Best for Beginners - Free GUI Tool)

HandBrake is the most user-friendly free video compression tool with a graphical interface. Perfect if you're not comfortable with command-line tools.

Installing HandBrake

Download: handbrake.fr (Windows, Mac, Linux)

Basic Compression with HandBrake

  1. Open HandBrake and click Open Source
  2. Select your video file (MP4, MOV, WebM, AVI, etc.)
  3. Choose a preset from the right sidebar:
    • General → Fast 1080p30: Good balance for 1080p videos
    • General → Fast 720p30: Smaller files, good for web/email
    • Devices → Discord Small 5 Minutes 480p30: Hits 8 MB limit
    • Web → Gmail Small 5 Minutes 720p30: Targets 25 MB for email
  4. Click Browse to choose output location and filename
  5. Click Start Encode

Advanced HandBrake Settings for Maximum Control

Video Tab Settings:

  • Video Encoder: H.264 (x264) for best compatibility, or H.265 (x265) for smaller files
  • Framerate (FPS): "Same as source" (don't change unless needed)
  • Quality: Use Constant Quality (CRF)
    • CRF 18-20: Near-perfect quality, larger files
    • CRF 23: Excellent quality, good compression (recommended)
    • CRF 26-28: Good quality, smaller files (email, WhatsApp)
    • CRF 30-32: Acceptable quality, very small files (Discord 8 MB)
  • Encoder Preset: Slower = better compression (use "Slow" for best results)

Dimensions Tab (Resolution):

  • Keep original for best quality, or resize:
    • 1920 x 1080 → 1280 x 720 (720p) saves ~50% file size
    • 1920 x 1080 → 854 x 480 (480p) saves ~70% file size

Audio Tab:

  • Codec: AAC
  • Bitrate: 128 kbps (good quality, small size) or 160 kbps (better quality)
  • Consider using Mono instead of Stereo for voice-only videos (saves 50% on audio)
Example: Compress 200 MB Video to Under 25 MB for Email
  1. Open video in HandBrake
  2. Select preset: Web → Gmail Small
  3. Adjust if needed:
    • If still too large: Change CRF to 28-30
    • If too small: Lower CRF to 24-26
  4. Encode and check final file size
  5. Re-encode with adjusted settings if needed

Method 2: FFmpeg (Best for Advanced Users - Maximum Control)

FFmpeg is the industry-standard command-line tool for video compression. It offers complete control and is what most online converters and HandBrake use under the hood.

Installing FFmpeg

Windows:

  1. Download from ffmpeg.org
  2. Extract to C:\ffmpeg
  3. Add C:\ffmpeg\bin to Windows PATH environment variable

Mac:

brew install ffmpeg

Linux:

sudo apt update && sudo apt install ffmpeg

FFmpeg Compression Commands (Copy & Paste Ready)

Basic High-Quality Compression (CRF Method)

Excellent quality, good compression (recommended starting point):

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k output.mp4

Smaller files, still good quality (for email/WhatsApp):

ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset slow -c:a aac -b:a 128k output.mp4

Very small files (Discord 8 MB target):

ffmpeg -i input.mp4 -c:v libx264 -crf 32 -preset slow -vf scale=854:480 -c:a aac -b:a 96k output.mp4

Reduce Resolution While Compressing

1080p to 720p:

ffmpeg -i input.mp4 -vf scale=1280:720 -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k output.mp4

1080p to 480p (70% smaller):

ffmpeg -i input.mp4 -vf scale=854:480 -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k output.mp4

Maintain aspect ratio automatically:

ffmpeg -i input.mp4 -vf scale=1280:-2 -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k output.mp4

Target Specific File Size (Two-Pass Encoding)

Target exactly 25 MB (for email):

# First pass ffmpeg -i input.mp4 -c:v libx264 -b:v 3300k -pass 1 -an -f mp4 NUL # Second pass (creates final file) ffmpeg -i input.mp4 -c:v libx264 -b:v 3300k -pass 2 -c:a aac -b:a 128k output.mp4

Calculate bitrate for exact target size:

# Formula: (Target MB x 8192) / video length in seconds - 128 (for audio) # Example: 25 MB video, 60 seconds long # (25 x 8192) / 60 - 128 = 3285 kbps ≈ 3300k

Use H.265 for Better Compression

H.265 (50% smaller than H.264, same quality):

ffmpeg -i input.mp4 -c:v libx265 -crf 28 -preset slow -c:a aac -b:a 128k output.mp4
H.265 Compatibility Warning: H.265/HEVC may not play on older devices (pre-2016). Use H.264 for maximum compatibility.

Compress MOV to Smaller MOV or MP4

MOV to compressed MOV (keeps MOV container):

ffmpeg -i input.mov -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k output.mov

MOV to MP4 (usually smaller container):

ffmpeg -i input.mov -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k output.mp4

Compress WebM Files

WebM with VP9 codec:

ffmpeg -i input.webm -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm

WebM to MP4 (for better compatibility):

ffmpeg -i input.webm -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k output.mp4

Understanding FFmpeg Parameters

Parameter What It Does Common Values
-i Input file Your video filename
-c:v Video codec libx264 (H.264), libx265 (H.265), libvpx-vp9 (VP9)
-crf Quality (lower = better) 18 (excellent), 23 (good), 28 (smaller), 32 (very small)
-preset Encoding speed vs compression slow (best), medium, fast, ultrafast
-c:a Audio codec aac, libopus, copy (no re-encode)
-b:a Audio bitrate 96k (low), 128k (good), 192k (high quality)
-vf scale Resize video 1280:720 (720p), 854:480 (480p), 1280:-2 (auto height)
-b:v Video bitrate (two-pass) 3000k (3 Mbps), 5000k (5 Mbps)

Method 3: VLC Media Player (Quick & Free)

You probably already have VLC installed. It can compress videos with a simple convert feature.

  1. Open VLC Media Player
  2. Go to Media → Convert / Save (or press Ctrl+R)
  3. Click Add and select your video file
  4. Click Convert / Save button at bottom
  5. Choose a profile:
    • Video - H.264 + MP3 (MP4): Good general compression
    • Video - H.265 + MP3 (MP4): Smaller files (if compatible)
  6. Click the wrench icon (⚙️) to adjust settings:
    • Video codec tab → Bitrate: Lower = smaller (try 2000-4000 kbps)
    • Video codec tab → Scale: Change resolution if needed
  7. Choose destination filename
  8. Click Start

Method 4: Online Video Compressors (No Installation)

For quick one-off compressions, online tools work well. However, be mindful of privacy and upload times.

Top Online Video Compressors

1. CloudConvert

URL: cloudconvert.com

  • 25 free conversions/day
  • 1 GB max file size
  • Advanced codec and quality settings
  • Supports all formats (MP4, MOV, WebM, AVI, etc.)

2. Clideo Video Compressor

URL: clideo.com/compress-video

  • Free with watermark (removed with subscription)
  • 500 MB limit (free tier)
  • Simple interface
  • Quality presets: Low, Medium, High

3. FreeConvert Video Compressor

URL: freeconvert.com/video-compressor

  • Unlimited free compressions
  • 1 GB daily total limit
  • Target file size option
  • Batch compression supported

4. YouCompress

URL: youcompress.com

  • Completely free, no registration
  • Unlimited file size
  • One-click compression (no settings)
  • Fast processing
Privacy Warning: Uploading videos to online services means temporarily sharing them with third parties. Avoid for:
  • Personal or private videos
  • Unreleased content
  • Client work under NDA
  • Sensitive or confidential material
For such content, use offline methods (HandBrake, FFmpeg, VLC).

Method 5: Platform-Specific Tools

Mac: iMovie

  1. Import your video into iMovie
  2. Click Share button (export icon)
  3. Choose File
  4. Set quality:
    • Low: Very small files (email)
    • Medium: Good balance
    • High: Better quality, larger
  5. Click Next and save

Windows: Microsoft Photos App

  1. Right-click video → Open with → Photos
  2. Click Edit & Create → Trim
  3. Save a copy (automatically compresses slightly)

Note: Windows Photos has limited compression. For serious compression, use HandBrake or FFmpeg.

Hitting Exact File Size Targets

Sometimes you need a video to be exactly under a specific size (16 MB for WhatsApp, 8 MB for Discord, etc.). Here's how to calculate and achieve exact targets.

The File Size Formula

File Size (MB) = [(Video Bitrate in kbps + Audio Bitrate in kbps) x Duration in seconds] / 8192 Rearranged to find video bitrate: Video Bitrate (kbps) = [(Target MB x 8192) / Duration] - Audio Bitrate

Practical Examples

Example 1: 60-second video, need under 16 MB (WhatsApp)

# Target: 15 MB (leaving 1 MB buffer) # Duration: 60 seconds # Audio: 128 kbps Video Bitrate = [(15 x 8192) / 60] - 128 = 2048 - 128 = 1920 kbps ≈ 2000k # FFmpeg command: ffmpeg -i input.mp4 -c:v libx264 -b:v 2000k -pass 1 -an -f mp4 NUL ffmpeg -i input.mp4 -c:v libx264 -b:v 2000k -pass 2 -c:a aac -b:a 128k output.mp4

Example 2: 30-second video, need under 8 MB (Discord Free)

# Target: 7.5 MB (safety buffer) # Duration: 30 seconds # Audio: 96 kbps (lower for more video budget) Video Bitrate = [(7.5 x 8192) / 30] - 96 = 2048 - 96 = 1952 kbps ≈ 2000k # Also reduce resolution to 480p for better quality at this bitrate: ffmpeg -i input.mp4 -vf scale=854:480 -c:v libx264 -b:v 2000k -pass 1 -an -f mp4 NUL ffmpeg -i input.mp4 -vf scale=854:480 -c:v libx264 -b:v 2000k -pass 2 -c:a aac -b:a 96k output.mp4

Example 3: 120-second video, need under 25 MB (Email)

# Target: 24 MB (buffer) # Duration: 120 seconds # Audio: 128 kbps Video Bitrate = [(24 x 8192) / 120] - 128 = 1638 - 128 = 1510 kbps ≈ 1500k # FFmpeg command: ffmpeg -i input.mp4 -c:v libx264 -b:v 1500k -pass 1 -an -f mp4 NUL ffmpeg -i input.mp4 -c:v libx264 -b:v 1500k -pass 2 -c:a aac -b:a 128k output.mp4

HandBrake Target Size Method

  1. Open video in HandBrake
  2. Go to Video tab
  3. Switch from "Constant Quality" to Average Bitrate
  4. Enter calculated bitrate (from formula above)
  5. Set 2-Pass Encoding checkbox (more accurate)
  6. Encode

Advanced Compression Techniques

1. Trim Unnecessary Footage

The easiest way to reduce file size is to remove content you don't need.

FFmpeg trim command (cut from 10s to 30s):

ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy output.mp4

2. Reduce Frame Rate

Lowering frame rate from 60fps to 30fps can reduce file size by ~40% with minimal quality impact for most content.

ffmpeg -i input.mp4 -r 30 -c:v libx264 -crf 23 -preset slow -c:a copy output.mp4

3. Convert Audio to Mono

For voice-only videos (tutorials, presentations), mono audio saves 50% on audio size.

ffmpeg -i input.mp4 -c:v copy -ac 1 -c:a aac -b:a 96k output.mp4

4. Remove Audio Entirely (If Not Needed)

Saves all audio bandwidth for visual quality.

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -an output.mp4

5. Crop Unwanted Areas

Remove black bars or unnecessary portions.

# Crop to 1280x720 from top-left corner: ffmpeg -i input.mp4 -vf "crop=1280:720:0:0" -c:v libx264 -crf 23 output.mp4

Batch Compression: Multiple Videos at Once

Windows Batch Script

Save as compress-videos.bat in folder with your videos:

@echo off for %%f in (*.mp4 *.mov *.avi) do ( ffmpeg -i "%%f" -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k "compressed_%%f" ) echo All videos compressed! pause

Mac/Linux Bash Script

Save as compress-videos.sh:

#!/bin/bash for file in *.mp4 *.mov *.avi; do [ -f "$file" ] || continue ffmpeg -i "$file" -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k "compressed_${file}" done echo "All videos compressed!"

Make executable and run:

chmod +x compress-videos.sh ./compress-videos.sh

Troubleshooting Common Compression Issues

Problem: Video Quality Looks Terrible After Compression

Cause: CRF too high, bitrate too low, or resolution dropped too much

Solution:

  • Lower CRF value (try 23 instead of 28)
  • Use slower preset: -preset slow or -preset slower
  • Don't reduce resolution below 720p for 1080p source
  • Increase bitrate in two-pass encoding

Problem: Compressed File is Larger Than Original

Cause: Original already highly compressed, or settings too conservative

Solution:

  • Check original codec (if already H.265, can't compress much more)
  • Increase CRF to 26-28
  • Reduce resolution
  • Use H.265 codec if original is H.264

Problem: Compressed Video Won't Play on Phone/Device

Cause: Incompatible codec or profile

Solution:

  • Use H.264 with baseline profile:
ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline -level 3.0 -crf 23 -c:a aac -b:a 128k output.mp4

Problem: Audio and Video Out of Sync After Compression

Cause: Variable frame rate (VFR) source

Solution:

  • Convert to constant frame rate during encoding:
ffmpeg -i input.mp4 -vsync cfr -r 30 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4

Problem: Compression Takes Forever

Cause: Slow preset, long video, or H.265 encoding

Solution:

  • Use faster preset: -preset medium or -preset fast (slightly larger files)
  • Stick with H.264 instead of H.265 (encodes 5-10x faster)
  • For testing, compress just first 30 seconds:
ffmpeg -i input.mp4 -t 30 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k test.mp4
Use Case Resolution CRF Audio Expected Compression
General Purpose Keep original 23 128 kbps AAC 50-70% smaller
WhatsApp (16 MB limit) 720p 28 128 kbps AAC 70-85% smaller
Discord Free (8 MB limit) 480p 30 96 kbps AAC 85-95% smaller
Email (25 MB limit) 720p 26-28 128 kbps AAC 70-80% smaller
Social Media Upload 1080p 23-25 128 kbps AAC 60-75% smaller
Archive/Backup Keep original 20-23 192 kbps AAC 50-60% smaller

Key Takeaways

  • HandBrake is best for beginners - User-friendly GUI with excellent presets
  • FFmpeg offers maximum control - Command-line power for advanced users
  • CRF 23 is the sweet spot - Excellent quality with good compression for most uses
  • Resolution reduction saves the most - 1080p → 720p cuts file size in half
  • Two-pass encoding hits exact targets - Use when you need precisely 16 MB or 25 MB
  • H.265 is 50% smaller than H.264 - But has compatibility limitations
  • Slower preset = better compression - Worth the extra encoding time
  • Don't compress already-compressed videos - Minimal gains, quality loss
  • Test settings on 30-second clips first - Saves time finding optimal settings
  • Keep original files - Never delete source until you verify the compressed version

Compress Your Videos Now

Need to quickly compress videos for WhatsApp, email, or Discord? Our free online tool handles all formats and optimizes automatically for your target platform.

Try Free Video Compressor

Ready to optimize?

Use Convert a Document to shrink files without sacrificing quality.

Related articles

About Convert a Document

Convert a Document helps you understand, convert, and optimize files with simple tools and clear guidance for everyday workflows.