Runs on your device · zero uploads
WebM to MP4 Converter
Drop a .webm screen recording, browser capture or downloaded clip and get a real H.264/AAC MP4 that opens in QuickTime, iMovie, Premiere and every social uploader. The encode happens in your browser with WebCodecs — your file never touches a server.
Convert your WebM
Options
Tip: conversion is realtime-ish — a one-minute 1080p clip usually takes 30–120 seconds on a laptop, and a phone will be slower. Closing the tab cancels the job (nothing is stored).
How it works
Four steps, all inside your browser tab. There is no upload step because there is no server in this pipeline.
1. Demux
Your WebM (Matroska) is read in 4 MB chunks, so a 400 MB recording is never loaded into memory at once. Video and Opus/Vorbis audio packets are pulled out with their timestamps.
2. Decode
WebCodecs decodes VP8, VP9 or AV1 frames straight to the GPU/CPU, with decode queues capped so memory stays flat.
3. Encode
Frames are re-encoded to H.264 (AVC) at your chosen resolution, frame rate and bitrate; Opus audio becomes AAC-LC at 128 kbps.
4. Mux
A small in-page MP4 muxer writes the ftyp/moov/mdat boxes with correct sample tables, then hands you a blob download. No temp files, no server.
Privacy by construction
The only network requests this page makes are the page itself, the stylesheet and htmx. Watch your devtools network tab during a conversion: it stays silent.
Never upscaled
Resolution and frame-rate options only ever drop pixels or drop frames — never duplicate or invent them, so the output stays faithful to the source.
FAQ
Why does it need Chrome, Edge or Safari?
Converting to H.264/AAC uses WebCodecs encoders. Firefox and older Safari builds ship no H.264 encoder, so the page shows an explicit notice instead of a broken dropzone.
Is my video uploaded anywhere?
No. The file is read with File.slice() and stays in this tab. There is no upload endpoint in this tool at all — refresh the page and it is gone.
Why is the MP4 sometimes bigger?
WebM screen recordings are usually already compressed hard. Re-encoding to a 4 Mbps H.264 target can grow a small file; pick the 1.5 Mbps quality preset to shrink it.
What if there is no audio in the result?
Some platforms (notably Linux Chrome builds) have no AAC encoder. Rather than failing, the tool writes a video-only MP4 and says so in the result — audio is never dropped silently.
My recording has no duration and never ends?
MediaRecorder output often reports an infinite duration. This tool derives duration from the timestamps it decodes, so progress and the ETA still work.
Can I convert an MP4 to WebM?
Not here — this tool is one direction only: WebM/MKV in, MP4 (H.264 + AAC) out. MP4 files are rejected up front.