M3U8 Extended Tags: Complete HLS Reference
8 min read
Basic Tags
| Tag | Syntax | Description |
|---|---|---|
| #EXTM3U | #EXTM3U | Header; must be first line |
| #EXTINF | #EXTINF:<duration>,<title> | Segment duration |
| #EXT-X-VERSION | #EXT-X-VERSION:<n> | HLS protocol version |
| #EXT-X-TARGETDURATION | #EXT-X-TARGETDURATION:<s> | Max segment duration (seconds) |
| #EXT-X-MEDIA-SEQUENCE | #EXT-X-MEDIA-SEQUENCE:<n> | Sequence number of first segment |
| #EXT-X-ENDLIST | #EXT-X-ENDLIST | No more segments (VOD) |
Stream and Media Tags
#EXT-X-STREAM-INF:BANDWIDTH=1280000,RESOLUTION=720x480,CODECS="avc1.66.30,mp4a.40.2"— variant stream; next line is media playlist URL.#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="stereo",LANGUAGE="en",NAME="English",URI="audio.m3u8"— alternate audio/subtitles.#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=128000,URI="iframe.m3u8"— I-frame playlist for scrubbing.
Live Stream Tags
#EXT-X-PLAYLIST-TYPE:EVENTorVOD— playlist type (omit for pure live).#EXT-X-DISCONTINUITY— break between segments (ads, codec change).#EXT-X-PROGRAM-DATE-TIME:2026-01-01T00:00:00Z— absolute time for a segment.- LL-HLS server-control tags for low latency.
Encryption Tags
#EXT-X-KEY:METHOD=AES-128,URI="https://key.server/key.bin",IV=0x...— encryption method and key location (AES-128, SAMPLE-AES, or NONE).#EXT-X-SESSION-KEY— keys declared in the master playlist early.
Session Data Tags
#EXT-X-SESSION-DATA— metadata in the master playlist.#EXT-X-START:TIME-OFFSET=30— suggested start offset.#EXT-X-DATERANGE— timed events such as ad breaks.
How to Use This Reference
When debugging a stream, open the playlist in a text editor and match tags to this list. Structure overview: format explained. Creating playlists: create M3U8 playlist.
Frequently Asked Questions
What tag must every M3U8 start with?
#EXTM3U
Which tag ends a VOD playlist?
#EXT-X-ENDLIST
How is encryption declared?
#EXT-X-KEY with METHOD and URI.
Where are variants listed?
Master playlist via #EXT-X-STREAM-INF.