Back to Blog

IPTV EPG Not Showing? Fix tvg-id, XMLTV and Time-Zone Issues

•

TL;DR: A TV guide (EPG) shows up only when three things line up: the player has an XMLTV guide URL, each channel in your playlist carries an ID that also appears in that guide, and the programme times carry the right time-zone offset. Most “no EPG” problems come from a missing guide URL or IDs that do not match. Most “EPG is off by an hour” problems come from a wrong offset in the guide or a wrong time zone on the TV. Check them in that order, and ask your provider for a corrected guide when the problem is in their data.

How an IPTV guide works

An IPTV guide is not part of the video stream. It is a separate file, almost always in XMLTV format, that lists channels and programmes. The player downloads the file, reads it, and then has to work out which guide channel belongs to which playlist channel.

An XMLTV file has two parts:

<tv>
  <channel id="channel1.example">
    <display-name>Example Channel 1</display-name>
  </channel>
  <programme start="20261030180000 +0000" stop="20261030190000 +0000" channel="channel1.example">
    <title>Programme title</title>
    <desc>Programme description.</desc>
  </programme>
</tv>
  • <channel id="..."> declares a guide channel and its human-readable display-name.
  • <programme channel="..."> holds one programme, with start and stop times and the ID of the channel it belongs to.

The guide works only when the player can join that channel ID to a channel in your playlist.

Where the guide URL comes from

M3U playlists: url-tvg and x-tvg-url

An M3U playlist can name its guide in the first line, the #EXTM3U header:

#EXTM3U x-tvg-url="http://example-provider.com/epg.xml.gz"

Some playlists use url-tvg instead of x-tvg-url, and some list several guide URLs separated by commas. Players differ in which of these they read. If the header has no guide URL at all, the player has nothing to download, and you need to add the guide address by hand.

Guide files are often compressed (.xml.gz) because uncompressed XMLTV for a large playlist can be very large.

Xtream Codes: xmltv.php

With an Xtream Codes login, the guide normally comes from the same server:

http://example-provider.com:8080/xmltv.php?username=YOUR_USER&password=YOUR_PASS

Players build this URL from your server, username and password. If the server has no guide configured, this URL returns an empty or nearly empty file, and no player setting can fix that. More on the two formats in M3U vs Xtream Codes: the difference.

How channel matching works

tvg-id in M3U

Each channel line in an M3U file can carry attributes:

#EXTINF:-1 tvg-id="channel1.example" tvg-name="Example Channel 1" tvg-logo="http://example-provider.com/logo.png" group-title="Group A",Example Channel 1
http://example-provider.com/live/12345.ts

tvg-id is the key. It should be exactly the same as the id of a <channel> in the XMLTV file and the channel attribute of its programmes. When tvg-id is missing, many players fall back to tvg-name.

epg_channel_id in Xtream

Xtream servers send the same information as epg_channel_id in the live stream list. If the provider left it empty for some channels, those channels have nothing to match on.

Why matching fails

These are the common causes:

  • Empty IDs. The channel has no tvg-id or epg_channel_id.
  • Placeholder IDs. Every channel in a group has the same dummy ID, or IDs like none or 0.
  • Small differences. Channel1.Example against channel1.example, an extra country suffix, or HD added to one side only.
  • The guide does not cover the channel. The ID is right, but the guide simply has no programmes for it.
  • The guide is out of date. The file loads, but all its programmes have already ended.

Exact-ID matching is the reliable path. Name-based matching helps with the small differences, but it is a best guess and can attach the wrong guide to a similarly named channel.

Time-zone and offset problems

XMLTV times look like 20261030180000 +0000: year, month, day, hour, minute, second, then the offset from UTC. The player converts that to the TV’s local time.

If the guide is consistently off by the same amount, one of these is usually the reason:

  1. The TV’s time zone is wrong. On Google TV, open Settings → System → Date & time and check that automatic time is on and the time zone is right.
  2. The guide uses the wrong offset. The provider writes local times but labels them +0000, or the other way round. Every programme then shifts by the difference.
  3. Daylight saving time. A guide that hard-codes the summer offset is an hour off in winter.

If the TV clock is right and the guide is still shifted, the fix belongs in the guide file. Some players offer a manual time shift as a workaround. Tell the provider anyway, because the shift will be wrong again when the clocks change.

Step-by-step: fix a missing or wrong guide

  1. Confirm a guide URL exists. For M3U, open the playlist on a computer and look at the first line for x-tvg-url or url-tvg. For Xtream, ask the provider whether xmltv.php is enabled for your account.
  2. Open the guide URL in a browser on a computer. A download, or a page full of <programme> entries, means the guide is there. An empty page or an error means the problem is on the server.
  3. Check the dates. Look at a few start values. If they are all in the past, the guide is stale.
  4. Compare IDs. Take one channel that shows no guide. Find its tvg-id in the playlist and search the guide file for the same text. If it is not there, that channel cannot match by ID.
  5. Check the offset. Compare one programme’s start time and offset with the real broadcast time.
  6. Refresh the guide in your player after any change. Most players cache the guide for several hours.

What to ask your provider

Be specific; it gets a faster answer:

  • “Which XMLTV URL should I use with my playlist?"
  • "These channels have an empty or placeholder tvg-id: …"
  • "The guide times are off by N hours. Are they written as UTC?"
  • "The guide has no programmes after [date]. Is it still updated?”

How IPFlix handles the EPG

IPFlix Pro Player is a player for your own playlist. It does not supply guide data, but it tries hard to use what your provider gives you.

  • Finding the guide. For M3U playlists, IPFlix reads the x-tvg-url from the #EXTM3U header and adds it to the playlist automatically. For Xtream logins without a separate guide, it uses the server’s xmltv.php with your login. During setup it offers the playlist’s EPG.
  • Adding a guide by hand. If your playlist uses url-tvg, lists several URLs in one header, or has no header URL at all, add the guide in Settings → EPG Management → Add EPG Source, one URL at a time. Compressed .gz guides are supported.
  • Matching. IPFlix matches in four passes: the exact ID (tvg-id, or tvg-name when the ID is empty, or epg_channel_id for Xtream), then the same ID ignoring upper and lower case, then a normalised channel name, then the guide’s display-name. The normalised name ignores accents, bracketed text, common country prefixes and quality tags such as HD, FHD and 4K, which covers many near-misses.
  • Seeing what matched. EPG Management shows how many programmes were loaded and how many channels matched or did not, so you can tell a missing guide from a matching problem.
  • Refreshing. You can update the guide on demand, use Clear & Refresh to start over, and choose an automatic update interval (12 hours, 24 hours, 48 hours or weekly) or update on app start.
  • Stale guides. If every programme in a guide has already ended, IPFlix reports that the EPG data is outdated instead of quietly showing nothing.
  • Times. IPFlix reads the offset written in each programme’s start and stop time and shows times in the TV’s time zone. There is no manual time-shift setting in version 1.9.2, so a guide with the wrong offset needs fixing at the source.
  • How much it keeps. IPFlix stores programmes from about three hours ago up to three days ahead, which keeps the database small on devices like the Chromecast with Google TV.

In the player, the info bar shows the current and next programme for live channels.

To try it with your own playlist: Install IPFlix Pro Player from Google Play. Setup guides by device:

If you are comparing players for their guide, our honest TiviMate comparison covers where each one is stronger. Subtitle trouble is a separate issue, covered in IPTV subtitles not working on Android TV.

FAQ

Why does the EPG show for some channels but not others?

The guide loaded, but some channels have IDs that are missing, use placeholders, or do not appear in the guide file. Compare those channels’ tvg-id values with the guide, or ask the provider to fill them in.

What is the difference between tvg-id and tvg-name?

tvg-id is a machine ID meant to match the XMLTV channel id. tvg-name is a display name. Players use tvg-id first and often fall back to tvg-name when the ID is empty.

My guide is exactly one hour off. What is wrong?

Usually either the TV’s time zone or daylight saving setting, or a guide that writes local time with the wrong UTC offset. Check the TV first; if it is right, report the offset to your provider.

Can I use a different EPG source than my provider’s?

Yes, if the IDs in that guide match the IDs in your playlist. A third-party guide with different IDs will match poorly by ID, and name matching can only partly make up for that.

Why did my guide disappear after a few days?

Most guides cover a limited number of days and must be refreshed. If the provider stops updating the file, the programmes run out. Refresh the guide; if it stays empty, ask whether it is still maintained.

Last checked: October 2026, IPFlix 1.9.2