Skip to content
Players & Playback

How to Play M3U8 Links in VLC, Chrome, Android and on TV

How to play M3U8 links on any device: VLC, Chrome and Firefox, Safari, Android, iPhone, smart TVs and the command line, plus fixes for links that fail.

How to Play M3U8 Links in VLC, Chrome, Android and on TV
On this page 14 sections

Someone sends you a link that ends in .m3u8 and says “it’s the stream”. You click it and your browser downloads a tiny text file, or shows a page of lines starting with #EXT. Nothing plays. This guide shows how to play M3U8 links on every common device, which tool to use when, and what to do when a link refuses to work.

A quick bit of background first. An M3U8 file is a playlist for HLS streaming. It does not contain video itself; it lists the small video segments a player must fetch. If you want to understand the format line by line, read what is an M3U8 file. For playing one, all you need is a player that speaks HLS.

The fastest option: an online HLS player

If you are on a computer and just want to see whether a stream works, use a web-based player.

  1. Copy the full M3U8 URL.
  2. Open our free HLS player.
  3. Paste the URL and press Play stream.

It runs in your browser, shows every quality level the stream offers and prints a log. When a stream fails, that log usually tells you why within seconds, which a desktop player will not. The one limitation: web players must follow browser security rules, so streams without the right CORS headers are blocked. VLC is the fallback for those.

VLC on Windows, Mac and Linux

VLC is the most dependable desktop option because it is not bound by browser rules.

Windows and Linux: Media → Open Network Stream → paste the URL → Play.

Mac: File → Open Network → paste the URL → Open.

A few VLC tips that save time:

  • Press Ctrl+J (Cmd+I on Mac) during playback to see the codec, resolution and bitrate VLC is actually receiving.
  • If playback stutters, open Tools → Preferences → Input / Codecs and raise the network caching value, for example to 3,000 ms.
  • VLC picks a quality level automatically. To force one, open the master playlist in a text editor, copy a specific rendition’s URL, and play that instead.

Chrome, Edge and Firefox

Desktop Chrome, Edge and Firefox have historically not played HLS on their own. Typing an M3U8 URL into the address bar usually triggers a download. You have three choices:

  1. Use an online HLS player, as above.
  2. Use a site that embeds a player, which is how streaming services do it. They load a library such as hls.js that fetches segments and feeds them to the browser.
  3. Recent Chrome versions have been adding built-in HLS playback. It may play directly on up-to-date desktop Chrome, but behaviour varies by version and platform, so do not rely on it for testing.

Extensions that promise to “play M3U8 in the browser” exist, but check the permissions carefully before installing one. Many ask to read data on every website you visit.

Safari on Mac, iPhone and iPad

Safari plays HLS natively. Paste the M3U8 URL into the address bar and it starts playing in a basic player. This is often the quickest way to check a stream on a phone. If the link works in Safari but not elsewhere, the stream is probably fine and the other player is the issue.

Android phones and tablets

Android’s own browser behaviour varies by manufacturer, so a dedicated player is more reliable:

  • VLC for Android: open the menu, choose Stream, paste the URL.
  • MX Player and similar players: look for a “Network stream” or “Open URL” option.
  • Chrome on Android can often play HLS directly, since Android’s media stack supports it.

If a stream buffers constantly on mobile data, the playlist may only offer high-bitrate renditions. Test on Wi-Fi to confirm, and read our guide to video buffering for the wider causes.

Smart TVs and streaming boxes

This is where it gets inconsistent.

  • Android TV and Google TV: install VLC for Android TV and use its stream option. Some IPTV player apps accept M3U8 URLs as well.
  • Fire TV: VLC is available in the Amazon Appstore.
  • Apple TV: apps such as VLC for tvOS can open network streams.
  • Samsung and LG TVs: built-in browsers sometimes play HLS, sometimes not. A connected streaming stick is usually the easier route.

Only use playlists from services you pay for or streams you are allowed to watch. Free “all channels” M3U lists passed around online are typically unlicensed, and the apps that promote them are a common source of malware and scams.

The command line: ffplay and mpv

Developers often prefer terminal tools because they show clear errors.

ffplay "https://example.com/live/master.m3u8"
mpv "https://example.com/live/master.m3u8"

ffplay comes with FFmpeg and prints codec details and warnings as it runs. mpv is a lightweight player with excellent HLS support; pressing i shows stream statistics. If either plays a stream that fails in a browser, the problem is almost certainly browser-specific, such as CORS or codec support.

Most failures fall into a handful of groups:

The link has expired. Many services use signed URLs valid for minutes or hours. A link copied from a browser’s network tab and opened later often fails with a 403 error.

It needs your login. The playlist or its segments check cookies or tokens that only exist inside the original website or app.

It is DRM-protected. If the playlist contains an #EXT-X-KEY line with a FairPlay or Widevine key format, only the official app or website can play it. That is deliberate, and there is no legitimate workaround. Paste the playlist into the M3U8 analyzer to see which kind of encryption it uses.

The codec is not supported. HEVC or AV1 streams will not play on devices without matching decoders. Check with the codec support checker.

CORS or mixed content blocks it in the browser. The same link may play fine in VLC. Stream owners fix this with the right server headers; our list of HLS playback fixes covers each one.

The playlist is broken. Wrong paths, missing segments or bad target durations all cause failures. The analyzer flags these too.

Which option should you use?

Situation Best tool
Quick check on a computer Online HLS player
Browser blocks the stream VLC
On an iPhone Safari
On Android VLC for Android
On a TV VLC on a streaming stick
Debugging your own stream ffplay or mpv, plus the online player’s log

If you publish the stream

If you are the one sharing an M3U8 link, a few steps make life easier for everyone who opens it: serve it over HTTPS, send CORS headers, include accurate CODECS attributes, and offer at least one low-bitrate rendition. Test it in the HLS player, in Safari and in VLC before you send it out.

Recording or saving a stream you own

A common follow-up question is how to keep a copy. If the stream is yours, or the owner has given you permission, and it is not DRM-protected, FFmpeg can save it without re-encoding:

ffmpeg -i "https://example.com/vod/master.m3u8" -c copy lesson.mp4

The -c copy flag tells FFmpeg to join the segments as they are, so it runs quickly and keeps the original quality. For a live stream, the same command records until you press q. Two cautions. First, respect the rights of whoever owns the content; many services forbid downloading in their terms, and protected streams are protected on purpose. Second, if the saved file has no sound or stutters at the joins, the stream probably mixes audio renditions or has timing gaps, and a re-encode may be needed.

VLC can also record: start playback, then use Playback → Record (or the red button in the advanced controls). It is less precise than FFmpeg but fine for a quick clip.

Playing a local M3U8 file

Sometimes the playlist is on your own computer, for example after exporting HLS from an encoder. Two things matter here.

The segment paths inside the file are usually relative, such as seg001.ts. The player looks for them next to the playlist, so keep the folder intact. If you move only the .m3u8, nothing will play.

Browsers also block pages opened from file:// paths from loading other local files. The simplest way around it is to serve the folder with a tiny local web server and open it through http://localhost:

cd my-hls-folder
python3 -m http.server 8000

Then paste http://localhost:8000/index.m3u8 into the online player or VLC. This mirrors how the stream will behave once it is on a real server, which makes it a good final check before uploading.

A troubleshooting routine that works

When a link will not play, go through these steps in order.

  1. Try it in VLC. If VLC plays it, the stream is fine and the problem is browser-related.
  2. Open the URL in a new browser tab. If you get an error page, a login screen or a 403, the link is expired or private.
  3. Read the playlist in the M3U8 analyzer. Look for encryption lines and unusual codecs.
  4. Check the device with the codec support checker.
  5. If it is your own stream, go through the server-side list in our HLS fixes guide.

Five steps, usually five minutes, and you will know whether the problem is the link, the device or the stream itself.

Summary

To play an M3U8 link, use a player that understands HLS. On a computer, an online HLS player or VLC. On Apple devices, Safari. On Android and TVs, VLC or a trusted media app. If nothing plays, check whether the link has expired, requires a login, uses DRM or relies on an unsupported codec, and use an analyzer to read the playlist before assuming the stream is broken.

Frequently asked questions

What is the easiest way to play an M3U8 link?

Paste it into VLC's Open Network Stream dialog, or into an online HLS player in your browser. Both work for most unprotected streams.

Why does an M3U8 link download a small file instead of playing?

The browser does not know how to play HLS by itself and treats the playlist as a file. Open it in an HLS-capable player instead of the address bar.

Can I play M3U8 on a smart TV?

Yes, through a media player app such as VLC for Android TV, or an IPTV player that accepts M3U or M3U8 playlists. Built-in TV browsers are hit and miss.

Keep reading