Compress video for TikTok, Instagram, or YouTube uploads
Shrink large phone exports before posting, sending to an editor, or archiving source clips without installing desktop editing software.
Reduce MP4 file size for social uploads, creator workflows, course videos, email attachments, and storage. You can also compress MOV, WebM, and MKV, then fine-tune H.264/H.265, CRF, resolution, frame rate, and audio bitrate.
Sign in to run this tool — 100 free credits on signup.
Shrink large phone exports before posting, sending to an editor, or archiving source clips without installing desktop editing software.
Downscale long screen recordings or lesson videos to 1080p or 720p so they upload faster to LMS platforms, communities, and email.
Use the same FFmpeg compression command through the API for SaaS apps, UGC platforms, content moderation queues, and batch processing.
Quick reference for what each parameter actually does.
Drop an MP4, MOV, WebM, MKV, or paste a public video link.
Balanced fits most cases. Smallest targets lower file size; Web optimized creates VP9/WebM; Advanced exposes CRF, resolution, fps, and bitrate.
Your video is compressed in the cloud with FFmpeg without installing desktop software.
Get a temporary download link as soon as it's done. Files auto-expire after 7 days.
Start with a preset. Balanced is right for most web video; Smallest crushes file size with H.265 + 720p; High quality is near-lossless for archives; Web optimized produces WebM/VP9 for HTML5 video; Fastest is for when you don't want to wait. Open Advanced only if you need a specific CRF, resolution or fps.
It depends on the source file, codec, resolution, motion, and quality preset. Large camera uploads usually shrink much more than files that were already heavily compressed by social apps.
Use H.264 with CRF 23 as a safe default, or CRF 18-20 when quality matters more than file size. If the file is still too large, downscale to 1080p or 720p before raising CRF too far.
The biggest wins usually come from lowering resolution, using a modern codec, and choosing a reasonable CRF. For many web uploads, H.264 CRF 23 at 1080p or 720p is a practical starting point.
H.265 usually creates smaller files at the same visual quality, but encoding is slower and playback support is less universal. Use H.264 for broad compatibility; use H.265 when file size matters and your audience can play it.
H.264 plays everywhere (default safe choice). H.265 produces 30-40% smaller files at the same visual quality but encoding is 3-5x slower and playback isn't universal. VP9 is royalty-free, web-friendly, and supported in Chrome / Firefox / Edge — great for HTML5 video, not for sharing with non-tech users.
Constant Rate Factor. The encoder targets a consistent visual quality, letting bitrate vary as needed. Lower CRF = higher quality, larger file. CRF 18 is visually lossless, 23 is default 'looks good', 28 is acceptable for social media, 32+ shows artifacts. H.265 CRF runs ~5 higher than H.264 for equivalent quality.
We won't upscale. If your source is 480p and you pick 1080p, the output stays at 480p — upscaling would make the file larger without adding real detail. Pick a resolution at or below your source for actual size reduction.
CRF is usually better for one-off compression because it targets visual quality. Fixed bitrate is useful when you must hit a streaming or upload limit exactly, but it can waste bits on simple scenes and starve complex scenes.
Inputs up to 5 GB and 4 hours are supported. Longer or larger files should call the API directly — no UI cap there.
Sign up gets you 100 credits. A typical compress costs 1–10 credits depending on length. After that, top up — no subscription.
Yes — every tool here is a thin wrapper over our HTTP API. See the docs for curl / Node / Python examples.
This online MP4 compressor is a wrapper around the FFHub REST API. Run the same FFmpeg compression command from your backend, queue, or batch workflow.
View API docscurl -X POST https://api.ffhub.io/v1/tasks \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d {
"command": "-i https://you.com/in.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k out.mp4"
}