Tutorial

What is M3U8?

• LivePlayer Team • 10 min read
M3U8 HLS Streaming Video

M3U8 is a playlist file used with HLS streaming. Apple explains in its HLS documentation that HLS sends audio and video over HTTP and uses playlists to point players to media files. Apple’s overview is here: HTTP Live Streaming.

When people see an M3U8 link for the first time, they often think it is the video file itself. It is not. It is a text file that tells the player where the stream data is and, in many cases, which quality levels are available.

What the name M3U8 means

M3U8 is a form of M3U playlist that uses UTF-8 text encoding. In daily use, most people do not need to care much about the encoding part. The useful thing to know is that an M3U8 file is a playlist, not the video by itself.

How M3U8 is used in HLS

Apple’s example playlist page is helpful here: Example playlists for HTTP Live Streaming. That page shows that one playlist can point to media segments directly, and another playlist can point to multiple stream variants.

In simple terms, the process usually looks like this:

  1. A player requests an M3U8 file.
  2. The M3U8 file lists segment files or other playlists.
  3. The player downloads those media pieces over HTTP.
  4. The player keeps loading the stream as playback continues.

This is why HLS works for both live and on-demand streaming. The player does not need one large video file at the start.

What is inside an M3U8 file

An M3U8 file is plain text. You can open it in a text editor and see lines such as tags, URLs, and stream information.

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=1280000,RESOLUTION=640x360
https://example.com/360p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2560000,RESOLUTION=1280x720
https://example.com/720p/index.m3u8

This kind of playlist points to different quality variants. The player can choose one based on network conditions and device support.

Why websites use M3U8

  • It works well for live streams
  • It supports multiple quality levels
  • It fits normal HTTP delivery
  • It is widely used in browsers, apps, and streaming workflows

Apple’s deployment guide also shows how HLS fits into a normal web delivery setup with playlists, media segments, and a web server or CDN. That page is here: Deploying a Basic HTTP Live Streaming Stream.

Why an M3U8 link may not play

Seeing an M3U8 link does not mean the stream will work everywhere. The hls.js project notes that Safari has built-in HLS support, while other browsers often depend on Media Source support. That means browser behavior can differ.

MDN also has a media formats guide here: Media types and formats for image, audio, and video content. That helps explain why the same stream may behave differently across browsers and devices.

Common reasons a stream fails include:

  • the link is expired
  • the server blocks browser requests
  • the page uses HTTPS but the stream uses HTTP
  • the playlist points to missing segments
  • the browser cannot use the media format in that stream

How to test an M3U8 file

The fastest check is usually to paste the link into an online player and see whether it loads in the browser. That is what LivePlayer is for.

If you want a more detailed browser test, use How to Test HLS Streams in Your Browser. If you only want to know how to open the link, use How to Play M3U8 Files Online.

Where M3U8 shows up in real work

M3U8 links often appear in live event streaming, OTT workflows, internal QA checks, customer support tickets, and player embed pages. Sometimes the user only sees a stream URL in a dashboard and needs to know whether it is working. In that case, understanding what an M3U8 file is makes testing easier.

The short version

An M3U8 file is a playlist for HLS streaming. It tells the player where to find stream data. It is part of the delivery system, not the whole video by itself.

If you want to try one, go back to LivePlayer and paste an M3U8 link into the player.