How to Add an EPG URL to Your IPTV Player
A playlist gives you channels; an EPG URL gives you the schedule. This guide covers where the URL comes from, where it goes in TiviMate, IPTV Smarters, Kodi, and VLC, and which settings decide whether the guide refreshes correctly.

What an EPG URL Is
An EPG URL is the address of an XMLTV document. The player requests that address, downloads the schedule, and stores it locally. Nothing about the guide streams in real time — the freshness of the schedule depends entirely on how often the URL is downloaded again.
Two things travel separately: the playlist (channels and stream addresses) and the EPG (programme data). A player can load one without the other, which is why channels can play perfectly while the guide stays blank. The join between them is the tvg-id value described in the XMLTV format guide.
Getting a Working URL
Provider-supplied guides are usually listed on the same account page as the M3U link. Look for a field labelled EPG, XMLTV, or Guide URL. It is a different endpoint from the playlist, even when both are generated from the same subscription.
Before you paste anything into an app, test the URL in a browser:
- The page should show XML or download a file — not a login form and not a channel list.
- The first characters should be
<?xmlfollowed by a<tv>element eventually. - A
.gzURL will download a compressed file; that is normal and players decompress it. - If the URL redirects through several domains, try the final address to rule out a redirect the app will not follow.
If the provider does not include a guide, public sources exist. The iptv-org project publishes per-country XMLTV files generated from published schedules, and its channel database also provides the matching IDs. Coverage varies by country, and a public feed will not know about private or regional channels.
TiviMate
Open EPG settings
Settings → EPG → EPG sources → Add source.
Choose the source type
Select the XMLTV option used for a plain URL, then paste the address. If your provider gives Xtream Codes credentials instead, add it under the playlist rather than as a separate guide.
Assign and refresh
Save, then run Update EPG now. The source row should show a timestamp and a programme count once the download finishes.
TiviMate stores the guide per playlist. If you have two playlists, confirm the EPG source is enabled for the one you are looking at; a source added to the wrong playlist produces an empty guide with no error.
IPTV Smarters
In IPTV Smarters Pro the guide is configured per playlist: open the playlist menu, choose EPG, and paste the URL into the XMLTV field. After saving, the app downloads in the background — the guide usually populates after returning to the live TV list. If the field is not visible, the playlist was added in a mode that expects the provider to supply the EPG automatically.
Smarters keeps a local cache. When the guide looks stale after a provider change, clearing the app cache and re-opening the playlist forces a fresh download.
Kodi
Kodi uses the PVR IPTV Simple Client add-on. The EPG URL goes in the add-on configuration, not in Kodi's main settings:
- Add-ons → PVR IPTV Simple Client → Configure.
- Set the M3U playlist path or URL on the playlist tab.
- On the EPG tab, set the EPG URL and choose XMLTV as the format.
- Enable the add-on, then restart Kodi or run Clear data in the PVR settings to force a reload.
Kodi downloads the guide at startup and then on a timer. A very large feed can delay startup; reducing the guide to the regions you actually watch keeps the file small.
VLC
VLC plays M3U playlists but does not provide an EPG view. Pasting an XMLTV URL into VLC will not show a schedule — it will either do nothing or attempt to open the file as media. Use VLC to confirm streams, and a player with guide support such as TiviMate, IPTV Smarters, or Kodi for the schedule itself.
Refresh Settings
Guides are snapshots. Providers publish new schedule data daily, and most feeds cover 5 to 14 days forward. Once a day is sufficient; twice a day is reasonable if you watch channels across several timezones.
- Update interval too short — repeated large downloads slow the app and can hit provider rate limits.
- Update interval too long — the guide runs out of future programmes and shows blank cells.
- No automatic refresh — some apps only update on launch, so a device left running for weeks shows an old schedule.
After changing the interval, run one manual update so you can confirm the download completed rather than waiting for the next scheduled cycle.
When the Guide Stays Empty
Work in this order, because each step eliminates one layer:
- URL returns XML — test in a browser. If it does not, the problem is the address or the account.
- Download completes — check the source timestamp in the app. No timestamp means no download.
- IDs match — compare one channel's
tvg-idwith theidin the XMLTV file. Exact, case-sensitive equality. - Time offset — if programmes appear at the wrong hours, adjust the offset rather than the URL.
- App state — clear the cache or re-add the source. Cached failures survive app updates more often than expected.
The EPG not showing guide covers the app-specific variants of each step, and the EPG pillar guide explains how the whole chain fits together.
Frequently asked questions
Where do I find my EPG URL?
Your IPTV provider usually sends it with the playlist link, often on the same account page or in the welcome email. It ends in .xml or .xml.gz and is separate from the M3U playlist URL. If the provider does not supply one, use a public XMLTV source such as the iptv-org project.
Can I use the same URL for the playlist and the EPG?
No. The playlist URL returns channel entries; the EPG URL returns an XMLTV schedule document. They are different endpoints, even when a provider generates both from the same account. Pasting the playlist URL into the EPG field returns an M3U file that the player cannot parse as a guide.
How often should an IPTV player refresh the EPG?
Once or twice a day is enough for most feeds. Guides usually cover 5 to 14 days and providers publish updates daily. More frequent refreshes mostly re-download a large file and slow down the app on low-power devices.
Why does the EPG URL open in a browser but not load in the app?
The browser may be following redirects or sending different headers. Check that the URL is HTTPS if the app requires it, that it returns the XML content itself rather than a login page, and that it does not depend on a browser session cookie. Some apps also reject URLs with spaces or unescaped characters.
Do I need a separate EPG URL for each playlist?
Only if the playlists cover different channel sets. A single XMLTV file can serve several playlists as long as the tvg-id values in each playlist match channel ids in that file. Adding the same guide twice creates duplicate entries and slower refreshes.
What does 'EPG source added but guide empty' mean?
The download and the matching step are separate. An empty guide after a successful download means the channels have no matching tvg-id, or the feed covers different regions. Verify one channel id against the XMLTV file before changing anything else.
Summary
Add the EPG URL once per playlist, confirm it returns XML, and let the player refresh it daily. If channels play but the guide is empty, the URL is working and the problem is the tvg-id match; if the guide shows wrong hours, the problem is the timestamp offset. Those two checks resolve most EPG setup issues without changing the playlist.
Related Guides
Quick Reactions
Was this guide helpful?
Sources: XMLTV project documentation, Kodi PVR IPTV Simple Client, iptv-org EPG sources