A video compressor is a tool that re-encodes a video file so it takes up fewer bytes, typically by reducing resolution, frame rate, or bitrate while keeping the visual content recognizable. The compression happens through a codec — short for coder/decoder — which is the algorithm that decides how each frame of pixels is described and stored on disk. Different codecs describe frames differently: some keep almost everything (visually lossless), some throw away detail the human eye is unlikely to notice (perceptually lossy), and some aggressively drop data to hit a target size. A video compressor wraps that codec work in a simple interface: you give it a source file, it produces a smaller or differently-encoded output, and you download the result. The practical meaning of "compressing a video" is therefore not a single magic step but a chain of deliberate trade-offs between file size, picture fidelity, motion smoothness, and compatibility with the devices that need to play the file back later. Those trade-offs are what every preset, slider, and "quality" label in any compressor is actually negotiating, and they explain why two different compressors given the same input often produce different outputs.

What "compressing a video" actually changes inside the file
When a compressor rewrites a video, it is not simply zipping the original bytes. It decodes each frame of the source into raw pixels, then lets a new encoder describe those pixels again using whatever rules the chosen codec follows. Three numbers drive most of the size change.
Resolution is the width and height of each frame in pixels. Fewer pixels means less data per frame, and a 1920-pixel-wide frame contains roughly nine times as many pixels as a 640-pixel-wide frame at the same aspect ratio. Frame rate is how many frames are stored per second. A 24 fps output has 20 percent fewer frames than a 30 fps output over the same duration. Bitrate is how many bits the encoder is allowed to spend per second of video. Lower bitrate means each frame gets less budget for detail, which forces the codec to keep only what its algorithm thinks the viewer will notice.
A compressor can shrink all three at once, or only one. It can also change the codec itself — for example, re-encoding an already-compact H.264 source into VP9 inside a WebM container. The bytes you see on disk are whatever combination the encoder settles on for each second of footage, which is why the same source can produce very different output sizes through different tools.
How the Video Compressor approaches the task
The Video Compressor re-encodes one browser-decodable video into a WebM file without uploading it. You choose a file, select a preset, and start compression. The page plays the source locally, draws each displayed frame into a bounded Canvas, and records that Canvas stream with a WebM codec supplied by the current browser. When the source ends, the tool reports output dimensions, input and output bytes, and the measured percentage change, then offers the generated file for download.
The interesting part is the chain of browser technologies behind that description. HTMLCanvasElement.captureStream() turns the rendered Canvas into a MediaStream, and the MediaRecorder interface records that stream into a Blob. Both behaviors are standardized in the W3C MediaStream Recording specification and documented on the MDN MediaRecorder reference page. The tool's job is to keep the canvas output inside preset-defined limits so the encoded file lands at the size its heuristic predicts.
What "running locally" actually means here is that decode, Canvas drawing, MediaRecorder encoding, and download all happen in the current browser tab. The source never leaves the device, which is the practical difference between a local compressor and a server-based one.
The three presets and what each one targets
The three presets are transparent product choices rather than claims about a universal optimum. Each one caps the output width, sets a target frame rate, and feeds the encoder a bits-per-pixel budget that the heuristic then clamps into a final video bitrate between 180 kbps and 8 Mbps. All three preserve the source aspect ratio, never enlarge the source, and round output dimensions down to even pixel values for broader codec compatibility.
| Preset | Max width (px) | Target frame rate | What it favors |
|---|---|---|---|
| Small | 640 | 24 fps | Lowest byte count, easiest to send by email or chat |
| Balanced | 1280 | 30 fps | Mid-size output that still looks reasonable on most screens |
| Quality | 1920 | 30 fps | Higher detail and smoother motion, larger byte count |
The output dimensions you actually see after a run are whatever the preset produces after the source aspect ratio and even-pixel rounding have been applied, not necessarily the maximum width in the table. A vertical 9:16 clip capped at 1280 pixels wide by Balanced will come out 1280 wide and 2274 tall after rounding, while a 3840-wide source is downscaled to 1920 pixels wide by Quality.
Compress a video with the Video Compressor
- Choose a browser-decodable video no larger than 500 MiB, five minutes, or 3840 × 2160 pixels. The page validates the file's extension or MIME, byte size, decoded duration, and frame size before it lets you proceed.
- Select Small, Balanced, or Quality and start compression. Keep the tab open while the source plays in real time — encoding runs at playback speed because MediaRecorder observes the Canvas stream while the source plays, so a two-minute source takes roughly two minutes.
- Review the actual dimensions and byte change, download the WebM, and play it fully before deleting the original. The reported percentage is calculated only from the two actual Blob sizes, so a positive or negative sign is meaningful.
Why the output can sometimes be larger than the input
Compression is content-dependent. A low-motion animation may become much smaller, while noisy footage, grain, camera shake, rapidly changing detail, or an already-efficient source can produce a similar or larger file. The tool reports actual bytes and never labels a larger file as a reduction.
This is worth reading carefully because it contradicts a common assumption about compressors. Many users expect the word "compress" to guarantee a smaller number on disk, and some online tools quietly scale, crop, or re-sample the video until that guarantee holds. The Video Compressor does not. It shows the real byte counts and the signed percentage change between them, so the number on screen is the same number you can measure yourself. For a closer look at what the page actually reports, see Video Compressor Accuracy: What It Actually Reports.
If a preset produces a file you do not want to keep, the answer is to try another preset or a different source, not to trust the label on the button. A noisy phone recording at the Quality preset can come out heavier than the source, while the same recording at the Small preset often shrinks dramatically.
Limits, errors, and what the tool does not preserve
Input is limited to 500 MiB, five minutes, 4096 pixels on either side, and no more than 3840 × 2160 pixels of decoded area. Files may be named MP4, WebM, MOV, M4V, or Ogg, but successful decoding still depends on codecs installed in the current browser — a valid extension cannot make an unsupported codec decodable.
When the tool cannot honor its contract, it fails loudly rather than producing a bad file. An invalid file, unsupported decoder, over-limit duration, over-limit frame, missing Canvas stream, or unavailable WebM recorder produces an error and no download. Choosing a new file, changing presets, canceling, or leaving the page invalidates the active job and releases temporary Object URLs.
There are also several things the utility does not do:
- Preserve subtitles, chapters, attachments, rotation tags, color metadata, or HDR signaling.
- Normalize volume, mix audio tracks, or remove metadata according to a certified standard.
- Repair corrupt media or guarantee deterministic cross-platform output — the recorder tries VP9, then VP8, then generic WebM according to the current browser's reported support, so the same preset and source can produce different bytes in Chrome versus Firefox.
- Output MP4. WebM is the only output container because MediaRecorder support for browser-generated MP4 remains inconsistent.
- Include audio unless the browser exposes a capturable track through HTMLMediaElement captureStream. The downloaded file should always be played end-to-end so both picture and sound can be verified.
When a desktop encoder is the right tool
For archival masters, professional delivery specifications, exact codec profiles, two-pass rate control, fixed keyframe intervals, subtitle preservation, or deterministic cross-platform output, use a maintained desktop encoder such as FFmpeg with a reviewed command. A browser tool is the right choice when convenience and privacy matter more than encoder determinism; a desktop tool is the right choice when the output has to match a precise specification byte for byte.
The two approaches are not rivals — they sit at different points on the same trade-off curve. A practical rule: when you need to send a video to someone today, the Video Compressor is the faster answer. When you need to master a video for archival or broadcast, reach for FFmpeg.