HLS works in Safari, Chrome 142+ and Edge 142+ on desktop, Chrome for Android 147+, Firefox for Android 150+, Samsung Internet, and Opera Mobile 80+. Learn HLS browser support and quirks.

Prince Dewani
May 1, 2026
HLS, or HTTP Live Streaming, is an adaptive bitrate protocol that Apple developed and the IETF standardized as RFC 8216. It works in Safari, Chrome 142+ and Edge 142+ on desktop, Chrome for Android 147+, Firefox for Android 150+, Samsung Internet, and Opera Mobile 80+, while desktop Firefox and Internet Explorer never added support.
This guide covers what HLS is, the browsers that support it, key features, how to play HLS without native support, use cases, and known issues.
HLS, short for HTTP Live Streaming, is an adaptive bitrate streaming protocol Apple created for delivering audio and video over standard HTTP. The IETF standardized it as RFC 8216, and the protocol uses .m3u8 manifest files that point to short MPEG-TS or fragmented MP4 segments encoded at multiple bitrates.
Safari and every iOS browser support HLS natively across all modern versions. Chrome 142+, Edge 142+, Chrome for Android 147+, Firefox for Android 150+, Samsung Internet, and Opera Mobile 80+ also play HLS through a native demuxer, while desktop Firefox, desktop Opera, and Internet Explorer require hls.js with Media Source Extensions or do not support HLS at all.
Desktop Chrome supports HLS natively from Chrome 142 on Windows, macOS, Linux, and ChromeOS through a Chromium HLS demuxer. Chrome 4 to 141 on desktop did not play .m3u8 URLs without hls.js or a third-party extension. Chrome for Android added native HLS from Chrome 147; earlier Android Chrome relied on the OS media stack on a per-device basis.
Microsoft Edge Legacy 12 to 18 supported HLS through the Windows Media Foundation pipeline. Chromium-based Edge 79 to 141 dropped that path and did not play HLS natively. From Edge 142 on, the browser inherits Chromium's HLS demuxer, so HLS works out of the box on Windows 10 and Windows 11.
Desktop Firefox does not support HLS natively in any version. Firefox for Android added native HLS playback from Firefox 150 and uses the OS media decoder pipeline. To play HLS in desktop Firefox, load hls.js with Media Source Extensions; Firefox supports the MSE 'video/MP4' MIME type from Firefox 42 on.
Safari for macOS supports HLS from Safari 6 on, and Safari for iOS from version 3.2 on. Apple created the protocol, so both desktop and mobile Safari can play HLS through the standard video element with no extra library. Safari is also the only major desktop browser that supports Apple's Low-Latency HLS extension end-to-end.
Opera desktop does not support HLS natively across versions 9 to 131. Opera Mobile added native HLS playback from Opera Mobile 80 on Android, and Opera Mini does not support HLS at all because the browser routes traffic through Opera's compression proxy. For desktop Opera, use hls.js with Media Source Extensions.
Samsung Internet supports HLS natively from version 4 through the current 29, using the Android media framework on Samsung Galaxy devices. The browser also handles Apple's fragmented MP4 segments, so DRM-free HLS streams play in the standard video element without any extra library.
The stock Android Browser supported HLS in versions 3.0 to 4.4.4, then dropped support before the modern Android Browser entry returned to version 147 with native HLS. Most Android handsets now ship Chrome for Android, which has native HLS from Chrome 147 on. Android WebView inherits the same Chromium HLS pipeline.
Internet Explorer 5.5 to 11 never supported HLS natively. Microsoft has retired Internet Explorer, and the browser also lacks Media Source Extensions, so hls.js cannot fill the gap either. Sites that still receive IE traffic must redirect those visitors to Microsoft Edge or fall back to a non-HLS format.
Note: HLS support is splintered across desktop Firefox, older Chromium, Internet Explorer, and Opera. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
HLS combines adaptive bitrate switching, HTTP-only delivery, and standard MPEG containers, which lets the same stream reach desktop browsers, phones, smart TVs, and CDNs without a special server. Six features carry most of the protocol's reach.
Use hls.js, a JavaScript library that parses .m3u8 playlists, transmuxes MPEG-TS to fragmented MP4, and pushes the bytes through Media Source Extensions into a standard video element. The same page can target Safari and Chrome 142+ natively, then fall back to hls.js for desktop Firefox and older Chromium.
// hls.js feature-detect and attach pattern.
// Drop this into a page that loads hls.js from a CDN or your bundler.
const video = document.querySelector("#player");
const streamUrl = "https://example.com/master.m3u8";
if (video.canPlayType("application/vnd.apple.mpegurl")) {
// Safari, Chrome 142+, Edge 142+, iOS, Chrome for Android.
// The browser ships its own HLS demuxer, so set the src directly.
video.src = streamUrl;
} else if (window.Hls && Hls.isSupported()) {
// Desktop Firefox, older Chromium, desktop Opera.
// hls.js parses the playlist, transmuxes MPEG-TS to fMP4, feeds MSE.
const hls = new Hls();
hls.loadSource(streamUrl);
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED, () => {
console.log("HLS manifest parsed, ready for playback");
});
hls.on(Hls.Events.ERROR, (event, data) => {
if (data.fatal) console.warn("HLS fatal error:", data.type, data.details);
});
} else {
console.warn("This browser cannot play HLS, even with hls.js.");
}If the video element fires no progress events, check that the server returns the playlist with the application/vnd.apple.mpegurl MIME type and that the segment responses include CORS headers when the player and the stream sit on different origins.
HLS is the default streaming protocol for most consumer video on the web. The protocol's HTTP-only delivery model makes it easy to cache through any CDN, which is why every major streaming platform ships HLS as a primary or fallback format.
HLS is mature and broadly deployed, but the protocol still has rough edges that affect production playback. Plan for these before you treat HLS as a finished problem.
All HLS version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance