Video Trim and Crop with FFmpeg in Your Browser

Cut and crop MP4, MOV, WebM, and MKV files locally with ffmpeg.wasm. No upload, no account.

First use downloads ~31 MB FFmpeg compiled to WebAssembly. Trims, crops, and re-encodes video files locally. The single-threaded build skips SharedArrayBuffer requirements so it loads on any modern browser. Cached after the first run.
About Video Trimmer

Load a video, scrub a preview, and pick start and end times with sliders. Optionally crop to a rectangle by entering x, y, width, and height in pixels. The trim runs through ffmpeg.wasm, the WebAssembly build of FFmpeg, so the whole pipeline executes in your browser tab. Trims without cropping use stream copy and finish in seconds; crops trigger a re-encode but stay fully local.

Video Trim and Crop loads ffmpeg.wasm on demand, so the page stays light until you actually run a job. The core and WASM are fetched via toBlobURL from the official @ffmpeg/core distribution, which sidesteps Cross-Origin-Embedder-Policy issues on regular hosts. Once loaded, FFmpeg is cached by the browser for future visits to this tool.

The trim path uses -ss and -to with -c copy, which seeks to the start time and copies the existing video and audio streams into a new container without re-encoding. This is fast and lossless, though FFmpeg will snap the start to the nearest keyframe. When cropping is enabled the pipeline switches to a -vf crop=W:H:X:Y filter, which requires decoding and re-encoding the video stream. Cropping is slower but lets you change framing without leaving the page.

Duration and pixel dimensions are read from the HTMLVideoElement metadata after the file loads, so the sliders and crop defaults match the source. Progress comes from FFmpeg's progress event and is displayed inline. The result is offered as an MP4 download named after the source file.

How to use the Video Trimmer
  1. 1

    Upload a video

    Pick an MP4, MOV, WebM, or MKV file. A preview plays inline and the tool reads its duration and dimensions.

  2. 2

    Set trim and optional crop

    Drag the start and end sliders to mark the segment you want. Toggle crop and enter x, y, width, height in pixels to reframe.

  3. 3

    Run the trim

    Click Trim video. FFmpeg.wasm loads on first use, processes the file locally, and offers the result as an MP4 download.

Common use cases

Cut highlights from a screen recording

Pull a 30-second moment out of a long Loom or QuickTime capture before sharing it on Slack.

Reframe a phone video

Crop a vertical 9:16 capture down to a square or remove dead space on the sides without re-shooting.

Prepare a clip for upload

Trim the intro and outro off a screencast before uploading to a docs site that has a file-size limit.

Make a quick GIF source

Isolate the exact seconds you want to convert to GIF elsewhere so the final clip stays short.

Frequently asked questions
Is the video uploaded anywhere?

No. The file is read into FFmpeg's in-memory filesystem and processed by WebAssembly running in your tab. Nothing is sent to a server.

Why does the first run take a while?

FFmpeg.wasm is about 30 MB. It downloads on the first trim of the session and is cached for the rest of the session and future visits.

Why does the trim start a little before where I set it?

Trims without cropping use -c copy, which can only cut at video keyframes. Enable cropping to force a re-encode and get a frame-accurate start, at the cost of longer processing time.

Why is cropping slower than trimming?

Cropping changes pixel dimensions, so FFmpeg must decode every frame, apply the crop filter, and re-encode the video. A plain trim with -c copy avoids decoding entirely.

What input formats are supported?

MP4, MOV, WebM, and MKV are tested. FFmpeg can read many more formats, but compatibility depends on which demuxers and decoders are compiled into the WASM core build.

converterweb