Play M3U8 & HLS Streams Online in Your Browser
Paste an .m3u8 or HLS stream URL and watch it instantly. Live and on-demand streams, no upload, no install, no watermark. A free in-browser HLS player that works on Chrome, Edge, Firefox and Safari, with optional SRT/VTT subtitles. Nothing on your computer is uploaded — the browser only fetches the stream you paste.
How it works
What is an M3U8 / HLS stream?
M3U8 is the playlist file format used by HLS (HTTP Live Streaming), the adaptive streaming protocol Apple created and most of the web now relies on for live and on-demand video. Instead of one big video file, an .m3u8 file is a small text index that lists many short media segments — usually a few seconds each — plus one or more quality "variants". A player reads the index, then fetches and stitches the segments together in order as you watch. That design is what makes HLS resilient: if your connection slows, the player simply requests smaller segments from a lower-quality variant, so playback keeps going instead of buffering forever.
Because the playlist is just a URL, HLS is perfect for "paste a link and watch" tools. Live events (sports, news, church services, conferences), IP cameras, radio and TV rebroadcasts, and most video-on-demand platforms expose an .m3u8 endpoint. This tool turns that link into a working player without any software install. The same link that fails when opened directly in Chrome will play here, because we supply the HLS engine your browser lacks.
Play M3U8 online
If you have been sent a raw .m3u8 link — by a colleague, a broadcaster, or an API — and it does nothing when you open it, you are not doing anything wrong. Chrome, Edge and Firefox simply do not understand HLS natively, so the link appears broken. Use this page to play M3U8 online by pasting it into the box above. The stream is fetched and played in your tab; nothing is uploaded from your machine and there is no size limit because there is no file to upload in the first place. It is the fastest way to play M3U8 in your browser without installing VLC, IINA or another desktop player.
Play HLS online in your browser
Beyond manual links, this is also a handy HLS player online for testing and previewing your own streams. Developers use it to confirm a stream is valid and CORS-enabled before embedding it; operators use it to sanity-check a live event feed; viewers use it to watch a broadcast their browser would otherwise refuse. Because the engine is hls.js — the same open-source library used by many commercial players — behavior matches what an embedded player would do. To play HLS in your browser at the highest reliability, use a recent version of Chrome, Edge, Firefox or Safari and an https:// link whose server sends cross-origin headers.
Browser-native HLS vs. this online player
Only Safari plays HLS out of the box. The table shows what works natively and what this tool unlocks:
| Browser / source | Plays HLS natively? | With this online player |
|---|---|---|
| Safari on macOS / iOS / iPadOS | Yes | Yes (native + hls.js fallback) |
| Chrome / Edge / Firefox (desktop) | No | Yes — hls.js |
| Chrome on Android | No | Yes — hls.js |
| Plain http (non-TLS) .m3u8 | Mixed content blocked | Use an https link |
| Stream without CORS headers | Fails | Fails (server-side limit) |
| External SRT / VTT subtitles | VTT only, manual | SRT + VTT attached |
| Live + VOD variants, multiple quality | Safari only | All browsers |
CORS and why some streams will not play
HLS playback is governed by the browser's cross-origin policy. When you paste a link hosted on another domain, the browser requires that domain to send Access-Control-Allow-Origin headers on both the playlist and every segment. If it does not, playback is blocked and you will see a network or CORS error — this is a limitation of the stream's own server, not of this player. Public broadcasters, most CDNs and commercial streaming platforms send these headers; some private or misconfigured servers do not. If a stream fails with a CORS message, the only fixes are to use a CORS-enabled mirror, proxy the stream through your own server, or play it from a same-origin location.
A second common gotcha is mixed content: a page served over HTTPS cannot load a stream over plain HTTP. Always use an https:// link. Finally, some "M3U" links that circulate are actually IPTV channel lists pointing at copyrighted or geo-blocked sources; this tool can only play what the network and the source's own rules permit, and we do not host, proxy or cache any stream content.
Supported formats and codecs
hls.js supports the standard HLS feature set: VOD and live playlists, multiple variant streams with automatic quality adaptation, and demuxed or muxed audio. The underlying media codecs depend on the browser, but in practice this means H.264 video with AAC audio plays everywhere, H.265/HEVC plays where the browser supports it (notably Safari), and some browsers can handle VP9 or AV1 inside HLS. Subtitles embedded in the stream as WebVTT or TTML may appear if the source includes them; you can also attach an external .srt or .vtt file for your own captions.
Live streams with rolling windows, event streams and "infinite" 24/7 channels all work, because HLS is designed for exactly that. Seek, pause and resume behave like any other video once enough segments are buffered. If a stream is low-latency (LL-HLS), it will still play, though the library defaults to standard latency for maximum compatibility.
Privacy: what actually happens to the stream
Unlike the local-file tools on this site, an M3U8 player necessarily fetches a remote stream — that is the whole point. What we do not do is upload anything from you. No file on your device is read or sent. The page only requests the single stream address you type, plays it, and forgets it. We keep no copy of the video, add no watermark, and there is no account or tracking tied to what you watch. The only network traffic is the page itself, the one-time hls.js library download, and the stream segments your browser pulls from the source you provided. If the source requires a login, that relationship is between you and the source; we never see your credentials.
Frequently asked questions
Can I play an M3U8 stream online just by pasting a URL?
Yes. Paste a full https://…m3u8 link into the box and press Play. The browser fetches the HLS playlist and segments and plays them with hls.js — nothing is uploaded from your computer and you do not need any software.
Do I need to install anything to play HLS?
No. Everything runs in a current Chrome, Edge, Firefox or Safari tab. hls.js is loaded from a CDN the first time you play a stream, but no install or administrator rights are required.
Why does my browser not play .m3u8 links directly?
Only Safari plays HLS natively. Chrome, Edge and Firefox do not support the HLS container, so a raw .m3u8 link shows nothing. This tool injects an HLS engine (hls.js) that feeds the stream into the standard HTML5 video element.
Why does a stream fail to load with a CORS error?
HLS playback is subject to cross-origin rules. The server hosting the .m3u8 and its segments must send Access-Control-Allow-Origin headers. If it does not, the browser blocks playback. This is a limitation of the stream's server, not the player.
Can I add subtitles to an HLS stream?
Yes. After the stream starts you can attach an external .srt or .vtt subtitle file. It is converted to WebVTT locally and shown as a text track. The subtitle file is processed in your browser and never uploaded.
Is the video I play uploaded or stored anywhere?
No file from your device is uploaded. The page only requests the stream address you type, plays it and forgets it. We keep no copy of the stream and add no watermark. Some streams require a stable internet connection because they are fetched live.
Can I use this M3U8 player on a Mac, Windows or phone?
Yes. It is a web page, so it behaves the same on macOS, Windows, Linux and mobile browsers. For regular playback of MKV, AVI, Blu-ray or 4K files on a Mac, the desktop Total Video Player Pro is considerably faster.
What is the difference between this and the local file player?
The local player opens a video file you have downloaded; this M3U8 player instead streams a remote HLS link in real time. Use the local player for files on your disk and this one for live or on-demand HLS streams you have a URL for.
Troubleshooting: when a stream will not play
Nothing happens after I press Play
Confirm the link is a full https://…m3u8 URL. Links beginning with www. without a scheme, or pointing at a web page instead of a playlist, will not load. Open your browser's network tab while pressing Play: if you see a 404 the URL is wrong, and if you see a CORS error the server is blocking cross-origin access.
The player shows a CORS / network error
This means the source server is not sending cross-origin headers. There is no client-side fix — you need a CORS-enabled mirror, a same-origin proxy you control, or a different source. This is the single most common reason an otherwise-valid HLS link fails in any browser-based player.
Playback starts then stalls or drops
Live and high-bitrate streams depend on your connection. A weak or congested network makes the buffer drain faster than it fills. Lower the quality if the source exposes multiple variants, pause to let it buffer, or switch to a stronger connection. Note that this player does not cache the whole stream; it plays as it arrives.
Video plays but there is no sound
Rare for HLS, but some sources ship audio in a codec the browser will not decode (for example certain AC3 tracks). Try the same stream in Safari, which has broader codec support, or ask the source operator for an AAC audio rendition.
Subtitles do not appear
Choose the subtitle file only after the stream has started, and make sure it is a plain .srt or .vtt. Some players keep subtitles hidden until you enable the text track in the player's own control menu.
When to use a desktop player instead
A browser M3U8 player is ideal for a quick, install-free check: you want to preview a stream someone sent you, verify your own HLS endpoint works, or watch a single broadcast without committing to software. It is not the right tool for a 4K Blu-ray library, downloaded video files, or everyday high-volume viewing. Browser tabs are limited to roughly 4 GB of memory, cannot read Blu-ray discs or local MKV/AVI files, and re-download every stream segment live — which costs bandwidth and depends on the source staying online.
If you regularly watch video on a Mac — MKV, AVI, Blu-ray, 4K HEVC, or local files with embedded and external subtitle tracks — Total Video Player Pro decodes them with hardware acceleration, loads subtitles automatically, handles multiple audio tracks and playlists, and works fully offline. That is exactly what this free tool is here to point you towards: a no-install way to watch a stream today, and a faster desktop home for your whole collection tomorrow.
Need this for real work on your Mac?
Total Video Player Pro for Mac plays MKV, AVI, Blu-ray and 4K HEVC at full speed with automatic subtitles, multi-audio tracks, playlists and styling — no conversion, no waiting, works offline.