Video tools

Convert video

Change videos between MP4 and WebM, in the browser only. It encodes with WebCodecs, which Node has no equivalent of, so the CLI and MCP surfaces refuse it. Nothing is uploaded.

Runs on your device. The file is never uploaded.

Convert video re-encodes a clip into MP4 or WebM, whichever the format option names, mp4 by default. Incoming video can be H.264, H.265, VP8, VP9 or AV1, with AAC, Opus, MP3 or FLAC sound. Older DivX and Xvid files are turned away. Encoding runs through WebCodecs, an API Node does not implement, so the CLI refuses this one.

Input

Options

Questions

Does it re-encode my video or only change the container?

It re-encodes. The tool runs a mediabunny Conversion, which decodes every frame and encodes it again through WebCodecs into the format you picked. There is no stream copy path here, so expect one generation of quality loss even at high quality. If you only want to cut, join or turn a file without touching the pixels, use Trim video, Merge videos or Rotate video instead. Those copy packets and never decode.

What formats and codecs can it handle?

Output is MP4 or WebM, chosen with the format option, which defaults to mp4. On the way in it reads H.264, H.265, VP8, VP9 and AV1 video with AAC, Opus, MP3 or FLAC audio. Older codecs such as MPEG-4 Part 2, the DivX and Xvid family, are not supported. When one of those goes in, the error names them so you know why the file was refused.

Why does the command line say it needs a browser?

Because encoding runs through WebCodecs and Node has no equivalent of it. The tool is marked browser only, so the CLI and MCP surfaces refuse it before any work starts: "video-convert needs a browser (OffscreenCanvas). Use it at /video/video-convert instead." Open that page and the same code runs in a Web Worker in your tab.

What does the quality setting change?

It selects one of the three mediabunny quality presets, low, medium or high, and applies it to both the video and the audio track. Medium is the default. There is no bitrate field, no resolution field and no target file size. Lower quality gives a smaller file with more visible artefacts. To change dimensions use Resize / crop video. To aim at a smaller file use Compress video.

Does my file get uploaded?

No. The file is read into your browser memory and converted in a Web Worker in the same tab. Nothing is sent to a server and there are no accounts. After the first visit the page works with your network switched off. The trade-off is that your own device does the work, and both the input and the output sit in memory while it runs.

Why did I get "this browser cannot convert it"?

Because your browser cannot handle any track in the file. A conversion that drops every track still writes a valid but empty container, so the tool checks for that and refuses instead, listing each track and the reason it was discarded. If only one track was dropped, you still get your file plus a note saying which track went missing and why.

Related Video tools

n→nCompress videoShrink a video by re-encoding it at a lower quality, in the browser only, like video-convert (src/tools/video-convert.ts), because mediabunny encodes through WebCodecs, which Node has no equivalent of. Always outputs MP4.Runs on each file you dropn→nTrim / cut videoCut a video down to a start-to-end range without decoding a single frame. Packets are copied straight from the source into a new MP4, so this runs in Node, the CLI and MCP as well as the browser. The cut snaps back to the nearest keyframe before the start you asked for, the same trade-off ffmpeg -c copy makes.Runs on each file you dropn→1Merge videosConcatenate two or more videos, one after another, into a single MP4. A packet-level copy with no decoding, so this runs in Node, the CLI and MCP as well. Every input must share the same video codec (and audio codec, if present); mixed-codec inputs need re-encoding first, which this tool deliberately does not do.Combines the files you dropn→nResize / crop videoResize and/or crop a video, in the browser only, like video-convert (src/tools/video-convert.ts), because mediabunny decodes and re-encodes through WebCodecs, which Node has no equivalent of. Always outputs MP4.Runs on each file you dropn→nRotate videoRotate a video by a multiple of 90° by writing rotation metadata into the container, the same trick phones use for orientation, rather than re-encoding every frame. A packet-level copy, no decoding, so this runs in Node, the CLI and MCP as well as the browser. Most players honour this metadata; a player that ignores it will show the original orientation.Runs on each file you dropn→nChange video speedSpeed a video up or down by rescaling the timestamp on every packet. A packet-level copy, no decoding, so this runs in Node, the CLI and MCP as well as the browser. Audio speeds up with the video and its pitch shifts along with it, the same trade-off most simple speed-change tools make; correcting pitch back to normal needs decoding and resampling the audio, which this tool deliberately does not do.Runs on each file you drop