Skip to content
IPTV Subscription 8K - 8K TV Subscription

M3U playlists

M3U tags reference: tvg-id, tvg-logo, group-title and more

An IPTV playlist is a plain text file, and every line means something. The two core tags, #EXTM3U and #EXTINF, come from the extended M3U format that HLS also uses. IPTV players add attributes on top: tvg-id to match the TV guide, tvg-logo for logos, group-title for categories, and tags for catch-up and time shifts. Here’s what each one does, with examples you can copy.

Updated · 2 min read

Also available in Dansk · Norsk · Svenska

The shape of a playlist

#EXTM3U x-tvg-url="http://example.com/epg.xml"
#EXTINF:-1 tvg-id="news.example" tvg-name="Example News" tvg-logo="http://example.com/news.png" group-title="News",Example News HD
http://example.com/live/user/pass/1001.ts
#EXTINF:-1 tvg-id="sport1.example" tvg-logo="http://example.com/sport1.png" group-title="Sport",Example Sport 1
http://example.com/live/user/pass/1002.ts
  • Line 1: the #EXTM3U header, with optional playlist-wide attributes.
  • Then, for each channel, two lines: an #EXTINF line describing it, and the stream address on the next line.

The two core tags

TagFormatWhat it means
#EXTM3U#EXTM3UMarks the file as an extended M3U playlist. The HLS specification says it must be the first line.
#EXTINF#EXTINF:<duration>,<title>Describes the entry that follows. The text after the comma is the name shown in the channel list.

The duration is in seconds. Live IPTV channels have no fixed length, so playlists use -1. Attributes such as tvg-id sit between the duration and the comma.

Header attributes

Placed on the #EXTM3U line, these apply to the whole playlist:

AttributeWhat it does
x-tvg-urlThe address of the XMLTV guide. Kodi’s IPTV Simple client uses it if no guide address is set in the add-on’s settings. Many playlists use url-tvg for the same job, so players differ in which they read.
tvg-shiftA time shift in hours for the guide, used for every channel that doesn’t set its own
catchup-correctionA time correction for catch-up requests, used for every channel that doesn’t set its own

Channel attributes

Placed on each #EXTINF line. The descriptions follow Kodi’s IPTV Simple client documentation, a detailed public reference:

AttributeWhat it does
tvg-idUnique identifier that maps the channel to its listings in the XMLTV guide
tvg-nameThe channel’s name in the XMLTV guide, if it differs from the display name
tvg-logoAddress of the channel’s logo image
tvg-chnoThe channel number to use
tvg-shiftA time-zone shift in hours for this channel’s guide entries
group-titleThe group or groups the channel belongs to, separated by semicolons
radioSet to true for a radio station
catchupCatch-up mode, such as default or append
catchup-daysHow many days back catch-up is available
catchup-sourceThe catch-up address, or the part added to the channel address, with time placeholders
catchup-correctionA time correction for this channel’s catch-up requests

Other directives you may see

  • #EXTGRP: assigns groups to every channel after it, until an empty #EXTGRP line.
  • #EXTVLCOPT: passes a VLC-style option. Kodi’s IPTV Simple client turns http-user-agent and http-referrer options into request headers. See IPTV user agent.
  • #KODIPROP: passes a property to Kodi, one per line.

Getting the details right

  • Quote attribute values with straight double quotes: group-title="News".
  • Keep each channel to two lines. A missing stream address or a stray blank line can shift every channel after it.
  • Save as UTF-8. The HLS specification requires playlists to be UTF-8 without a byte order mark; following that avoids broken accents in channel names. See M3U vs M3U8.
  • Match tvg-id character for character to the id of the channel in the guide; don’t rely on a player ignoring differences in capitals or spaces. See XMLTV explained and EPG not available for this channel.

To check a playlist’s structure in your browser, use our M3U playlist checker. To change groups and channel order safely, see how to edit an IPTV playlist.

FAQ

M3U tag questions

What does tvg-id do in an M3U playlist?

It links the channel to its listings in the XMLTV guide. Kodi’s IPTV Simple client describes it as a unique identifier used to map the channel to the EPG data. If the tvg-id doesn’t match an id in the guide, that channel shows no programmes.

What does -1 mean after

In the extended M3U format, the number after #EXTINF is a duration in seconds. IPTV playlists use -1 for live channels, which have no fixed length.

Do all IPTV players read every tag?

No. Players support different sets of tags. The ones that matter most are the channel name, tvg-id, tvg-logo and group-title; catch-up and provider tags work only in players that support them.

Sources

Facts on this page were checked against these sources. Details were correct when checked; apps and devices change, so we review this page regularly.

  1. RFC 8216: HTTP Live Streaming (sections 4.1, 4.3.1.1 and 4.3.2.1), IETF (2017-08)
  2. IPTV Simple PVR Client (pvr.iptvsimple) README, Kodi PVR (GitHub) (2026-10-02)

Start watching on your own screen

Plans from £5.83 a month on the 12-month plan, no contract and no auto-renewal. Test it first with a 24-hour free trial.