The short history
M3U started as a simple playlist format for music players: a text file with one media location per line. Extended M3U added lines starting with #EXTINF to carry a title and duration for each entry. The original files had no fixed text encoding, which caused garbled names when a list contained accents or non-Latin scripts. M3U8 fixed that by requiring UTF-8.
Apple later adopted the M3U8 format for HTTP Live Streaming (HLS), specified in RFC 8216. That gave .m3u8 a second meaning: the index file of a live or on-demand stream.
Two jobs, one name
| IPTV channel list | HLS stream playlist | |
|---|---|---|
| What it lists | Your channels, each with a name, logo, group and stream address | The short video segments (a few seconds each) that make up one stream |
| Typical size | Hundreds to many thousands of lines | A handful of lines, updated every few seconds for live TV |
| Tags you’ll see | #EXTM3U, #EXTINF, tvg-id, group-title | #EXT-X-TARGETDURATION, #EXT-X-MEDIA-SEQUENCE, #EXT-X-STREAM-INF |
| Where you use it | Added once to your app as your “playlist” | Opened automatically when you play a channel |
| File extension | .m3u or .m3u8 | .m3u8 |
So when a provider says “M3U link”, they mean your channel list. When a stream format setting says “HLS (.m3u8)”, it means how each channel is delivered once you press play.
Does the choice affect playback?
The channel-list extension doesn’t. What does affect playback is the stream format each channel uses: MPEG-TS or HLS. Many apps let you choose, and many providers let you pick it in the link itself. Our guide to HLS vs MPEG-TS explains which to choose, and what’s in an M3U URL shows where the choice sits in the link.
When encoding matters
If channel names show as é or question marks instead of accented letters, the list is being read with the wrong encoding. Fixes, in order:
- Ask your provider for the UTF-8 (.m3u8) version of the link.
- If you use a downloaded file, open it in a text editor and save it with UTF-8 encoding.
- Check that your app has no text-encoding option set to something other than UTF-8.
For how the file is laid out line by line, and what each tag means, see the M3U tags reference.
