Skip to main content
🇪🇸 Español 🇧🇷 Português 🇩🇪 Deutsch 🇫🇷 Français 🇯🇵 日本語 🇮🇹 Italiano 🇮🇩 Bahasa Indonesia 🇹🇷 Türkçe 🇰🇷 한국어 🇵🇱 Polski 🇳🇱 Nederlands
Image Converter Document Converter Video Converter Audio Converter
Tools Formats (201) Guides Pricing · ⚡ 4,99 € API
Log In
Guide · mp4 → webm

M3U8 and HLS: The Complete Guide to HTTP Live Streaming

✓ ISO/IEC Verified · 6 min · · By Pablo Cirre
WASM + ISO-27001 HYBRID ENGINE
→
📏 Physical Size (CM / MM / Inch → 300 DPI Pixels)
Passport & ID Presets:

📈 Target Minimum File Size (Guaranteed ≥ KB)

Lossless JPEG Q100 + standard COM segment padding for government & exam portals

Tap to choose your file

QUICK INGEST:
Max 25 MB · Free plan · No signup required

Convert to:

Detecting available formats...

Target Max File Size:

Optimize for:
⚡ Instant In-Browser • 100% Private (0s)

Uploading...

⚡ Converted locally in your browser (0ms upload)

READY!

Advertisement
Original preview
Converted preview

🛡️ Verification Audit

  • ✓
  • ✓ sRGB Color Fidelity
  • ✓

Continue with this converted file (0s zero re-upload):

⚡ Install Desktop App for 1-Click Conversions

Batch Conversion Ready!

⚡ Install Desktop App for 1-Click Conversions
Advertisement
🕒 Recent Conversions (60m Session)
Guide (9) +
Advertisement

Frequently Asked Questions

M3U is a simple playlist format for local or remote media files, while M3U8 is the UTF-8 encoded version that forms the foundation of HLS (HTTP Live Streaming). A basic M3U file lists media file paths with optional EXTINF metadata. An HLS M3U8 is much more complex: it can be a master playlist (listing multiple quality variants) or a media playlist (listing short video segments with timing information). HLS M3U8 enables adaptive bitrate streaming, where the player automatically switches quality based on network speed.

AV1 is the most efficient (royalty-free, ~30% smaller than H.265) but encoding is slow. H.265 (HEVC) saves ~30–50% over H.264 and is supported by every modern phone and desktop. H.264 remains the safest baseline for legacy compatibility. Rule of thumb: archives → AV1, daily use → H.265, broadest reach → H.264.

Use FFmpeg with the stream copy option: ffmpeg -i https://example.com/stream/master.m3u8 -c copy -movflags +faststart output.mp4. This downloads all segments and merges them without re-encoding. For content on streaming platforms, yt-dlp is a better choice since it handles authentication, quality selection, and subtitle merging: yt-dlp -f 'best[height<=1080]' https://platform.com/video/xyz. Note that downloading DRM-protected HLS streams may violate terms of service.

CRF (Constant Rate Factor) is the best default for offline files: ffmpeg picks the bitrate frame-by-frame to maintain perceived quality. Two-pass is only better when you must hit an exact final size (DVD targets). Constant bitrate is for streaming with a fixed channel. For "smallest at quality X" always use CRF.

Use FFmpeg with the -f hls flag. For a basic single-quality stream: ffmpeg -i input.mp4 -codec:v libx264 -crf 20 -codec:a aac -b:a 128k -hls_time 10 -hls_list_size 0 -hls_segment_filename 'seg_%03d.ts' output.m3u8. For multi-bitrate adaptive streaming, use FFmpeg's filter_complex to split the video into multiple streams and the -var_stream_map flag to create separate playlists for each quality level.

Common causes: (1) variable framerate source rendered as constant (use <code>-vsync vfr</code> to preserve VFR); (2) different audio sample rates not resampled (add <code>-ar 48000</code>); (3) container limitations (MP4 with variable framerate misbehaves — prefer MKV during editing, encode to MP4 only at the end). Always run <code>ffprobe</code> on both source and output to compare timing.

Safari and iOS/iPadOS have native HLS support — just set the video src to the .m3u8 URL. For Chrome, Firefox, and Edge, use the hls.js JavaScript library: include hls.js from a CDN, check Hls.isSupported(), create a new Hls() instance, call hls.loadSource(m3u8Url) and hls.attachMedia(videoElement). The library handles segment fetching, buffering, and automatic quality switching via the ABR (Adaptive Bitrate) algorithm.

Yes if you only change the container: <code>ffmpeg -i in.mkv -c copy out.mp4</code>. This remuxes the stream without re-encoding, takes seconds even for hours of footage. Limitations: codec must be supported by the target container (e.g. you cannot put H.264 in WebM, only VP8/VP9/AV1). To shrink size you must re-encode.

Professional Workstation Solution
Unlimited Batch Jobs Zero Upload Wait Times Direct Disk-to-Disk I/O

Need to Convert Gigabyte Archives or Mass Folders?

KaijuConverter delivers ultra-fast in-memory conversions for everyday tasks. For multi-gigabyte production workloads without browser bandwidth bottlenecks, explore high-throughput desktop suites.

Zero cloud transfer • Native hardware performance
24-Hour Fast Pass (€4.99 one-time) Up to 1 GB · No subscription

One-time payment with zero recurring commitment: convert files up to 1 GB, OCR, PDF/A, and .ZIP batches for 24 hours.

Instant Stripe Checkout →
7-Day Project Pass (€9.99 one-time) 7 Days · 2 GB · Ad-Free

Full 7 days of unlimited conversions, up to 2 GB per file, 100% ad-free with zero subscription.

Instant Stripe Checkout →
Kaiju Cloud Business Annual (€99/yr) Up to 2 GB + B2B Invoice

High-throughput enterprise pipeline for files up to 2,048 MB, 50-file batches, ISO PDF/A, and priority processing.

Instant Stripe Checkout →
ImageMagick CLI / XnConvert Free • Mass Batch

Convert thousands of camera RAW files (CR3, NEF, ARW) to WebP, AVIF, or TIFF in one pass.

Affinity Photo / Adobe Lightroom Photo Pro

GPU-accelerated RAW development with end-to-end 16-bit ICC color profile management.

Advertisement
We use cookies and similar technologies to personalise content and ads, and to analyse traffic. Learn more about cookies.