Free HLS Transcoder Online — Convert Any Video to Multi-Bitrate ABR HLS

Generate a complete HTTP Live Streaming (HLS) adaptive bitrate package from any video file — entirely in your browser. This free tool encodes up to 5 renditions (1080p, 720p, 480p, 360p, 240p) using H.264 + AAC via FFmpeg WASM, produces per-rendition .m3u8 playlists, MPEG-TS segments, and a standards-compliant master manifest ready to upload to any CDN — AWS CloudFront, Cloudflare R2, Akamai, Bunny CDN, or self-hosted Nginx.

No File Upload — 100% Private No Account or Email Needed Runs in Your Browser (FFmpeg WASM) No Watermark on Output Download Full ZIP with All Segments

HLS Multi-Bitrate Video Transcoder

Upload any video and generate a complete multi-bitrate HLS adaptive streaming package — multiple .m3u8 playlists, MPEG-TS segments, and a master manifest — all encoded in your browser using FFmpeg.wasm. No file is sent to any server. Download everything as a single ZIP.

Upload Video to Transcode

Drag & drop your video here, or click to browse
MP4, WebM, MOV, AVI, MKV supported

No Upload No Account Browser-Only No Watermark Free ZIP Download
Processing time notice: H.264 encoding in the browser is CPU-intensive. Expect roughly 1–3× the video duration per rendition (e.g., a 2-minute video × 4 renditions ≈ 8–24 minutes). Use the ultrafast or veryfast preset for the best speed. Keep videos under 500 MB / 10 minutes for best results.

What Is HLS Adaptive Bitrate (ABR) Streaming?

HLS (HTTP Live Streaming) is the video streaming protocol developed by Apple, now universally supported across browsers (Chrome, Firefox, Safari, Edge), mobile platforms (iOS, Android), smart TVs, CDNs, and streaming services including YouTube, Twitch, and Netflix. Unlike progressive download which delivers a single video file, HLS splits the video into short MPEG-TS segments (typically 2–10 seconds each) and serves a text-based M3U8 playlist that tells the player which segments to fetch next.

An adaptive bitrate (ABR) ladder packages the same video at multiple resolutions and bitrates simultaneously — for example: 1080p at 4,500 kbps, 720p at 2,800 kbps, 480p at 1,400 kbps, 360p at 800 kbps. A master manifest (master.m3u8) lists all available renditions with their BANDWIDTH, RESOLUTION, and CODECS attributes. The player (HLS.js, Video.js, Shaka Player, or native Safari) automatically measures the viewer's available bandwidth every few seconds and switches to the highest-quality rendition that can play without buffering — delivering smooth, stall-free video on any connection.

This tool generates a complete, standards-compliant HLS ABR package: one .m3u8 playlist and all .ts segments per rendition, plus a master manifest — all ready to upload to AWS S3 + CloudFront, Cloudflare R2, Akamai, Bunny CDN, or any web server.

Recommended HLS Bitrate Ladder (Reference Table)

The defaults in this tool follow Apple's HLS Authoring Specification and industry best practices for adaptive streaming. Use this as a reference when configuring your renditions:

Rendition Resolution Video Bitrate Audio Bitrate H.264 Profile Target Audience ~MB/min
1080p 1920 × 1080 4,500 kbps 192 kbps High / L4.0 Broadband (≥ 6 Mbps) ~35 MB
720p 1280 × 720 2,800 kbps 128 kbps Main / L3.1 Good Wi-Fi (≥ 4 Mbps) ~22 MB
480p 854 × 480 1,400 kbps 128 kbps Main / L3.1 Mobile 4G (≥ 2 Mbps) ~12 MB
360p 640 × 360 800 kbps 96 kbps Baseline / L3.0 Mobile 3G (≥ 1 Mbps) ~7 MB
240p 426 × 240 400 kbps 64 kbps Baseline / L3.0 Slow connection (≥ 512 kbps) ~3.5 MB

* Bitrates are for typical 30fps content. For 60fps, increase video bitrate by ~30%. Segment duration of 6 seconds is assumed for MB/min estimates.

Who Uses This HLS Transcoder?

Web Developers & Engineers Quickly prototype HLS adaptive streaming for a new video feature without setting up a media server or paying for a cloud transcoding API. Test HLS.js, Video.js, or Shaka Player integration with real multi-bitrate content.
Independent Content Creators Self-host your video courses, tutorials, or podcasts on your own CDN without paying a monthly SaaS fee for video hosting. Full control over your content and delivery infrastructure.
E-Learning & Educators Publish lecture videos or training content directly to AWS S3 + CloudFront or Cloudflare R2 with adaptive streaming — dramatically reducing buffering for students on slow or mobile connections.
Startups & Small Businesses Add professional-grade adaptive video streaming to your product without a dedicated media team. Generate the HLS package here, deploy to a CDN, and embed with a few lines of HLS.js code.
Privacy-Sensitive Projects Process confidential or proprietary video material without it ever leaving your device. Ideal for legal, medical, corporate internal, or government content where cloud upload is prohibited.
Mobile-First Streaming Including the 360p and 240p renditions ensures smooth playback on weak 3G/4G connections. The ABR ladder allows viewers to start at low quality and automatically upgrade as bandwidth improves.

Full Feature List

5-Level ABR LadderEncode up to 5 renditions simultaneously: 1080p, 720p, 480p, 360p, and 240p. Each rendition is independently configurable.
Standards-Compliant Master ManifestThe generated master.m3u8 includes BANDWIDTH, AVERAGE-BANDWIDTH, RESOLUTION, CODECS, and NAME attributes per the HLS spec (RFC 8216).
Forced Keyframe AlignmentKeyframes are forced at every segment boundary using FFmpeg's force_key_frames expression, ensuring clean segment cuts and reliable ABR switching.
4 Encoding Speed PresetsChoose ultrafast, veryfast, fast, or medium. Ultrafast is 5–10× faster than medium with ~20–30% larger output. Veryfast is recommended for browser encoding.
Custom Bitrates Per RenditionOverride the default video and audio bitrate for any rendition. Set maxrate and bufsize automatically calculated at 110% / 150% of the target bitrate.
ZIP with Correct Directory StructureOutput ZIP places each rendition in its own subdirectory (720p/720p.m3u8, 720p/720p_0001.ts, …) matching the paths in the master manifest.
In-Browser Manifest PreviewExpand and read the raw text of master.m3u8 and each per-rendition playlist before downloading — useful for verifying correctness.
Zero Data TransmissionFFmpeg WASM runs in a Web Worker. Your video file is processed in browser memory only. Close the tab and all data is gone. No server logs, no analytics on your content.

Step-by-Step Guide

1

Upload Your Source Video

Click Choose Video File or drag and drop your file onto the upload zone. Supports MP4, MOV, WebM, AVI, MKV, FLV. The file is read into browser memory — nothing is uploaded to any server.

2

Select Renditions

Renditions at or below your source resolution are pre-selected. Deselect any you don't need. Adjust the video kbps and audio kbps fields to match your CDN cost or quality targets.

3

Configure HLS Settings

Set segment duration (6s recommended for VOD), choose an encoding preset (veryfast = best speed/size balance in browser), and leave HLS version at 3 for widest device compatibility.

4

Start Transcoding

Click Start Transcoding. FFmpeg WASM encodes each rendition in sequence. Per-rendition and overall progress bars update in real time. Estimated time remaining is shown after 5 seconds.

5

Preview & Download ZIP

When complete, review the generated manifests in the expandable preview panels, then click Download ZIP. The ZIP contains master.m3u8 and all per-rendition subdirectories.

6

Deploy to CDN or Server

Extract and upload the ZIP contents to S3, Cloudflare R2, or Nginx. Set Access-Control-Allow-Origin: * on your server. Point HLS.js or Video.js at master.m3u8.

Privacy & Security Guarantees

Zero Upload PolicyYour video file is never sent to any server, API endpoint, or third-party service. All processing happens in your browser's memory using the browser File API.
No Account RequiredThis tool requires no registration, login, email address, or payment. Open the page and it works immediately.
No Cookies Stored on Your VideoWe do not store, log, or analyze your video content. Closing the browser tab erases all data from memory immediately.
Open-Source EngineThe transcoding is done by FFmpeg WASM — an open-source WebAssembly build of FFmpeg auditable by anyone.
Works OfflineOnce the FFmpeg WASM engine has loaded (~30 MB), transcoding works even if you disconnect from the internet — ideal for air-gapped or restricted environments.
No WatermarkOutput video files contain no branding, watermarks, or metadata added by this tool. The HLS segments are exactly what FFmpeg produces from your source.

Frequently Asked Questions

Will my video file be uploaded to a server?
No. Your video file is never uploaded anywhere. It is read into browser memory using the browser's File API and processed entirely by FFmpeg compiled to WebAssembly running in a Web Worker inside your tab. No bytes of your video are ever transmitted over the network. You can verify this by opening the Network tab in browser DevTools — you will see no outbound requests carrying video data.
What video formats are supported as input?
Any format that FFmpeg can decode: MP4 (H.264, H.265/HEVC, AV1), WebM (VP8, VP9), MOV (ProRes, H.264), AVI, MKV, FLV, 3GP, and more. The output is always H.264 video + AAC audio in MPEG-TS segments (.ts) with HLS playlists (.m3u8).
Why is HLS transcoding in the browser slow?
FFmpeg WASM runs in a single browser thread without hardware (GPU) acceleration, which is significantly slower than native FFmpeg. H.264 encoding with libx264 is particularly CPU-intensive. The ultrafast preset is 5–10× faster than medium at the cost of ~20–30% larger file sizes. As a rule of thumb: expect 1–3× the video duration per rendition in the browser. For a 2-minute video with 4 renditions, allow 8–24 minutes total. For production workloads, use native FFmpeg or a cloud transcoding service.
What segment duration should I use for HLS VOD?
6 seconds is Apple's recommended default for Video-on-Demand (VOD) HLS content and is the industry standard. Shorter segments (2–4 seconds) lower ABR switching latency but increase the number of HTTP requests, which can stress the CDN and player. Longer segments (8–10 seconds) reduce request overhead but slow down the initial quality ramp-up. Unless you have a specific requirement, leave the default at 6 seconds.
How do I deploy the downloaded ZIP to AWS S3 + CloudFront?
1) Extract the ZIP. 2) Upload all contents to your S3 bucket (e.g., s3://my-bucket/videos/my-video/). 3) On the S3 bucket CORS configuration, add a rule allowing GET from your domain. 4) Create a CloudFront distribution pointing to the S3 bucket. 5) In your web page, load HLS.js and point it at https://d1234.cloudfront.net/videos/my-video/master.m3u8. The player will auto-select renditions based on viewer bandwidth.
How do I serve HLS with Nginx or Apache?
Extract the ZIP to your web root (e.g., /var/www/html/videos/my-video/). For Nginx, add a CORS header block: add_header Access-Control-Allow-Origin *;. For Apache, add Header set Access-Control-Allow-Origin "*" inside the relevant <Directory> block. Then point HLS.js at https://yourdomain.com/videos/my-video/master.m3u8.
Which HLS players can play the generated output?
The output is a standards-compliant HLS stream and works with: HLS.js (open-source, all modern browsers), Video.js with the videojs-http-streaming plugin, Shaka Player (Google, open-source), JW Player, Bitmovin Player, native Safari on macOS/iOS, Android ExoPlayer, and most Smart TV platforms. HLS is the most widely supported adaptive streaming format in the world.
Can I use the output for commercial or production use?
Yes. This tool generates standard HLS content using the open-source FFmpeg library with libx264. There are no restrictions from this tool on how you use the output. H.264/AVC is covered by MPEG-LA patents, but AVC/H.264 is royalty-free for internet streaming to end users at no charge per the MPEG-LA AVC Patent Portfolio License terms. For paid/subscription streaming services, consult a legal advisor on your specific use case.
What if a rendition fails to encode?
Failed renditions are marked with an error indicator and excluded from the master manifest. All other renditions continue processing normally. The final ZIP will include all successfully encoded renditions. Check the browser console (F12 → Console) for the specific FFmpeg error message — the most common causes are insufficient browser memory for large videos or unsupported codec combinations.
What is the difference between HLS and DASH streaming?
HLS (HTTP Live Streaming) was developed by Apple and uses .m3u8 playlists and .ts segments. It has native support in Safari and iOS, and broad support everywhere else via HLS.js. MPEG-DASH is an ISO standard using .mpd manifests and fragmented MP4 segments — slightly more efficient but requires a JavaScript player everywhere (no native browser support). For broadest compatibility with the least setup effort, HLS is the recommended choice.
How many renditions should I include in my HLS ladder?
For most use cases, 3–4 renditions strike the best balance: 1080p, 720p, 480p, and 360p cover broadband to mobile 4G. Adding 240p is useful if you expect viewers on very slow or intermittent connections (rural mobile, developing markets). Adding 1080p is only worthwhile if your source is full-HD or higher. There's diminishing value beyond 5 renditions for standard streaming — the player can only switch at segment boundaries anyway.
Does this tool work on mobile browsers?
The tool loads and runs on mobile Chrome and Safari, but H.264 transcoding on a mobile CPU is extremely slow — often 10–20× slower than a desktop. For mobile use, we recommend processing short clips (under 1 minute) with a single rendition using the ultrafast preset. For longer videos, use a desktop browser or native FFmpeg.