| M3U | |
|---|---|
| Filename extensions | .m3u, .m3u8 |
| Internet media type | various;see§ Internet media types |
| Initial release | c. 1996 |
| Type of format | Playlist |
| Extended to | HLS playlist |
M3U (MP3URL[1][2]) is a computer file format for a multimediaplaylist. One common use of the M3U file format is creating a single-entry playlist file pointing to astream on the Internet. The created file provides easy access to that stream and is often used in downloads from a website, for emailing, and for listening toInternet radio.
Although originally designed for audio files, such asMP3, it is commonly used to point media players to audio and video sources, including online sources. M3U was originally developed byFraunhofer for use with theirWinPlay3 software,[1][3] but numerous media players and software applications now support the format.
Careless handling of M3U playlists has been the cause ofvulnerabilities in many music players such asVLC media player,[4]iTunes,[5]Winamp,[6] and many others.[7]
There is no formal specification for the M3U format; it is ade facto standard.
An M3U file is aplain text file that specifies the locations of one or more media files. The file is saved with the "m3u"filename extension if the text is encoded in the local system's default non-Unicode encoding (e.g., aWindows codepage), or with the "m3u8" extension if the text isUTF-8 encoded.[8] The "mp3url" extension originally supported by Winplay3 fell out of use.[1]
Each entry carries one specification. The specification can be any one of the following:
Each entry ends with aline break which separates it from the following one. Furthermore, some devices only accept line breaks represented asCR LF, but do not recognize a singleLF.
The M3U file can also include comments, prefaced by the "#" character. Inextended 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 |
#EXTINF: | track information: runtime in seconds, then optional display title of the following resource. For runtime, a length of -1 or 0 may be used when media is a streaming file with no predefined length. | #EXTINF:123,Artist Name – Track Title | No | Yes |
| additional properties as key-value pairs | #EXTINF:123 logo="cover.jpg",Stream 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,[9] M3A[10] |
#EXTART: | album artist | #EXTART:Various | 1× | AL,[9] M3A[10] |
#EXTGENRE: | album genre | #EXTGENRE:Jazz Fusion | 1× | AL[9] |
#EXTM3A | playlist for tracks or chapters of an album in a single file | #EXTM3A | 1× | M3A[10] |
#EXTBYT: | file size in bytes | #EXTBYT:34124 | No | M3A[10] |
#EXTBIN: | binary data follows, usually concatenated MP3s | #EXTBIN: | No | M3A[10] |
#EXTALBUMARTURL: | url of album art image | #EXTALBUMARTURL:https://example.com/a1b2c3d4.jpg | No | Jamendo/VLC[11] |
The use ofUTF-8 encoding is mandatory in M3U playlists with theM3U8 file extension. Thesystem codepage is usually assumed for ".m3u" but this is often UTF-8 as well nowadays so the distinction has mostly been lost in practice.
Apple used the extended M3U format, UTF-8 encoded, as a base for theirHTTP Live Streaming (HLS)[12] which was documented in an Independent Submission Stream RFC in 2017 asRFC 8216.[13] Therein, amaster playlist references segment playlists which usually 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 | Toggle without parameters | |
#EXT-X-PLAYLIST-TYPE: | VOD orEVENT | |
#EXT-X-TARGETDURATION: | 10 | The maximum Media Segment duration in seconds |
#EXT-X-VERSION: | 4 | |
#EXT-X-MEDIA-SEQUENCE: | 0 | The Media Sequence Number of the first Media Segment appearing in the playlist file |
#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 | Indicates encryption method used and decryption key |
#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 | i-frame Toggle without parameters | |
#EXT-X-SESSION-DATA: | DATA-ID=com.example.movie.title | |
#EXT-X-SESSION-KEY: | | |
#EXT-X-ENDLIST | End-of-list signal without parameters | |
With television broadcasting via the internet protocol (IPTV), M3U playlists are frequently used to store the (start) URLs of the streams, so each entry represents a channel. As usual for continuous streams, the length info directly after#EXTINF: is set to-1. Unlike HLS, other structured information is not provided in separate info lines but with a key–value syntax before the mandatory comma following the length.
#EXTINF:-1 tvg-id="123" tvg-name="Channel Name" tvg-logo="http://example.com/logo.png" group-title="Examples", Channel Namertsp://example.com/stream
| Attribute | Example | Description |
|---|---|---|
| Group | group-title="News" | named (thematic) group of channels, i.e. a genre |
tvg-group="Music/Rock" | named group of channels, some players support a hierarchical separator within the value | |
| Logo | tvg-logo="/logos/channel.png" | URL to channel logo image file |
| Name | tvg-name="Channel TV" | usually the same name repeated after the comma, but can differ to matchdisplay-name in XMLTV |
| Number | tvg-chno="12" | channel number |
| CUID | tvg-id="1234" | unique identifier to linkEPG info with (e.g. usingchannel-id inXMLTV) |
| Country | tvg-country="NZ" | origin country of the channel, possibly usingISO 3166 codes |
| Language | tvg-language="English" | main audio language of the channel, possibly usingISO 639 codes |
| Radio | radio=true | boolean value to mark audio-only channels |
The onlyInternet media type registered for M3U and M3U8 isapplication/vnd.apple.mpegurl, registered in 2009 and only referring to the playlist format as used in HLS applications.[14][15]
The current[when?] proposal for the HLS playlist format acknowledges two media types which it treats as equivalent:application/vnd.apple.mpegurl andaudio/mpegurl.[12] Likewise, these are the two types recommended for HLS use by Microsoft.[16]
For non-HLS applications, no media types were standardized or registered with theIANA, but a number of media types are nonetheless associated with the historical and ongoing use of the M3U and M3U8 formats for general playlists:
These types, plusapplication/vnd.apple.mpegurl andapplication/vnd.apple.mpegurl.audio, are supported for HLS applications by (for example) Microsoft'sWindows 10[16] andInternet Explorer 9,[17] and LG'sWebOS.[18]
The following is an example of an M3U playlist file for "Jar of Flies" album by "Alice in Chains" that was created byMp3tag with the following custom option settings:[19][20][21]
"%artist% - %title%""%artist%_%album%_00_Playlist.m3u""%artist%_%album%_$num(%track%,2)_%title%"#EXTM3U #EXTINF:419,Alice in Chains - Rotten Apple Alice in Chains_Jar of Flies_01_Rotten Apple.mp3 #EXTINF:260,Alice in Chains - Nutshell Alice in Chains_Jar of Flies_02_Nutshell.mp3 #EXTINF:255,Alice in Chains - I Stay Away Alice in Chains_Jar of Flies_03_I Stay Away.mp3 #EXTINF:256,Alice in Chains - No Excuses Alice in Chains_Jar of Flies_04_No Excuses.mp3 #EXTINF:157,Alice in Chains - Whale And Wasp Alice in Chains_Jar of Flies_05_Whale And Wasp.mp3 #EXTINF:263,Alice in Chains - Don't Follow Alice in Chains_Jar of Flies_06_Don't Follow.mp3 #EXTINF:245,Alice in Chains - Swing On This Alice in Chains_Jar of Flies_07_Swing On This.mp3
The followingtag editor software allows users to edit theID3 tags inMP3 files, and has support for creating M3U files.
The following media player software supports playing M3U files.
| Programs | Platforms | ||||
|---|---|---|---|---|---|
| Windows | macOS | Linux | Android | Other | |
| Amarok | Yes | No | Yes | No | No |
| Audacious | Yes | No | Yes | No | No |
| Banshee | Yes | Yes | Yes | No | Yes |
| Clementine | Yes | Yes | Yes | No | Yes |
| foobar2000 | Yes | Yes | No | Yes | Yes |
| Kodi | Yes | Yes | Yes | Yes | Yes |
| MOC (Music on Console) | No | No | Yes | No | Yes |
| MPlayer | Yes | Yes | Yes | Yes | Yes |
| mpv | Yes | Yes | Yes | Yes | Yes |
| VLC media player | Yes | Yes | Yes | Yes | Yes |
| iTunes | Yes | Yes | No | No | No |
| make_playlist (mkpl) | Yes | Yes | Yes | No | No |
Arbitrary file overwrite and other abuses through M3U parser and browsers plugins.
MP3 URL + UTF-8 (M3U8)
Includes M3U and M3U8