How to Compress a Video Without Uploading It
You just recorded a five-minute clip and the app says it is too large. The obvious next step is to find an online compressor and upload it. That works, but it also copies a private file to someone else's server, waits in a queue, and often hands back a generic preset that ignores what your video actually contains.
There is a better order of operations. Compress locally, in your browser, and use the same levers a good desktop encoder uses:
- remove the parts nobody needs;
- choose a resolution that matches the destination;
- set a quality target with CRF;
- only add a bitrate cap when you have to fit a hard size limit.
That workflow is not only more private. It is also faster than uploading a 500 MB file, because your browser only reads and writes the file on your own device.
Why “Upload” Is Usually the Wrong First Step
Most upload-based compressors do three things: move your media across the internet, queue it behind other jobs, and apply a preset. That is convenient for a 10 MB clip, but much less attractive for a screen recording, a client video, or anything that includes private information.
Running FFmpeg WASM in the browser avoids that round trip. The video is read locally, encoded by WebAssembly, and exported as a download. There is no server-side copy and no waiting for someone else's upload bandwidth.
The tradeoff is that your computer does the work. A fast PC can chew through a short clip quickly; an older laptop will take longer on a long video. But the privacy and speed benefits are usually worth it once the source file is more than a few megabytes.
Start by Deleting What You Do Not Need
The cheapest compression is not an encoder setting. It is simply shortening the video.
If your recording has 30 seconds of dead air at the start, 12 seconds of fumbling for a window, and 20 seconds of “okay, that is the end,” trimming those sections can remove a large part of the file before any re-encoding happens. This also improves the viewing experience — fewer seconds means fewer chances for the viewer to close the tab.
Use the Video Trimmer to remove the beginning and end first. If you plan to compress aggressively, trimming before encoding is better than compressing a longer clip and hoping the viewer skips to the useful part.
For screen recordings and tutorials, this step is especially valuable. You often do not need the entire session — just the section that demonstrates the task.
Match the Resolution to the Destination
Resolution is the second most important size lever. It changes the number of pixels per frame, so the effect can be large:
| Source | Destination | Reasonable output |
|---|---|---|
| 1080p phone video | WhatsApp / chat preview | 720p |
| 1080p screen recording | Discord / email | 720p or 1080p |
| 1440p or 4K camera clip | Social upload | 1080p |
| 4K screen recording | Email / chat | 720p or 1080p |
Do not reduce resolution just for the sake of it. If the video is mostly static and you need 1080p, keep 1080p. But if the destination is a chat preview or an email attachment, 720p is usually enough. It also tends to survive compression better than 4K squeezed into a small file.
The Video Compressor lets you scale the output resolution directly. Start with 720p when the destination is a message or email; keep 1080p when the video needs readable UI text or fine camera detail.
Use CRF Before You Reach for a Bitrate Cap
CRF is a quality target, not a size promise. Lower numbers preserve more detail; higher numbers make smaller files. With x264, a practical range looks like this:
| CRF | What it means |
|---|---|
| 18–20 | Visually close to the source; good for archival or high-quality exports |
| 23 | Balanced default; usually fine for normal social video |
| 26–28 | Noticeably smaller; still acceptable for many chat and email clips |
| 30+ | Aggressive; expect visible compression artifacts |
For most “this file is too large” problems, start with CRF 26–28. If the result looks good and is small enough, stop. If it looks soft, step down to 25 or 24 and try again.
The reason CRF should come first is that it adapts to your content. A mostly static talking-head clip needs fewer bits than a fast-moving camera pan. CRF preserves quality where it is needed and spends fewer bits where it is not. A fixed bitrate preset does not know that.
Open the Video Compressor, pick CRF 27, and compare the result with the original. In many cases that single setting is enough.
When You Need a Hard Limit, Use a Bitrate Cap
Some destinations have hard limits. Discord has a 20 MB limit for free users as of 2026, and many email services reject attachments over about 25 MB. A CRF preset may produce a great-looking file that still exceeds the limit.
This is where a max bitrate cap helps. It tells the encoder not to spend more than a certain number of bits, which moves the output toward a predictable size. It is not a magic exact-size calculator — duration and content still matter — but it gives you a much tighter target than CRF alone.
A quick way to estimate a starting bitrate is:
target bitrate ≈ target file size × 8 ÷ duration in seconds
For example, for a 4-minute (240-second) video that must fit under 20 MB:
20 MB × 8 = 160 Mbit
160 Mbit ÷ 240 seconds ≈ 667 kbit/s
Leave a little room for audio and container overhead. If you want the video to be clearly under 20 MB, try a video bitrate cap around 600 kbit/s for that 4-minute clip, then check the final file size.
In practice:
- trim the clip;
- reduce resolution if needed;
- set CRF to 26–28 for a quality baseline;
- add a max bitrate cap;
- compress and check the size;
- lower the bitrate or resolution if it still misses the target.
Do not keep re-encoding the same output over and over. Each lossy pass costs quality. Start from the original source every time you change settings.
Special Cases
Screen recordings
Text is fragile. Compression artifacts often appear as fuzzy edges around UI labels before they are obvious in moving video. Keep the resolution, use a lower CRF such as 20–24, and trim aggressively instead of crushing the text.
If the recording is mostly static, a slower preset can also help: it spends more time looking for a smaller, cleaner result at the same quality level.
Camera footage
Phone and camera footage often contains motion noise, which is expensive to encode. 720p with CRF 26–28 is a good first test for messaging apps. If the video still looks too soft, try 1080p with CRF 28 before you reduce the quality further.
Long videos
A long 1080p video may exceed browser memory if you process it as one giant block. Trim the section you actually need, lower the resolution, or split the task into parts. The Video Compressor can handle large files with on-demand reading, but very long videos still benefit from preprocessing.
GIFs
Do not use the same approach as video. GIF has no modern inter-frame compression and is limited to 256 colors. If the destination supports MP4 or WebM, use video. If it really needs a GIF, reduce dimensions and frame rate first, then use the GIF Compressor.
A Simple Decision Path
Use this as a quick checklist:
- Can you cut the video shorter? Do that first.
- Does the destination need full resolution? If not, use 720p.
- Do you care most about visual quality? Use CRF 23–26 and stop when the size is acceptable.
- Do you need to fit a hard limit? Add a bitrate cap and iterate from there.
- Is the result still too big? Reduce resolution or trim again. Avoid stacking repeated lossy re-encodes.
The best setting depends on the content. A two-minute whiteboard explainer, a fast skateboard clip, and a 4K drone shot will behave differently even with identical settings.
Try It Locally
Open the Video Compressor, drop in the original file, and run the trim → resolution → CRF → bitrate-cap sequence. Everything runs in your browser, so the video stays on your device. If you only need to shorten the clip before compression, start with the Video Trimmer.
Once you know the settings that work for your source footage, you can reuse them for future clips from the same camera and the same destination. That is usually faster than hunting for a one-off online preset.