M3U vs M3U8: What Is the Difference?
M3U and M3U8 are text playlist formats. M3U8 uses UTF-8 and is widely used for HLS, while M3U may use other text encodings.
M3U and M3U8 are both text-based playlist formats, not video files. The main historical difference is character encoding: an M3U8 file is an M3U playlist saved as UTF-8, while a traditional M3U file may use other text encodings. In modern streaming, M3U8 has a second, closely related meaning — it is the playlist, or manifest, format used by HTTP Live Streaming (HLS). In every case, neither file normally contains the video itself. It holds references to where the media lives, plus metadata such as channel names, that a player reads to know what to request and play.
What Is an M3U Playlist?
An M3U file is a plain-text playlist. At its simplest it is a list of media locations, one after another, that a media player opens in order. Each entry can point to a local file on the same device or to a remote resource reached over a network, and lines can carry metadata as well as locations. The format began life in the 1990s as a way to store MP3 and other audio playlists, but it is used far more broadly today, including for video and live streams. An M3U file does not always contain IPTV channels — it is a general playlist container, and what it lists depends entirely on who created it.
Extended M3U playlists typically start with a #EXTM3U line and place a #EXTINF line before each entry. An #EXTINF line attaches metadata — such as a display name — to the media reference that follows it. A later, dedicated guide can cover these attributes in detail; here it is enough to know that these #-prefixed lines describe entries rather than being playable themselves.
In an IPTV app, a legitimate service may provide an M3U or M3U8 playlist that references its authorised streams together with metadata describing each entry. Common fields include a channel name, a group or category, a logo reference and an EPG identifier used to match the electronic programme guide. A very small, non-operational example looks like this:
#EXTM3U
#EXTINF:-1 tvg-id="example.1" group-title="News",Example Channel
https://example.invalid/stream.m3u8What Is an M3U8 File?
An M3U8 file is also a text playlist — the “8” refers to UTF-8, the character encoding it uses. Conventionally, the .m3u8 extension signals that the playlist is UTF-8 encoded, which matters when entries include non-English characters. So at the format level, M3U8 is not a fundamentally different kind of file from M3U; it is an M3U playlist saved with a specific, consistent encoding.
There is a second reason .m3u8 is so common today: HTTP Live Streaming. HLS, the streaming method used across many devices, uses .m3u8 playlists as its manifests. Because of this, a .m3u8 link often means you are looking at an HLS stream's playlist rather than a hand-written channel list. Importantly, M3U8 is not a video format and it does not contain the video — it points a player to the media to fetch.
M3U vs M3U8: The Main Differences
The two formats overlap far more than the different extensions suggest. The table below summarises where they typically differ, with one important caveat: not every .m3u file uses a legacy encoding — many are perfectly valid UTF-8 despite the shorter extension.
| Feature | M3U | M3U8 |
|---|---|---|
| Core purpose | Text playlist of media references | Text playlist of media references |
| Text encoding | May use legacy or local text encodings | UTF-8 |
| File extension | .m3u | .m3u8 |
| Unicode support | Depends on the encoding used | Full, via UTF-8 |
| Common modern use | General playlists; some IPTV lists | HLS streams; IPTV lists with international text |
| HLS association | Not specifically | Strongly associated |
The encoding difference matters because UTF-8 can represent a very large range of characters consistently, from accented Latin letters to Arabic script and beyond. For playlists, that keeps channel names, programme names and other international metadata readable rather than turning them into garbled symbols. If a playlist mixes languages or uses accents, UTF-8 — and therefore the .m3u8 convention — is the safer choice.
How M3U8 Is Used in HLS
In HTTP Live Streaming, the .m3u8 playlist is the manifest a player reads to find and play a stream. It helps to think of two conceptual levels.
A master playlist can point to several variant streams, or renditions, of the same content. These variants typically differ by bitrate, resolution or codec, which is what lets a player switch quality automatically as your connection changes — the basis of adaptive streaming.
When a master playlist is used, it can point to one or more media playlists; a media playlist can also be addressed directly, without a master above it. Either way, a media playlist references the media segments, or the resources for them, that the player requests in sequence to play the stream. The manifests describe what to fetch; the actual audio and video arrive as the separate segments they reference. This is why an .m3u8 file stays small and human-readable even for a high-resolution stream — it is a set of instructions, not the media.
Which Format Should You Use?
For most people the answer is simple: use whatever format your legitimate service or application officially provides or supports. If a provider hands you an M3U or M3U8 playlist, use it as given. M3U8 is preferable when UTF-8 compatibility matters — for example, playlists with international channel names — or when the stream itself is delivered over HLS.
One common misconception is that you can convert an M3U file to M3U8 simply by renaming it — changing .m3u to .m3u8. This does not reliably work. The extension alone does not change the file's character encoding, and it will not repair a playlist whose references are wrong or whose text is already broken. If encoding is the problem, the file must actually be re-saved as UTF-8, not merely relabelled. And an extension is only a hint: a file named .m3u8 is not guaranteed to contain valid UTF-8 or even a valid playlist.
Common M3U and M3U8 Problems
When a playlist misbehaves, the format is rarely the whole story. Here are the usual symptoms and their likely causes:
- Garbled channel names can indicate a text-encoding mismatch. The original text needs to be decoded using the correct source encoding and then saved as UTF-8; simply saving already-corrupted characters may not restore the original names.
- The playlist opens but nothing plays — the file loaded, but the media it points to did not. Common causes are inaccessible media URLs, expired or authenticated resources, an unsupported stream format, or a network or service issue.
- The playlist is blank — often an invalid or empty file, a parsing issue, or a login or service problem. Our guide to how to fix a blank IPTV channel list walks through this specific case.
- An M3U8 (HLS) stream buffers — the playlist format itself is rarely the cause. Check your network, the stream's bitrate, the server or service, and whether your player supports the stream.
For the blank-list case, see our dedicated guide on fixing a blank IPTV channel list; for buffering, it is worth confirming your connection meets the recommended IPTV network requirements for the quality you are streaming. Both are linked in the related guides below.
Finally, the formats themselves are neutral. M3U and M3U8 are simply ways to list media; their legality depends on the sources they reference and whether you and your service are authorised to access and distribute that content.