M3U

**M3U** (_MP3 URL_ or Moving Picture Experts Group Audio Layer 3 Uniform Resource Locator in full) is a computer file format for a multimedia playlist.

## Extended M3U

The M3U file can include comments. They are prefaced by the "#" character. In **extended M3U**, "#" also introduces extended M3U directives which are terminated by a colon ":" if they support parameters.
|Directive|Description|Example|Required|Standard||
| --- | --- | --- | --- | --- | --- |
|`#EXTM3U`|file header, must be the first line of the file|`#EXTM3U`|1×|Yes||
|rowspan="2"|`#EXTINF:`|track information: runtime in seconds and display title of the following resource|`#EXTINF:123,Artist Name – Track Title␤``artist - title.mp3`|No|Yes|
|additional properties as key-value pairs|`#EXTINF:123 logo="cover.jpg",Track Title`|No|IPTV|||
|`#PLAYLIST:`|playlist display title|`#PLAYLIST:Music TV`|1×|IPTV||
|`#EXTGRP:`|begin named grouping|`#EXTGRP:Foreign Channels`|No|IPTV||
|`#EXTALB:`|album information, title in particular|`#EXTALB:Album Title (2009)`|1×|AL, M3A||
|`#EXTART:`|album artist|`#EXTART:Various`|1×|AL, M3A||
|`#EXTGENRE:`|album genre|`#EXTGENRE:Jazz Fusion`|1×|AL||
|`#EXTM3A`|playlist for tracks or chapters of an album in a single file|`#EXTM3A`|1×|M3A||
|`#EXTBYT:`|file size in bytes|`#EXTBYT:34124`|No|M3A||
|`#EXTBIN:`|binary data follows, usually concatenated MP3s|`#EXTBIN:`|No|M3A||
|`#EXTENC:`|text encoding, must be the second line of the file|`#EXTENC: UTF-8`|1×|No||
|`#EXTIMG:`|cover, logo or other image|`#EXTIMG: front cover␤``cover.jpg`|No|No||

## HLS M3U extensions

Apple used the extended M3U format as a base for their HTTP Live Streaming (HLS). It was written in an Independent Submission Stream RFC in 2017 as . Therein, a _master playlist_ references segment playlists which contain URLs for short parts of the media stream. Some tags only apply to the former type and some only to the latter type of playlist. But they all begin with `#EXT-X-`.
|Directive|Example|Description|
| --- | --- | --- |
|`#EXT-X-START:`|`TIME-OFFSET=0`||
|`#EXT-X-INDEPENDENT-SEGMENTS`|colspan="2"|toggle without parameters|
|`#EXT-X-PLAYLIST-TYPE:`|`VOD` or `EVENT`||
|`#EXT-X-TARGETDURATION:`|`10`|in seconds|
|`#EXT-X-VERSION:`|`4`||
|`#EXT-X-MEDIA-SEQUENCE:`|`0`||
|`#EXT-X-MEDIA:`|`NAME="English", TYPE=AUDIO, GROUP-ID="audio-stereo-64", LANGUAGE="en", DEFAULT=YES, AUTOSELECT=YES, URI="english.m3u8"`||
|`#EXT-X-STREAM-INF:`|`BANDWIDTH=1123000, CODECS="avc1.64001f,mp4a.40.2`|parameters have either one combined value or one per stream, separated by commas|
|`#EXT-X-BYTERANGE:`|`1024@256000`||
|`#EXT-X-DISCONTINUITY`|toggle without parameters|The segment represents the start of a new period|
|`#EXT-X-DISCONTINUITY-SEQUENCE:`|`2`|Indicates start of numbering of periods|
|`#EXT-X-GAP:`|toggle without parameters|The segment represents a "spacer" before a new period|
|`#EXT-X-KEY:`|`METHOD=NONE`||
|`#EXT-X-MAP:`|`URI=MediaInitializationSection`||
|`#EXT-X-PROGRAM-DATE-TIME:`|`2010-02-19T14:54:23.031+08:00`|ISO 8601 format|
|`#EXT-X-DATERANGE:`|`ID=foo`||
|`#EXT-X-I-FRAMES-ONLY`|colspan="2"|i-frame toggle without parameters|
|`#EXT-X-SESSION-DATA:`|`DATA-ID=com.example.movie.title`||
|`#EXT-X-SESSION-KEY:`|||
|`#EXT-X-ENDLIST`|colspan="2"|end-of-list signal without parameters|