The names look like versions of each other, which is why the confusion persists. They are two different things that happen to share a format.
The short answer
- An .m3u file is a playlist in the original encoding.
- An .m3u8 file is the same playlist saved as UTF-8 — and in practice, almost always an HLS stream manifest.
- A channel list you import is an M3U playlist.
- A single live channel you paste into a player is usually an .m3u8 manifest.
What the 8 means
The 8 is UTF-8. The original format predates widespread Unicode support and often broke on non-Latin channel names. Re-encoding as UTF-8 fixed that, and the extension changed with it. So .m3u8 is, strictly, just an .m3u that will not mangle a Cyrillic or Arabic channel name.
Where the meaning drifted
HLS — HTTP Live Streaming — uses playlists as its transport. A live stream is described by a manifest, and that manifest is conventionally named .m3u8. Apple defined it that way, every player followed, and the extension became shorthand for "this is an HLS stream".
That is why a .m3u8 can be two very different files: a list of hundreds of channels, or a rolling window of six-second video segments. The file extension cannot tell you which — only the contents can.
Telling them apart in practice
- Open it in a text editor. #EXTINF with a channel name means a channel list.
- #EXT-X-TARGETDURATION, #EXT-X-MEDIA-SEQUENCE or #EXT-X-STREAM-INF mean a stream manifest.
- A channel list belongs in your player's playlist or M3U URL field.
- A manifest belongs in a video URL field, or a browser player.
Why the wrong one fails
Paste a 900-channel playlist into a single-stream field and the player downloads the list and stops, because there is nothing to play. Paste one channel manifest into a playlist importer and you get an import with a single "channel" that has no name. Neither error says what went wrong, which is why both support inboxes are full of them.