WebM to MP4
WebM to MP4 — Free Converter in Your Browser
Last updated:
Drop a WebM, get an MP4. Conversion happens locally in your browser — your file never leaves your device.
We recommend files under 100 MB. Larger files work but conversion takes a few minutes.
Recording your screen with Pullsy? Share links play everywhere — no conversion needed. Try the free recorder →
Drop a WebM, get an MP4. Conversion happens locally in your browser — your file never leaves your device.
How it works
Pick your WebM file
Click the file input or drag-and-drop a .webm file. We support any WebM container with VP8, VP9, or AV1 video and Opus or Vorbis audio.
Click 'Load converter' (first time only)
ffmpeg.wasm is ~31 MB. It loads in your browser on first use and is cached for the rest of the session. After that, conversion is instant.
Download your MP4
We transcode to H.264 + AAC with +faststart so the file plays in any modern video player, on any device, and starts playing before fully downloaded.
How long does conversion take?
On a typical laptop (M1/M2/Intel i5), a 30 MB WebM takes 1–2 minutes. The conversion runs in a single-threaded WebAssembly worker, so a 4-core CPU is not 4× faster. Smaller files (under 10 MB) usually finish in under 30 seconds.
Does my file ever leave my device?
No. ffmpeg.wasm runs entirely in your browser. The file is read with the FileReader API, written to the in-browser virtual filesystem, transcoded, and downloaded as a Blob URL. There is no network upload at any point. You can verify this in DevTools → Network — the only network traffic is the initial ffmpeg-core.wasm download.
When you need WebM → MP4
WebM is the standard output of screen recorders (Pullsy, Loom, OBS browser capture, Chrome tab capture). MP4 (H.264 + AAC) is the standard everywhere else. Editing in Final Cut or iMovie. Apple's tools accept MP4 natively. Some recent versions handle WebM via a plugin, but MP4 is the path of least resistance. Uploading to platforms that reject WebM. Some social platforms and intranet tools still reject WebM uploads. MP4 is universally accepted. Sharing with people on iPhones. QuickTime plays MP4; older iOS versions do not play WebM in the Photos app or the share sheet. Sending to a transcription service that only accepts MP4. A small number of AI services still hardcode MP4 in their upload endpoint.
How the converter works
We use ffmpeg.wasm 0.12 — the WebAssembly build of FFmpeg — running in a Web Worker on your device. The transcoding command is: ``` ffmpeg -i input.webm -c:v libx264 -preset ultrafast -crf 23 -c:a aac -b:a 128k -movflags +faststart output.mp4 ``` `libx264` is the most widely supported H.264 encoder. `preset ultrafast` trades a little file size for a lot of speed (the right tradeoff for a single-threaded in-browser conversion). `crf 23` is the visual-lossless default — increase to 26 to get a smaller file with barely-perceptible quality loss. The `+faststart` flag moves the MP4 metadata to the front of the file so playback can start before the file is fully buffered.
Privacy and how we handle your data
We do not upload your file to any server. Conversion happens entirely in your browser via ffmpeg.wasm. Your video never leaves your device. The output MP4 is a Blob URL pointing at in-memory data; we do not store it. The only network traffic is the initial 31 MB ffmpeg.wasm download (cached by your browser for the rest of the session).
What about larger files?
Files over 100 MB work but the conversion takes several minutes in a single-threaded browser tab and uses a lot of memory (roughly 5× the file size during transcode). We recommend splitting large files first. If you need to convert a 500 MB WebM, do it in two passes and stitch the results in any video editor.
Will the quality drop?
By default we use CRF 23, which is visually lossless for screen recordings and most camera footage. If you want a smaller file, increase the CRF to 26 or 28. CRF 18 is the maximum-quality setting; expect ~50% larger files. For screen recordings, the right range is usually 23–28.
Is there a file size limit?
There is no hard limit — ffmpeg.wasm will transcode whatever you give it. The 100 MB recommendation in the hero is a practical limit based on browser memory and reasonable conversion times. Above 500 MB, expect the browser tab to be sluggish while the conversion runs.