Compress video or image to a target file size

Pick a size limit, drop your video or image, get a file that fits. Everything runs on your device.

  1. 1Drop your video or image
  2. 2Pick a target size
  3. 3Download the result
Drop a video or image hereor click to choose a file. Drop several images at once to compress them together. Nothing is uploaded; everything runs in your browser.

Your files stay on your computer

Technical details and how to check it yourself

Check it yourself in a minute

  1. Open this page, then open your browser’s developer tools (F12 or Ctrl/Cmd+Shift+I) and choose the Network tab.
  2. Drop in a video and compress it. Watch the Network tab: you will see no request that carries your file. Files go only from your disk to the page.
  3. Or switch off your internet connection after the page has loaded. Compression still works, because nothing needs a server.

What happens technically

  • Video is decoded and encoded by your browser’s built-in WebCodecs hardware codecs, driven by the Mediabunny library inside a dedicated Web Worker, so the page stays responsive.
  • The input file is read lazily from disk in slices (Blob), never loaded whole into memory. The result is assembled in memory and offered as a download from a local blob URL.
  • Images are decoded with createImageBitmap and re-encoded with an OffscreenCanvas, also in a Web Worker. HEIC photos use a WebAssembly decoder that runs in the same worker.
  • The page sets no cookies for your files and makes no network request containing file data. The only external fetch is the optional compatibility engine (ffmpeg.wasm) for browsers that lack WebCodecs: it downloads code from a CDN, never your file.
  • The site is a static page served by Cloudflare. There is no server-side code that could receive an upload.

What people use it for

How it works

  1. You choose a size

    Pick the limit you need, such as 10 MB for Discord or 25 MB for email, and drop in your video or image.

  2. Your computer does the work

    The file is shrunk right here in your browser. It is not sent anywhere, so there is no upload to wait for.

  3. You download a file that fits

    You get a new file just under your limit, with the best quality that size allows. Your original stays untouched.

How the size is reached, in detail

How the size target is met

  1. 1. Budget

    Your target size becomes a bit budget, keeping about 3% in reserve for the MP4 container so the finished file does not creep over the limit.

  2. 2. Audio first

    AAC audio that is already small is copied untouched. Otherwise audio is re-encoded at 96 kbps, or 64 kbps mono when space is tight, so the rest of the budget goes to the picture.

  3. 3. Resolution and frame rate

    The remaining bits are divided by the number of pixels per second. If that is too few for a clean picture, the tool steps down from 1080p to 720p or 480p, then from 60 to 30 fps. It never upscales.

  4. 4. Measure and correct

    After encoding, the real file size is checked. If it is over your limit, the video bitrate is corrected and the video is encoded again, up to two more times.

A real example

A 20-second 1080p60 screen recording, aimed at a 10 MB limit:

1080p60 → 720p60Audio copied untouchedAbout 6 seconds in Chrome on a Mac
The compressor planned the resolution from the size budget, kept the original audio, then measured the real file: 9.7 MB, under the 10 MB limit.

Frequently asked questions

Is my video uploaded anywhere?

No. The video is processed in your browser on your own device. It is never sent to our servers or to anyone else.

Technical details

Processing runs in a Web Worker in your browser. The file is read from disk in slices and the result is built in memory, then offered as a local download. The page makes no network request that contains your file, which you can confirm in your browser’s Network tab.

How does it hit the size I choose?

It calculates a bit budget from your target size, encodes, then measures the real file. If the result is over the limit, it adjusts the bitrate and encodes again, up to two more times.

Technical details

The target in megabytes is converted to a bit budget (size × 8 × 1,000,000 × 0.97, keeping 3 percent for the container). Audio is chosen first, the remaining bits are divided by the duration to get a video bitrate, and the encoder is run. The real file is measured, and if it is over the limit the bitrate is corrected by target ÷ actual × 0.97 and the video is encoded again, at most twice more.

Why is my result smaller than the target?

About 3% is kept in reserve, and a video that is already small or visually simple may not need the whole budget. The tool never spends more bits than the original has.

Will the quality drop a lot?

It depends on how much smaller the file must get. The tool tells you the expected quality before you start. Trimming the start and end gives every remaining second more bits, which is the best way to keep quality.

Technical details

The tool computes bits per pixel (video bitrate ÷ width ÷ height ÷ frame rate). Below about 0.05 it steps the resolution down from 1080p to 720p to 480p, then 60 to 30 fps. It never upscales, and it never spends more bits than the source file has.

Which video formats can I use?

Anything your browser can decode, typically MP4, MOV, MKV and WebM with H.264, HEVC, VP9 or AV1. The output is always an MP4 with H.264 video and AAC audio.

Technical details

Reading and writing go through Mediabunny. Decoding uses the browser’s WebCodecs VideoDecoder, so support depends on your browser: H.264 and most others work in Chrome, HEVC depends on your system. The output is always MP4 with H.264 video and AAC audio, written with the index (moov) at the front so playback starts quickly.

Which browsers work best?

Google Chrome and other Chromium-based browsers. Other browsers may fall back to a slower compatibility mode.

Is there a maximum file size?

There is no fixed limit, but the compressed result is built in memory, so very large outputs depend on your device. A 900 MB, ten-minute 1080p60 clip has been tested successfully.

Technical details

The input is read lazily, so a large input does not fill memory. The output is assembled in memory, which is the practical limit. A 911 MB, 10 minute 1080p60 input compressed to a 100 MB target in about a minute in testing, using under about 900 MB of browser memory.

What happens to the audio?

Small AAC audio is kept as is. Anything else becomes AAC at 96 kbps, or 64 kbps mono if space is tight.

Technical details

If the source audio is AAC and takes no more than 15 percent of the budget, it is copied without re-encoding. Otherwise it is encoded as AAC at 96 kbps stereo, or 64 kbps mono when 96 kbps would exceed 15 percent. Browsers without a native AAC encoder load a small WebAssembly encoder.

Can I compress images too?

Yes. Drop a JPG, PNG, WebP, AVIF or HEIC and choose a size such as 100 KB or 1 MB. The tool finds the highest quality that fits and only reduces the resolution if it must. HEIC photos from iPhones are opened right in your browser; the first one downloads a small decoder.

Technical details

The tool searches for the highest JPEG or WebP quality that stays under the target using a binary search on quality, and only if the lowest quality is still too big does it reduce the dimensions step by step. Images already under the limit are returned unchanged, except HEIC, which is always converted.

Can I compress many images at once?

Yes. Drop several images together, pick one size and format, and download them all as a single zip file. Videos are handled one at a time.

Technical details

The images are compressed one after another by the same worker, so the HEIC decoder loads only once. Each result is checked against the target, and the zip is built in your browser with the fflate library using no extra compression, because the images are already compressed. Up to 200 images are taken per batch.

What happens to a transparent PNG?

PNG cannot be tuned to a size directly, so it is converted to JPEG or WebP. JPEG has no transparency, so transparent areas become white. Choose WebP to keep transparency.

Is it free?

Yes. There is no sign-up and no watermark. The site may show advertising to cover its costs.

Guides