How to add a TV guide (EPG) to IPTV
October 3, 2026 · 7 min read
An IPTV playlist tells your app which channels exist, but not what's on them. The schedule comes from a separate file called an EPG, short for electronic program guide.
This page covers where that file comes from, how to add one in Tiny IPTV on Apple TV, and what to do when some channels still show nothing.
What an EPG file is
Nearly every IPTV guide uses a format called XMLTV. It's one big XML file with two parts: a list of channels, each with an ID, and a list of programs, each with a start time, an end time and the ID of the channel it airs on. Guides cover a lot of channels and a lot of hours, so providers usually compress them. That's why guide links often end in .xml.gz.
The guide is a separate file from your playlist. Your app has to work out which guide channel goes with which playlist channel. Most problems with IPTV guides come down to that matching step.
Where to get a guide
From your Xtream Codes account
If you sign in with an Xtream Codes login, the guide comes from the same server and your app can find it on its own. In Tiny IPTV there's nothing to set up beyond turning the guide on. This is one of the bigger reasons to use Xtream Codes instead of an M3U link when you have the choice.
From your M3U playlist
Many playlists name their guide in the very first line of the file:
#EXTM3U url-tvg="https://example.com/guide.xml.gz"
The tag might be url-tvg, x-tvg-url or tvg-url, and it can list more than one guide separated by commas. Tiny IPTV reads all three spellings and uses every guide listed.
From somewhere else
If your playlist doesn't name a guide, check your provider's dashboard or welcome email for an "EPG link" or "XMLTV URL". Many providers list one even when their playlist doesn't. If you're comfortable running a script, the open-source iptv-org/epg project on GitHub can build XMLTV guides for thousands of channels from public listings sites.
Turning on the guide in Tiny IPTV
- Open Settings and turn on TV Guide. It's off by default.
- Wait for the first update. Large guides can take a minute to download and sort through. The Settings page shows progress while it works.
- Once it's done, Settings shows how many of your channels have listings, for example "812 of 940 channels have listings".
From then on, each channel in the grid shows what's on now and how far along it is. While you're watching, the player shows the channel's full schedule. If you'd rather keep the grid clean, turn off Show What's On and the schedule stays in the player only.
To add a guide your playlist doesn't mention:
- In Settings, under TV Guide, open Guide Sources.
- Choose Add Guide and enter the link. Both
.xmland.xml.gzwork.
Your playlist's own guide always goes first. A guide you add fills in channels that the playlist's guide doesn't cover, so adding one won't overwrite listings that already work.
Why some channels have no listings
A channel without listings is a matching problem in almost every case. Tiny IPTV tries two ways to find a channel in the guide.
By ID first. In a playlist, each channel can carry a tvg-id tag. If the guide lists a channel with exactly that ID, they're a match. This is the reliable way, and it's how providers expect their playlist and guide to fit together.
By name second. When the ID is missing or doesn't match, the app compares names. It ignores things like "HD" and "FHD", matches Cyrillic names against their Latin spelling, understands that "BBC One +1" is BBC One an hour later, and won't match a Polish channel to a German one just because they share a name.
A channel still comes up empty when:
- The guide doesn't include it. Guides rarely cover every channel in a big playlist, especially smaller regional and event channels. A second guide that covers that country is the fix.
- The IDs don't line up. The playlist says
tvg-id="bbcone.uk"and the guide saysBBCOne.uk@HD, and the names are too different to match. This one is the provider's to fix, so tell them which channels are affected. - The guide has the channel, but no programs for it. Some guides list channels they have no schedule for. Tiny IPTV treats those as no match, so it can keep looking in your other guides.
Listings at the wrong time
If every program is off by the same number of hours, the channel is probably a timeshift feed that airs the schedule late, and the playlist doesn't say so. Channels with "+1" or "+2" in their name are handled automatically. For the rest, a provider can add tvg-shift="2" to the channel in the playlist, which shifts its listings by two hours.
If every channel is off, check the time zone on your Apple TV in Settings, under General, then Date and Time.
Keeping the guide up to date
Guides usually cover a day or two ahead, so they need refreshing regularly. Tiny IPTV updates its guides every 12 hours. To update right away, for example after adding a new guide, choose Update Guide Now in Settings. The Guide Sources page shows when each guide last updated and how many channels it has, or the error if an update failed.