Transcode an MP4 into an HLS stream (.m3u8 + .ts segments) entirely in your browser. Nothing is uploaded anywhere.
Click to choose an MP4 or drag & drop it here
Recommended: under ~200 MB / a few minutes of footage — browser-based encoding is much slower than native ffmpeg.
Single quality produces one .m3u8 playlist + segments. Adaptive produces several renditions plus a master playlist, so players can switch quality based on bandwidth.
Shorter segments = faster seeking / quicker quality switches but more files. 4–8s is typical for VOD.
Slower presets shrink the output more but take much longer to encode in WebAssembly. Veryfast is a good default.
The .zip contains .m3u8 playlist(s) and .ts segments (plus a master.m3u8 if adaptive). Unzip it onto any static HTTP(S) host and point an HLS-capable player (hls.js, Video.js, native Safari, etc.) at the .m3u8 file. It generally won't play directly from a file:// URL due to CORS/MIME restrictions.
HLS (HTTP Live Streaming) splits video into small segments with a playlist file, enabling adaptive bitrate streaming, faster start times, and better seeking compared to a single large MP4. It's the standard format for video players like hls.js, Video.js, and native Safari/iOS playback.
Is my video uploaded to a server?
No. Conversion runs locally in your browser via ffmpeg.wasm. Only the ffmpeg engine itself (~25MB) is downloaded from a CDN on first use — your video file never leaves your device.
Why won't the HLS output play from a file:// URL?
HLS playback requires proper HTTP(S) delivery with correct MIME types and CORS headers, which local file:// URLs don't provide. Host the output on any static HTTP(S) server to play it.
Which players support the output?
Any HLS-capable player — hls.js, Video.js, Shaka Player, native Safari/iOS, and most modern video platforms.
Is this tool free?
Yes — free, no sign-up, and works entirely offline once the ffmpeg engine has been downloaded once.
Built by Raghav Garg — linkedin.com/in/raghavg1999