Skip to content
I Hate Online Tools
← All tools

Video

Convert, trim, compress, GIF, extract audio, mute, resize, rotate, and merge video in the tab with FFmpeg.wasm. The clip isn't uploaded.

Runs in your browser · Nothing uploaded

About Video

Video is the category upload sites love most: a 200 MB file, a progress bar, an email with a link. These pages load a local FFmpeg build once (about 30 MB, then cached) and do the work in the tab. First visit of a video tool pays for the encoder. Your file is still not POSTed.

Outputs I actually ship are MP4, WebM, and MOV for conversion, plus GIF and extracted audio. I'm not advertising AVI, MKV, or FLV as first-class destinations. Long clips are slower here than on a rented GPU farm because they never leave the machine. That's the deal.

The encoder is GPL FFmpeg compiled to WebAssembly, single-thread, same origin. There's no COEP experiment that would break Analytics and the rest of the static site.

Tools in this category

Convert video

Convert video writes MP4 (H.264), WebM (VP8), or MOV. Same-family remux uses stream copy when it can; otherwise it re-encodes. Exotic inputs may decode and still fail an encode, I'll show an error rather than a broken file.

Trim video

Trim video cuts a start and end time. Re-encode keeps the cut close to the times you typed. A 30-minute source doesn't need a 30-minute wait if you set a short window.

Compress video

Compress video uses CRF or a one-pass bitrate guessed from a target size. There's no multi-encode binary search in wasm; that would mean encoding the clip over and over in a browser tab.

Video to GIF

Video to GIF runs the two-pass palette recipe at a width and frame rate you pick. Default 320px and 10 fps is a reaction GIF, not a film print. You can limit the time range so a 30-second source doesn't become a 30-second GIF by accident.

Extract audio

Extract audio drops the picture and writes MP3, WAV, or AAC. Same job as Audio from video; two URLs because people search both phrases. No audio stream means an error, not a silent success.

Mute video

Mute video strips the soundtrack and keeps the picture, via stream copy when the container allows it. For a clip you can send without the room noise, that's enough.

Resize video

Resize video scales to a width, with aspect locked by default (even height). 4K phone clips for a slide deck are the use. Unchecking aspect will squash on purpose.

Rotate video

Rotate video is 90, 180, or 270 for the phone clip that was sideways. 90 and 270 transpose; 180 flips. Not an arbitrary-angle 3D rotate.

Merge clips

Merge clips concatenates two or more files in order. Matching formats can stream-copy; mismatches re-encode. It won't auto-letterbox mixed resolutions into a pretty sequence.

Extract frames

Extract frames writes PNGs at a frame rate you pick and zips them. High fps on a long clip will fill memory. Contact sheet is the one-image cousin.

Reverse video

Reverse video plays the clip backwards, audio included, and caps at 20 seconds so a feature film doesn't live in RAM.

Change video speed

Change video speed uses setpts and atempo. 2 is twice as fast. Pitch stays put. The whole file is re-encoded.

Crop video

Crop video is a numeric rectangle, same idea as image crop, no drag box. Even width and height.

Split video

Split video cuts N equal parts into a zip. Arbitrary cue points are trim, not this page.

Watermark video

Watermark video overlays a logo. Clip first, then the image. Alpha in the PNG is opacity.

Replace audio

Replace audio swaps the soundtrack. Clip first, then audio. The shorter stream wins.

Video contact sheet

Video contact sheet tiles frames into one PNG (3×3 at 1 fps). Short clips may not fill the grid.

Boomerang

Boomerang concatenates forward and reverse, no audio, 8 second cap. The Instagram-era loop.

Common questions

Does converting a video on these pages upload the clip?

No. After the page and the local encoder load from this origin, the bytes of your file stay in the tab. The network panel should show ffmpeg-core.wasm once, not a POST of the movie.

Why is this slower than a website that encodes “in the cloud”?

Those sites use someone else’s CPUs, which is also why they have your file. This page uses yours. A short 1080p clip is fine. A half-hour 4K dump belongs in HandBrake on the desktop.

What licence is the in-browser encoder?

FFmpeg compiled to WebAssembly, GPL. It runs in your tab; I didn't relicense it. The rest of the site is still static files. If GPL is a problem for how you use the output, that's a conversation with a lawyer, not a badge I'll fake.

Why these tools don't upload your files

There is no server to upload to. Each page is a static file, and the work happens in your browser. Your file is read from disk into memory, processed, and handed back as a download. Once the page has loaded you can disconnect from the network and it keeps working. The longer explanation

Install the app