Skip to main content
Video Mender

Compress · runs on your device

Compress video in your browser

Set a target size in megabytes or pick a quality level, queue as many files as you like, and Video Mender compresses them locally — no upload, no account, and no file size cap beyond what your own device can hold.

Nothing is uploaded

Drop video files here

MP4 · MOV · MKV · WebM · AVI · WMV · M4V · TS and more

Plays on effectively every browser, phone, TV and editor when it holds H.264 and AAC.

How to size the output

A constant quality target. File sizes vary with how demanding the footage is.

Files smaller than the limit are left alone. Capping usually looks better than lowering the bitrate.

Platform presets — editable

These are dated observations, not permanent platform limits — all were last checked on 2026-08-01. Every one sets an ordinary target size you can edit afterwards.

This is the full workspace. Every control the format-specific pages expose is here, plus the ones that only make sense generically: target file size in megabytes, target bitrate, resolution caps, frame-rate reduction and editable platform presets. It accepts every container Video Mender can read and writes MP4, MOV, MKV, WebM or AVI.

The honest framing first, because compression is where tools usually start lying. Making a video meaningfully smaller means throwing information away — either by re-encoding at a lower bitrate or by reducing the resolution. There is no setting anywhere in this app that shrinks an already-compressed video without a quality cost. What varies is whether you can see the cost, and at 1080p with the Balanced preset most people cannot.

Batch is the point rather than an extra. Queue a folder, apply one preset to everything or override individual files, and the scheduler works through them with concurrency chosen from the memory your device actually reports. On iPhone and Safari it deliberately runs one heavy file at a time, because the alternative is a tab that dies halfway through your queue.

What this actually does to your file

Rewrap or re-encode

Fast rewrap is switched off here on purpose. Copying streams cannot reduce the size of an already-compressed video, so a compressor that offered it would just hand back the same file with a new name.

Quality

Compression is lossy by definition. Target-size mode calculates a bitrate from the duration and then honours it, which means a long video squeezed into a small target will visibly soften — the estimate panel warns you before you start rather than afterwards.

  • A target size the source cannot reach at any watchable quality will be flagged before processing, not silently accepted.
  • Compressing a video that is already heavily compressed gives poor results — you are stacking generations of loss.
  • Platform size limits are dated observations, not permanent facts. Every preset shows when it was last checked and every number is editable.
  • Very large batches held as finished blobs will exhaust memory. Download as you go, or ZIP a selection rather than everything.

How to use this page

  1. Drop in files or pick a folder. Mixed formats in one queue are fine.
  2. Choose a mode: a target size in MB, a quality level, or an explicit bitrate.
  3. Optionally cap the resolution — dropping 4K to 1080p saves more than any bitrate tweak.
  4. Review the estimated output size shown per file, then start the queue.
  5. Download files as they finish, or select several and take a ZIP with a manifest.

Where the result plays

Checked against the containers and codecs this page produces, stated conservatively.

TargetWorksDetail
MP4 outputYesH.264 with AAC. The safe default: plays on every browser, phone, TV and editor.
WebM outputPartlyVP8 with Opus. Web-native, but Safari support is inconsistent and editors reject it.
MKV outputPartlyUseful for archiving with flexible codecs. No browser plays it.
AVI outputNoLegacy targets only. Larger at equal quality and unplayable on anything modern.

The formats involved

FormatReadWriteWhat it is
MP4YesYesThe MPEG-4 Part 14 container. It is a wrapper, not a codec — an MP4 usually holds H.264 or HEVC video with AAC audio.
MOVYesYesApple QuickTime. Structurally a close cousin of MP4, which is why MOV files can often be rewrapped to MP4 with no re-encode.
MKVYesYesMatroska. The most permissive common container: it will carry almost any codec, plus multiple audio tracks, chapters and subtitles.
WebMYesYesA deliberately restricted Matroska profile for the web: VP8/VP9/AV1 video with Opus or Vorbis audio, and nothing else.
AVIYesYesMicrosoft Audio Video Interleave, from 1992. No native support for modern per-frame timing, B-frame handling is fragile, and the index sits at the end of the file.
WMVYesNoWindows Media Video inside an ASF container. The video is normally WMV3/VC-1, which nothing outside the Microsoft stack decodes reliably.
M4VYesYesApple's MP4 variant used by iTunes. Byte-for-byte it is an MP4; the extension exists so iTunes can flag optional FairPlay DRM.
TSYesNoMPEG transport stream: a broadcast and HLS format built for streams that can be joined mid-flow, so it has no single global header.
MTS / M2TSYesNoAVCHD camcorder recordings — an MPEG transport stream with 192-byte timestamped packets instead of the usual 188.
VOBYesNoDVD Video Object: an MPEG-2 program stream that also carries DVD menus, subtitle streams and multiple angles.
3GPYesYesThe 3GPP mobile container from the pre-smartphone era. Same ISO base structure as MP4, usually holding low-resolution MPEG-4 video and AMR narrowband speech audio.
FLVYesNoFlash Video. Flash Player reached end of life on 31 December 2020, so FLV files now need converting simply to stay watchable.

Tested limits

Real ceilings measured on real devices, not a marketing claim of unlimited.

LimitDesktopiPhone / iPadWhy
File size — rewrap1.3 GiB384 MiBRewrapping never decodes a frame, so it tolerates far larger files.
File size — re-encode1.0 GiB256 MiBDecoding holds uncompressed frames in memory, which is the real constraint.
Clip length — re-encode4:00:0030:00Beyond this, progress reporting and memory behaviour stop being dependable.
Resolution — re-encode4096 × 21601920 × 1080A 4K frame is about 12 MB decoded, before the encoder allocates anything.

If something goes wrong

The output missed my target size.

Target-size mode calculates a bitrate, encodes, measures the real file and retries once if it is outside tolerance. If it still misses, the queue tells you the size it achieved instead of pretending it succeeded — usually the target was not reachable for that duration.

The compressed file is bigger than the original.

You asked for more bits than the source contained. Use target-size mode, or a lower quality preset. Video Mender flags this before starting when it can predict it.

The tab ran out of memory on a large batch.

Finished outputs are held in memory until downloaded. Download as jobs complete rather than accumulating everything, and avoid ZIPping very large selections.

Processing is much slower on my phone.

Deliberate. On Safari and iOS the scheduler runs one heavy job at a time and uses the single-threaded engine, because the multi-threaded path is not reliably available there.

Your video never leaves this device

This is a structural property of the application, not a policy we ask you to take on trust. There is no upload endpoint, no API route and no server action anywhere in the codebase, so there is nowhere for a video to be sent even by mistake.

  • Conversion runs in WebAssembly inside this browser tab. The engine is served from this domain and loaded only when you start a job.
  • The Content-Security-Policy restricts network connections to this origin, so the page is not permitted to contact a third party at all.
  • Nothing is stored. Close the tab and every queued file and finished output is gone — which is also why you should download results before you leave.
  • There are no accounts and no AI. Anonymous page views are counted — which page, roughly what country, what kind of device — and nothing whatsoever about your files.

The repository contains a test that fails the build if any media byte is passed to fetch, XMLHttpRequest, sendBeacon or a WebSocket. See the privacy page for how that is verified.

Questions

Can I compress video without losing quality?

Not meaningfully, and no honest tool will claim otherwise. Lossless rewrapping does not reduce the size of already-compressed video, and real size reduction requires re-encoding or downscaling. What is achievable is loss you cannot see at normal viewing distance.

How do I compress a video to a specific number of megabytes?

Choose target-size mode and type the number. The bitrate is calculated from the duration and the audio allowance, the file is encoded and measured, and one bounded retry runs if the result falls outside tolerance.

Is there a file size or length limit?

Yes, and they are published on the limits page rather than discovered when a job fails. The engine is a 32-bit WebAssembly build with a 4 GiB address space, so re-encoding tops out around 1 GB of source on a desktop and 256 MB on a phone. The queue estimates memory before starting and refuses what it cannot finish.

Does compressing many videos at once make it faster?

Only on capable desktops, and only up to a point. Video encoding already uses every core it can, so the scheduler favours finishing one file quickly over starting four slowly — and on mobile it runs strictly one at a time.

Are my videos uploaded to be compressed?

No. There is no upload endpoint, no API route and no server-side processing in this application at all. The encoder is WebAssembly running in this tab, and the test suite asserts that no media bytes cross the network.

What is the best format to compress to?

MP4 with H.264, for both playability and size. WebM here is VP8, which is no more efficient than H.264, so choose it only when something in your tooling wants WebM. Never AVI unless a specific old device demands it.

Related tools