Oncea file clinic

Trim video

Cut a start and end from a small clip, in this tab. Optional mute. No account. The download is just a file.

Before you start. About 80 MB is the ceiling. Desktop Chrome or Firefox is the setup that works. iPhone and large files may fail — the work stays in this tab, and the browser can run out of memory.

Drop a small mp4 on the zone, or click it. Set start and end, then trim.

How to trim a video for WhatsApp or email

  1. Read the limit note above the square first. About 80 MB. Desktop Chrome or Firefox. iPhone and large files may fail.
  2. Drop one small mp4 (or mov / webm) on the square, or click it and pick the file. The clip plays in this tab so you can find the cut.
  3. Set start and end. Seconds work (12.5). So does mm:ss or hh:mm:ss. Leave start empty for the beginning. Leave end empty for the rest of the clip.
  4. Tick Mute if you only want picture — the audio stream is dropped.
  5. Click Trim video. The first run in a session loads the same ffmpeg core as Compress video — about 25 MB from this origin — and keeps it for the tab.
  6. Download the new .mp4. Attach that to WhatsApp or email. There is no watermark and no signup.

WhatsApp and email both choke on a two-minute camera dump when you only needed the last twelve seconds. Cut first. If the trimmed file is still too large to send, use Compress a video for WhatsApp on the result. If you wanted a looping gif instead of an mp4, that is Video → GIF — same drop, optional start and end, still local.

What this page actually does

The browser loads ffmpeg compiled to WebAssembly, the same stack as Compress video and Extract audio. Your file is written into that virtual filesystem. We ask ffmpeg for the slice between start and end, read the bytes back as a Blob, and never upload the clip. There is no queue and no render farm. If the tab dies, the job dies with it.

The first pass is a stream copy: no re-encode, so a cut is fast and the picture stays as it was. If the container will not remux into mp4 (odd audio, webm, an awkward mov), we remux video and encode AAC, then fall back to a short H.264 encode. Mute is -an — the audio stream is dropped, not silenced.

Why the limits are loud

ffmpeg.wasm is a real encoder inside a browser memory cap. A 4K phone dump will not finish. A two-hour lecture will not finish. About 80 MB is the ceiling we advertise because past that the tab tends to crash before it helps you. Forty megabytes can already be painful. We warn, we do not pretend.

iPhone Safari is a bad host for this. Shared memory, wasm, and large ArrayBuffers are where mobile browsers cut you off. Use a laptop. If you are on a phone, AirDrop the clip to a computer and run this page there.

SharedArrayBuffer needs Cross-Origin-Opener-Policy same-origin and Cross-Origin-Embedder-Policy require-corp. Next.js sets both in next.config.mjs. This version still loads the single-thread core so a missing header does not hard-fail the page. If isolation is off, the tool says so. A copy cut is still cheap; a re-encode is just slower.

What you should expect

A shorter file, not a new grade. Stream copy keeps the original codec. Cuts land on nearby keyframes, so the first frame may sit a fraction of a second off your number. That is the trade for a fast cut that does not melt the tab. Re-encode only happens when copy cannot write an mp4.

Mute is for the clip you want to send without the room noise or a copyrighted soundtrack. It does not “quiet” the track; the track is gone.

The first click in a session pays for the wasm core. After that, another short cut is just copy time. Leave the tab in the foreground. Background tabs get throttled and look frozen.

What this is not

This is not a YouTube downloader, not a timeline editor, and not a captions burner. We will not add ads, or a login to unlock longer cuts. If you need frame-accurate NLE work, use ffmpeg or a real editor on a machine you control: ffmpeg -ss 10 -to 25 -i in.mp4 -c copy out.mp4. Once is for the one clip that is too long for WhatsApp or email and too small to justify a whole app.

FAQ

Is the video uploaded?

No. Local verb. The privacy page is the same sentence in writing. The encoder files are served from this origin after install, not used as a place to park your clip.

Which formats can I drop?

mp4, mov, m4v, webm are the ones we try. The decoder inside ffmpeg.wasm is not a full desktop build. An odd codec in a .mkv can fail. If it fails, the error stays on this page.

Can I enter times as mm:ss?

Yes. 0:12, 1:05, 00:01:05, or a number of seconds. Empty start is the beginning. Empty end is the rest of the file.

Why is the cut a little early or late?

Stream copy seeks to a keyframe. A fraction of a second is normal. If you need a frame-accurate cut, use desktop ffmpeg with a re-encode, or Compress video after a looser trim.

The file is still too big for WhatsApp.

Trim only shortens duration. It does not recompress. Send the result through /compress-video/whatsapp.

Do you keep a copy or watermark it?

No copy, no watermark, no paywall on the result. A finished job only increments a localStorage counter on this device, key once:jobs.

The tab crashed. Did you get the file?

No. A crash is a crash. Try a shorter source or a desktop with more RAM. The 80 MB cap exists so we say no before the browser does.