Encode by constant quality (CRF), average bitrate, or an exact target file size with two-pass. Aspect-safe scaling from 360p to 1440p, audio and container control, and a measured SSIM quality score on the result.
Initializing in your browser…
Trim and cut videos precisely with frame-by-frame scrubbing. Set start/end points visually, preview clips in real-time, and export trimmed videos instantly. No upload required - runs 100% in browser.
Convert videos between MP4, WebM, OGG, MOV, AVI, and MKV formats. Device presets for YouTube, Instagram, TikTok, iPhone, Android. Quality options from fast to high quality encoding.
Merge multiple video clips into one seamless video. Drag-and-drop reordering, preview before export, timeline visualization. Combine videos in any format with automatic re-encoding.
A 4:3 screen recording has to fit under a 20 MB upload limit, and fixed-width presets keep stretching it.
Input
recording.mp4 1024x768 · target file size 20 MB · 720p preset
Output
A 960x720 MP4 with square pixels, two-pass encoded, measured at 20.3 MB
The 720p preset scales the shorter side and derives the width from the source ratio, so 1024x768 becomes 960x720 rather than a stretched 1280x720. Naming the size runs a real two-pass encode instead of guessing a bitrate, and the result panel reports the size actually produced along with an SSIM score against the original.
Choose how you want to control the encode instead of guessing at a single slider. The Video Quality Adjuster offers three rate-control modes: constant quality (CRF) for a consistent look, average bitrate for a predictable data rate, and target file size, which runs a genuine two-pass encode to land on the number of megabytes you name. Resolution presets scale the shorter side and derive the other axis from your source, so 4:3, portrait, and anamorphic footage keeps its shape. After encoding you get the measured size, the measured bitrate against the prediction, and an optional SSIM score comparing the result to the original.
Name the megabyte ceiling an email, forum, or chat app imposes, and the two-pass encode lands on it instead of leaving you to guess a bitrate and try again.
Dial in the exact bitrate and resolution a streaming platform recommends, with a ceiling that keeps busy scenes inside the limit.
Use constant quality at CRF 18 with the original resolution for archival copies where fidelity matters more than a predictable file size.
Downscale 4:3, vertical, or anamorphic DVD-style footage without the horizontal stretching that fixed-width presets cause.
The three rate-control modes are genuinely different tools, not labels on the same slider. Constant quality passes -crf to x264, from 16 (near-transparent, large) to 34 (small, visibly soft), and lets the file size land wherever the content demands. Because constant-quality encoding has no size target, the tool deliberately shows no size prediction in this mode rather than inventing one; you can optionally add a bitrate ceiling, which applies -maxrate with a matching bufsize so only the scenes that would exceed the cap lose quality. Average bitrate passes -b:v plus an automatic ceiling at 1.5x the target, which is what stops busy scenes from overshooting and is why the prediction is reliable. Target file size converts your megabyte figure into a video bitrate (total budget, minus the audio track, minus a small allowance for container overhead, divided by the duration) and runs a real two-pass encode: an analysis pass writes an x264 stats file, then the second pass spends the bit budget where the first pass found it was needed. In testing, a 2 MB target landed within 1.4 percent and an average-bitrate encode landed within 0.4 percent of its prediction.
Scaling is the part most tools get wrong. The resolution presets name the shorter side, which is what 720p means for landscape and portrait alike, and the other dimension is computed from your source ratio and rounded to an even number for H.264. The output is always given square pixels, because the scale filter would otherwise absorb that even-number rounding by writing an odd sample aspect ratio such as 1281:1280 into the file. Sources that already store non-square pixels (DVD-style 720x480 material at SAR 32:27, for example) are measured by their display size first, so they come out correctly proportioned rather than squashed. Upscaling is refused by default with an explanation, since enlarging cannot add detail, and a toggle turns it on when you really do need a larger canvas.
Everything else is explicit rather than hardcoded. An encoder speed preset (ultrafast, very fast, medium) trades encoding time against file size at the same quality. Audio can be re-encoded to AAC at 96, 128, 192, or 256 kbps, copied through untouched when the output container supports its codec, or removed entirely, and the tool states which it will do and why before you start. The container defaults to keeping your source extension when it can legally hold H.264 and falls back to MP4 otherwise, so a WebM input produces a working MP4 rather than an H.264 stream in a container that cannot hold it. Encoding runs in a WebAssembly build of FFmpeg inside your tab with a working Cancel button, and nothing is uploaded.
The result panel reports measurements, not promises: the actual output size and how it compares to your original, the actual bitrate and its percentage difference from the prediction, the actual output resolution and ratio, and an A/B preview that switches the player between the original and the encode. A Check quality button computes SSIM by decoding five evenly spaced frames from each file and comparing them at the output resolution; the number it produces was validated against FFmpeg's own ssim filter and agreed to within 0.001.
For H.264, CRF 18 to 23 ranges from visually lossless to good quality. CRF 28 and above introduces noticeable softening but yields much smaller files. 23 is the x264 default and a sound starting point. Encode once, check the SSIM score, and adjust from there.
Constant-quality encoding has no size target by design: it spends whatever bits the content needs to hold a given quality, so the size depends entirely on how detailed and how busy your footage is. Rather than print a number that would often be wrong, the tool shows the measured size after encoding. Use average bitrate or target file size when you need to know the size in advance.
It runs a real two-pass encode rather than estimating, so it is close. In testing on this tool, a 2 MB target produced a 2.07 MB file, about 1.4 percent over. Very low targets on long or detailed footage are the hardest case; the tool warns when the computed bitrate falls below about 300 kbps and suggests lowering the resolution to compensate.
No. The resolution presets name the shorter side and compute the other dimension from your source ratio, so a 1024x768 clip at the 720p preset becomes 960x720 rather than 1280x720. The output is written with square pixels, and footage that already stores non-square pixels is measured by its display size first.
Upscaling is off by default because enlarging cannot add detail that was never captured; picking a preset larger than your source simply keeps the original size and says so. A toggle enables it when you genuinely need a larger canvas, for example to meet a platform minimum.
SSIM (structural similarity) compares the encode to the original on a 0 to 1 scale, where 1 is identical. This tool decodes five evenly spaced frames from each file with your browser's own video decoder and compares them at the output resolution, so a deliberate downscale is not counted against the score. The implementation was checked against FFmpeg's own ssim filter over a full clip and agreed to within 0.001.
The compressor focuses on making a file smaller with simple controls. The quality adjuster exposes the rate-control mode itself, so you can choose between a consistent look, a fixed data rate, and an exact file size, and it reports measured results rather than estimates.
Video is decoded and re-encoded on your own device. Large files never leave your machine.