← Blog.backToBlog

M3U8 Extended Tags: Complete HLS Reference

8 min read

Basic Tags

TagSyntaxDescription
#EXTM3U#EXTM3UHeader; 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-ENDLISTNo 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:EVENT or VOD — 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.