Quick answer
The EPG (Electronic Programme Guide) is the schedule the player shows alongside the channels. In IPTV it arrives in a separate file in the XMLTV format, independent of the playlist.
The link between the two runs through an identifier: the tvg-id attribute in the playlist has to match the channel's id attribute in the XMLTV file exactly. If it does not, that channel is left without a schedule even when both files are perfectly correct taken on their own.
With an Xtream Codes portal the problem generally does not arise: channels and EPG arrive from the same API, already matched up.
How playlist and EPG are linked
They are two separate files meeting on one key.
In the playlist, each channel carries an identifier:
#EXTINF:-1 tvg-id="channel.one.it" tvg-name="Channel One",Channel One
https://example.tld/live/channel-one/index.m3u8In the XMLTV file, the same identifier appears as the channel's attribute, and the programmes refer to it:
<channel id="channel.one.it">
<display-name>Channel One</display-name>
</channel>
<programme start="20260904203000 +0100" stop="20260904223000 +0100" channel="channel.one.it">
<title>Programme name</title>
</programme>The player loads both and joins them by comparing tvg-id with channel id. The comparison is exact: capitals, full stops and spaces all count. Channel.One.it and channel.one.it are two different channels.
The four recurring problems
The guide is completely empty
The EPG source is not configured, or the address is not responding. Check first that the player actually has an EPG address set: many clients do not flag it, they simply show an empty guide. If the address is there, open it in a browser: it should return XML, not an error page.
The guide only appears for some channels
This is the most common case and it is nearly always a tvg-id mismatch. The channels that work have matching identifiers; the others do not. Some clients allow a channel to be matched manually against an EPG entry: that is the practical answer when only a few channels are missing a schedule.
The times are out by an hour or two
The XMLTV format includes the time zone in the date (+0100). A shift of one or two hours means the source is omitting it or declaring it wrongly, and the player is reading it as local time. Many clients have an option to correct the offset manually.
The guide shows the wrong programmes
Two channels share the same tvg-id, or the EPG source belongs to another country and the names overlap. You can recognise it because the schedule is internally consistent but belongs to a different broadcaster.
How many days to load
Nearly every client lets you choose how many days of schedule to hold in memory. It affects performance more than it looks: an XMLTV file with weeks of listings for hundreds of channels can run to tens of megabytes, and it has to be parsed at every start-up.
On devices with little memory — sticks, cheap TV boxes — cutting the window to two or three days is often what turns an app that closes on its own into a usable one. The subject connects to the hardware limits described on the pages about the Fire TV Stick and boxes and set-top boxes.
Playlist and portal: two different behaviours
| Aspect | M3U playlist + XMLTV | Xtream Codes portal |
|---|---|---|
| Number of sources | Two, configured separately | One |
| Channel/EPG matching | Down to the user | Handled by the server |
| Refresh | The player re-downloads the XMLTV at intervals | The API responds on request |
| When something does not add up | You check the tvg-id values | The problem is server-side |
If you have the choice and your player supports Xtream Codes, the second route eliminates the entire category of problem described on this page. What each app states it supports is in the comparison table.
Frequently asked questions
Which is the best EPG source for Italy?
If the service you subscribe to supplies one, that is the one: it is aligned to its own playlist by construction. Generic sources nearly always call for work realigning the tvg-id values.
Does the EPG use bandwidth?
Only while it downloads, which happens once a day or at whatever interval you set. It uses nothing during playback.
Can I edit an XMLTV file by hand?
Yes, it is text. Correcting a few identifiers is practical; doing it for a whole list is work that should be automated.
Why does the guide disappear after a few days?
Because the source has not been updated, or the player can no longer download it. Check that the address still responds.
Are the EPG and catch-up the same thing?
No. The EPG describes what is on air; catch-up is the ability to go back to a programme already broadcast, and it requires the server to have kept it.