The M3U and M3U8 format reference
Every part of an M3U or M3U8 playlist explained, from #EXTM3U and #EXTINF to attributes, player-specific lines, paths, encoding and line endings.
Last updated 2 November 2026
M3U started as the playlist format of the Winamp media player. It was never published as a formal standard, so players agree on the basics and differ on the extras. This reference describes what is widely supported and points out where players differ.
The simplest playlist
The simplest M3U file is a list of entries, one per line:
Music/Artist/01-first-song.flac
Music/Artist/02-second-song.flac
https://radio.example.com/jazz
- Each non-empty line that doesn’t start with
#is an entry: a file path or a web address. - Lines that start with
#are comments or directives. Players ignore the ones they don’t understand. - Blank lines are ignored.
Extended M3U
Most playlists today use the extended form, which adds a header and a description line before each entry:
#EXTM3U
#EXTINF:245,Artist – First song
Music/Artist/01-first-song.flac
#EXTINF:-1,Jazz radio
https://radio.example.com/jazz
#EXTM3U
Must be the very first line. It tells the player to read the #EXT… lines. Without it, many players treat the file as a simple list and ignore names and other details.
#EXTINF:<duration>,<title>
Describes the entry on the next line:
- duration: the length in seconds.
-1(or0in some files) is the usual way to say “unknown” or “continuous”, for example for a radio stream; - title: the name the player shows, everything after the first comma.
Attributes
Many players also read key="value" attributes between the duration and the comma:
#EXTINF:-1 tvg-id="jazz.example" tvg-logo="https://example.com/jazz.png" group-title="Radio",Jazz radio
https://radio.example.com/jazz
| Attribute | Common meaning |
|---|---|
tvg-logo |
Address of a logo image for the entry |
group-title |
The group or folder the entry belongs to |
tvg-id |
An identifier used to match the entry with programme-guide data |
tvg-name |
An alternative name used for that matching |
These attributes are a convention, not a standard. Players support different sets, and some ignore them completely. M3U.Click is built to keep every attribute in its original order, including ones it doesn’t recognise, so nothing is lost when you save.
Other directives you may see
| Line | Meaning | Support |
|---|---|---|
#EXTGRP:<name> |
Puts the following entries in a group | Some players; VLC 3 ignores it |
#PLAYLIST:<title> |
A title for the whole playlist | VLC reads it |
#EXTALBUMARTURL:<url> |
Album art for the entry | VLC reads it |
#EXTVLCOPT:<option> |
An option only VLC understands | VLC only |
Players skip lines they don’t understand, so player-specific lines are harmless elsewhere. M3U.Click keeps them exactly as they are, attached to their entry.
Entries: paths and addresses
An entry can be:
- an absolute path, such as
C:\Users\Sam\Music\song.flacon Windows or/home/sam/Music/song.flacon Linux and macOS; - a relative path, such as
Music/song.flac, which players read as relative to the folder that contains the playlist file; - a web address, such as
https://example.com/podcast/episode-42.mp3; - a network path in the form a player understands, such as a shared folder on your network.
Relative paths make a playlist portable: you can move the playlist together with its media folder. Our guide to relative and absolute paths explains how VLC, Kodi and media servers handle them.
Encoding: why M3U8 exists
- An
.m3u8file is UTF-8. The HLS specification (RFC 8216) requires playlists to be UTF-8, and VLC expects.m3u8files to be valid UTF-8. - An
.m3ufile has no fixed encoding. VLC, for example, reads an.m3ufile that isn’t valid UTF-8 as Latin-1, so Arabic, Cyrillic or Chinese names in such a file can display as garbled characters.
Recommendation: save playlists as UTF-8 with the .m3u8 extension, without a byte-order mark (BOM). RFC 8216 forbids a BOM in HLS playlists, and some older players show it as stray characters before #EXTM3U.
Line endings
Lines can end with a line feed (Unix, macOS) or a carriage return plus line feed (Windows); players accept both. Mixing them in one file can confuse simple tools, so M3U.Click keeps the style your file already uses.
M3U8 and HLS streaming
HTTP Live Streaming also uses .m3u8 files, defined in RFC 8216. An HLS playlist describes one stream, cut into short segments, with lines such as #EXT-X-TARGETDURATION and #EXT-X-STREAM-INF. It is not a list of things to choose from. If you have an HLS address, add it as a single entry in your own playlist. M3U.Click is designed to recognise HLS files and treat them as streams rather than as lists to edit.
Media types
When a web server sends a playlist, it labels it with a media type:
application/vnd.apple.mpegurlis registered with IANA for.m3u8and.m3ufiles;audio/mpegurlis also allowed by RFC 8216;audio/x-mpegurlis widely used for.m3ufiles.
If a browser shows a playlist as text instead of downloading it, the server is probably sending a generic text type. Save the page or file and open it in M3U.Click or your player.
Sources
We checked what this guide says about other software against these official sources. Their menus and features can change between versions.