M3U and M3U8 look almost identical: both are text playlists, and both start with #EXTM3U. The difference is partly about text encoding and partly about how the playlist is used. M3U8 is also the playlist format behind HLS, one of the most widely used ways of streaming video over the web. Here is what separates them and when it matters.

The short answer

M3UM3U8
FormatPlain-text playlistPlain-text playlist
Text encodingHistorically system default or US-ASCIIUTF-8
Typical IPTV useA list of channels for a playerA list of channels or an HLS stream playlist
HLS streamingNoYes, HLS playlists use .m3u8

Encoding: why the “8” matters

The “8” in M3U8 refers to UTF-8, the text encoding that can represent characters from almost every language. RFC 8216, the specification for HTTP Live Streaming, states that playlists are UTF-8 text files. Earlier drafts of the specification also distinguished the extensions: files ending in .m3u8 (or served as application/vnd.apple.mpegurl) are UTF-8, while .m3u files were treated as US-ASCII.

In practice, many IPTV playlists named .m3u are UTF-8 anyway, and most modern players cope with both. Problems appear with channel names that contain accents or non-Latin scripts: if they show up as garbled symbols, the player is reading the file with the wrong encoding.

HLS: when M3U8 describes a stream, not a channel list

In HLS, the .m3u8 file is not a list of channels. It describes one stream broken into short segments:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXTINF:6.0,
segment_1001.ts
#EXTINF:6.0,
segment_1002.ts

The player downloads each segment in turn. For live TV, the playlist keeps updating with new segments.

Master playlists and adaptive quality

HLS often uses a master playlist that points to several versions of the same stream at different bitrates and resolutions. The player picks one based on your connection and switches up or down as conditions change. That is adaptive bitrate streaming, and it is why an HLS stream can drop briefly to lower quality instead of buffering. Our guide to what bitrate is explains why higher quality needs more bandwidth.

How this affects IPTV players

You may meet M3U8 in two places:

  1. Your channel list may be delivered as .m3u8 instead of .m3u. Players treat it the same way; it is still a list of #EXTINF entries. See what an M3U playlist is.
  2. Individual channels may be HLS streams whose address ends in .m3u8. Some players and providers let you choose between HLS (.m3u8) and MPEG-TS (.ts) delivery; see the stream-format section of IPTV player settings explained.

Can you rename .m3u to .m3u8?

Renaming does not change the content. If the file is already UTF-8, renaming it to .m3u8 can help a player that decides the encoding from the extension. If it is not UTF-8, re-save it as UTF-8 in a text editor first. Do not rename the stream addresses inside the playlist.

Which should you use?

  • Use whatever your provider gives you; both work in nearly all current players.
  • If channel names look garbled, request or save the playlist as UTF-8 / M3U8.
  • If a channel will not play in one stream format, try the other if your player offers the choice.

Troubleshooting

SymptomLikely cause
Garbled characters in namesEncoding mismatch; use UTF-8 / M3U8
Playlist rejected by a playerPlayer expects a specific extension; check its documentation
A single .m3u8 link plays one channel onlyIt is an HLS stream playlist, not a channel list
Stream starts, then stallsNetwork or source issue; see M3U playlist not loading

Frequently asked questions

Which is better for IPTV, M3U or M3U8?

Neither is better in itself. Use the format your provider supplies; most players accept both. M3U8 avoids character problems when channel names contain non-English letters.

Can VLC open M3U8 files?

Yes. VLC opens both M3U and M3U8 playlists, from a file or a URL, and plays HLS streams.

It is probably an HLS stream playlist for a single channel, which lists video segments rather than channels. A channel list contains many #EXTINF entries with channel names.

Summary

M3U and M3U8 share the same structure. M3U8 is UTF-8 encoded and is also the playlist format used by HLS streaming, where it lists video segments rather than channels. For IPTV, both extensions work in most players; encoding only matters when channel names contain non-English characters.

Sources and further reading

  1. RFC 8216: HTTP Live Streaming
  2. Wikipedia: M3U
  3. Wikipedia: HTTP Live Streaming

Menus, apps and settings change with software updates. If something looks different on your device, check the official help pages from your device maker or app developer.