All posts
Education·8 min

By Shamir

What Is EPG? The IPTV TV Guide Explained (XMLTV, Now/Next, and How It All Works)

When you open an IPTV player and see not just a list of channel names but a full grid — "BBC One: News at Ten until 22:30, then Match of the Day" — you're looking at the EPG: the Electronic Program Guide. It's the difference between a player that feels like a stack of URLs and one that feels like a television.

EPG is also one of the most misunderstood parts of IPTV. People assume it comes from the same place as the channels (it doesn't), that it's the player's job to generate it (it isn't), and that a blank guide means the app is broken (usually it isn't). This post is the plain-English explainer — the educational companion to our EPG troubleshooting guide, and a sibling to what is Stalker Portal and M3U vs Xtream vs Stalker.

Screenshot: Tuneline's EPG grid with now/next program blocks

EPG in One Sentence

EPG is a separate data file that lists what's playing on each channel and when, which your player overlays onto your channel list to build the TV guide.

That's the whole concept. The channels are one thing (your M3U playlist or Xtream account). The schedule is a different thing (an EPG file). The player's job is to match them up.

Where the EPG Data Actually Comes From

The standard format for EPG data is XMLTV — an XML file (often gzip-compressed, ending in .xml or .xml.gz) that contains two kinds of entries:

  1. Channel definitions — each channel the guide knows about, with a unique ID like bbc-one.uk or ESPN.us.
  2. Programme entries — for each channel ID, a list of programs with a start time, stop time, title, and usually a description, category, and episode info.

A single programme entry looks roughly like this inside the XML:

<programme start="20260611190000 +0000" stop="20260611210000 +0000" channel="bbc-one.uk">
  <title>FIFA World Cup 2026: Opening Match</title>
  <desc>Live coverage of the tournament opener.</desc>
  <category>Sport</category>
</programme>

Where does this file come from? One of two places, depending on your provider type:

  • Xtream Codes providers publish their own EPG automatically. Your account has a built-in EPG endpoint (the xmltv.php URL), and a good player discovers and fetches it for you without you doing anything. This is the easy case.
  • Plain M3U providers may give you a separate XMLTV URL to paste in, or none at all. If they give you a URL, you paste it into the player once. If they don't, you can use a third-party XMLTV source — but matching it to your channels is harder (more on that below).

The key thing to internalize: the EPG is published by your provider (or a third party), not generated by the player. If your provider doesn't publish guide data, no player on earth can invent it.

How the Player Matches Channels to Their Listings

This is where most EPG confusion lives. The player has two separate datasets — your channel list and the XMLTV guide — and it has to figure out which programme entries belong to which channel. It does this by matching an identifier.

In your M3U playlist, each channel line usually carries a tvg-id attribute:

#EXTINF:-1 tvg-id="bbc-one.uk" tvg-name="BBC One HD" group-title="UK",BBC One HD

The player looks at tvg-id="bbc-one.uk", then searches the XMLTV file for a <channel id="bbc-one.uk"> and all the <programme channel="bbc-one.uk"> entries. When the IDs match, the listings snap onto the channel. When they don't match — or when tvg-id is missing — the channel shows up with no guide data, even though the EPG file is loaded fine and other channels are populated.

That mismatch is the single most common EPG complaint, and it's almost always a data problem at the provider, not a bug in the player:

  • The M3U has tvg-id="bbcone" but the XMLTV uses bbc-one.uk → no match.
  • The M3U has no tvg-id at all → nothing to match on.
  • The provider's M3U and XMLTV are maintained by different people who never agreed on IDs.

Diagram: how tvg-id matches an M3U channel to its XMLTV listings

"Now / Next" vs the Full Grid

EPG data drives two views you'll see in any good player:

  • Now / Next — the compact form. While you're watching a channel, the player shows the current program and what's coming up next, usually with a progress bar showing how far into the current show you are. This is the most-used EPG feature; it's what tells you "you've joined this match at the 60th minute."
  • The Guide / Grid — the full two-dimensional view. Channels down one axis, time across the other, each cell a program block. This is how you browse "what's on tonight" and plan your evening.

Both are built from the same XMLTV data. The grid just shows more of it at once.

Time Zones: Why Your Guide Might Be Off by a Few Hours

A subtle but common issue: XMLTV times include a UTC offset (the +0000 in the example above). Your player converts those to your local time. When the guide shows programs at the wrong time — everything shifted by 1, 5, or 8 hours — it's almost always one of:

  • The provider published times in the wrong offset (e.g., tagged everything +0000 when the schedule is actually UK local time during British Summer Time).
  • Your device's time zone is set incorrectly.
  • The provider's EPG is for a different region than the channels you're watching.

A good player lets you apply a manual EPG time offset per playlist to correct a consistently-shifted guide. If only some channels are shifted, that's the provider mixing region feeds, and a global offset won't fix it cleanly.

How EPG Powers Reminders and Catch-Up

EPG isn't just for browsing. Two features depend on it:

  • Program reminders. Because the guide knows a program starts at 19:00, the player can notify you just before it begins. Set a reminder on a future program in the grid and the player nudges you when it's about to start.
  • Catch-up / time-shift. Provider-side catch-up uses EPG to know the boundaries of each past program, so "rewind to the start of the 18:00 news" works. Without accurate EPG, catch-up can't find program boundaries. See our catch-up TV explainer.

So accurate EPG is load-bearing for more than just the pretty grid — it's the backbone of reminders and rewind.

How Tuneline Handles EPG

In Tuneline, the flow is designed to need as little manual work as possible:

  • Xtream Codes accounts: EPG is auto-discovered and fetched on first sync. You do nothing — open the guide and it's there (assuming the provider publishes it).
  • M3U playlists: if your provider gave you an XMLTV URL, paste it when adding the playlist. Tuneline fetches and caches it, refreshing periodically.
  • Matching: Tuneline matches on tvg-id first, then falls back to fuzzy name matching for channels where the tvg-id is missing but the channel name closely matches an XMLTV channel name. This recovers some guide data that strict-ID-only players would leave blank.
  • Time offset: Settings → EPG → Time Offset lets you nudge a consistently-shifted guide back into alignment per playlist.
  • Refresh: the guide caches locally and refreshes on a schedule so opening the grid is instant rather than waiting on a network fetch every time.

If your guide is blank or partial, the EPG troubleshooting guide walks through the fixes in order.

Frequently Asked Questions

Is EPG the same as the channels?

No. Channels come from your M3U playlist or Xtream account. EPG (the schedule) is a separate XMLTV file. They're matched together by the player. A provider can give you great channels and no EPG, or vice versa.

Why do some of my channels have a guide and others are blank?

Because the blank ones have a tvg-id that doesn't match anything in the XMLTV file (or no tvg-id at all). The EPG is loaded fine — it just has nothing to attach to those specific channels. This is a provider data issue, not a player bug.

Can I add my own EPG source if my provider doesn't have one?

Yes — you can paste a third-party XMLTV URL. The catch is that a generic EPG source uses its own channel IDs, which won't match your provider's tvg-id values, so most channels will stay blank unless the IDs happen to line up. It works best for well-known channels with standardized IDs.

How often does the EPG update?

Providers typically publish a rolling window — often "now plus the next 3–7 days." Players cache it and re-fetch on a schedule (Tuneline refreshes periodically and on manual pull-to-refresh). Past the published window, the grid simply has no data yet.

My whole guide is shifted by a few hours. How do I fix it?

Apply an EPG time offset (Settings → EPG → Time Offset in Tuneline) to shift it back. First confirm your device's time zone is correct. If only some channels are off, the provider is mixing region feeds and a global offset won't fix all of them.

Does EPG use a lot of data?

No. An XMLTV file for a few hundred channels with a week of listings is typically a few MB compressed — trivial compared to a single minute of video. It's the cheapest part of IPTV by far.

Why is the guide blank right when I add a new playlist?

The first EPG fetch happens in the background and can take a few seconds to a minute for large guides. Give it a moment, then pull to refresh. If it's still blank after a minute, see the troubleshooting guide.

What's the difference between EPG and XMLTV?

EPG is the concept (the on-screen program guide). XMLTV is the file format that carries the data. People use the terms loosely — "my EPG" usually means "my XMLTV file." There's also a JSON-based EPG that some Xtream panels serve, but XMLTV is the universal standard.


The Bottom Line

EPG turns a list of channels into a television. It's a separate XMLTV file — published by your provider, not generated by the player — that the player matches to your channels using the tvg-id field, then displays as Now/Next and a full grid. When listings are missing or wrong, the cause is almost always the provider's data (mismatched IDs, missing IDs, wrong time zone), not the app.

Tuneline auto-discovers EPG for Xtream accounts, accepts an XMLTV URL for M3U playlists, matches on tvg-id with a name-based fallback, and lets you correct a shifted guide with a per-playlist time offset — so the guide is as complete as your provider's data allows.

Screenshot: Tuneline's Now/Next overlay with program progress bar

#what is epg#iptv tv guide#xmltv explained#epg iptv#iptv program guide#tvg-id
Back to all posts