
An EPG (Electronic Program Guide) is the structured metadata layer that transforms a raw IPTV channel list into an interactive, navigable TV guide - showing what is on now, what is coming next, and enabling catch-up TV playback. Without EPG data, IPTV is just a list of text names. With it, IPTV replicates - and often surpasses - the polished interface of a traditional cable set-top box.
What Is an EPG?
An Electronic Program Guide (EPG) is a structured digital database containing television scheduling data, programme synopses, parental ratings, actor metadata, and broadcast timeframes. Within the decentralised architecture of IPTV, the EPG acts as an independent data feed that the client middleware - the video player application - must download, process, and map to the locally configured video playlist.
In traditional cable systems, scheduling metadata is embedded directly in the encrypted broadcast signal and processed by the proprietary set-top box. In IPTV, the video delivery mechanism and the scheduling metadata operate on entirely separate tracks. The video arrives via your broadband connection as an HLS or MPEG-TS stream, while the schedule arrives as a separate XML file from a completely different server. Your IPTV player must intelligently merge both data sources to create the familiar grid-based TV guide interface.
For a practical understanding of how modern IPTV players construct these dynamic scheduling interfaces, see our guide on TiviMate's EPG integration.
How Does the XMLTV Format Work?
While proprietary formats exist for closed-loop systems, the open internet relies almost exclusively on the XMLTV standard[1] - an open, schema-driven XML format that has evolved over two decades into the de facto standard for transmitting television scheduling data across IPTV platforms, Over-The-Top (OTT) streaming providers, and third-party EPG aggregation services.
A valid XMLTV document follows a strict structure. It begins with standard XML encoding declarations, followed by a root container that encapsulates all subsequent metadata. The document must establish the identity of the broadcasting networks before declaring any scheduling events.
| XMLTV Layer | Component | Technical Function |
|---|---|---|
| Declaration | XML header | Declares UTF-8 encoding and references the XMLTV DTD schema for client-side validation |
| Root Element | TV container | Master container for the database, with source tracking attributes |
| Network Definition | Channel elements | Defines TV networks with unique IDs, display names, and logo URLs - must appear before programme elements |
| Event Definition | Programme elements | Individual broadcast entries referencing a channel ID, with start/stop timestamps, title, description, genre, and episode data |
The channel element is the primary mapping key. Every channel requires a unique alphanumeric ID attribute (e.g., id="rte-one.ie"). This string is the anchor point for all subsequent data matching between your IPTV playlist and the EPG file. The channel element also contains a display name (supporting localisation) and an icon URL for the network logo.
The programme elements contain the scheduling detail. Each entry links back to its channel via a matching ID attribute. Timing uses a rigid format - YYYYMMDDHHmmss +HHMM - with the timezone offset being critical for global compatibility. A broadcast starting at 14:30 UTC on 15 November 2026 is encoded as 20261115143000 +0000. The inclusion of the timezone delta allows players in any region to calculate the correct local display time.
| Programme Tag | Metadata Provided | Player Application Use |
|---|---|---|
| Title and Sub-title | Series name and episode title | Displayed prominently on the grid, used for DVR scheduling rules |
| Description | Narrative synopsis | Rendered in the information panel when a programme is selected |
| Category | Genre (News, Sport, Documentary) | Powers the player search engine, allowing genre-based filtering |
| Episode Number | Season and episode identifiers | Groups airings into chronological on-demand folders |
| Credits | Director, actors, presenters | Enables cast-based search queries across live channels |
Why Does a Good EPG Make IPTV Feel Like Cable?
Without an EPG, the IPTV experience is fundamentally limited. The viewer is forced to scroll through an endless, static list of channel names with no context - no indication of what is currently broadcasting, no programme descriptions, no genre filtering, and no ability to see what is coming next. This is the equivalent of having a phone with no contacts app: technically functional, but practically unusable for anything beyond the most basic operation.
When a robust XMLTV file is parsed by the player, the interface transforms into an interactive, time-based matrix. The software executes real-time calculations, comparing the current system clock against programme start and stop timestamps to render live progress bars showing how much of each broadcast has elapsed. Genre and credits data allows the application to dynamically aggregate live feeds into temporary playlists based on user queries - replicating the deep discovery features of premium cable set-top boxes.
Catch-Up TV: The EPG's Most Critical Function
Beyond navigation, the EPG serves as the programmatic foundation for Catch-Up TV (time-shifted viewing). Catch-up functionality relies explicitly on the precision of EPG timestamps to construct playback URLs for previously aired programmes.
When you navigate backward in the electronic guide and select a programme that has already aired, the IPTV player does not request a standard live stream. Instead, it reads a catch-up URL template from the playlist and injects specific EPG variables - typically the UNIX timestamp of the programme start time. The player dynamically constructs a specialised URL containing the channel ID, start time, and duration, then sends this request to the provider's archive servers.
If the EPG data is missing, inaccurate, or improperly offset by an incorrect timezone declaration, the catch-up URL formula fails. The player either requests a segment that does not exist (returning a 404 error) or begins playback at the wrong time. The EPG is not a cosmetic overlay - it is the routing infrastructure for historical video playback.
See Our EPG in Action
Experience a fully populated EPG with 25,000+ channels, live progress bars, and catch-up TV. Free 24-hour trial, no credit card required.
Start Free 24h TrialHow to Set Up Your EPG
Successful EPG integration relies on a string-matching algorithm that bridges two separate files: the M3U playlist (containing video stream URLs) and the XMLTV file (containing scheduling data). The player must link each channel in the playlist to its corresponding entry in the EPG database.
This linkage is executed via the tvg-id attribute. In an M3U playlist, each channel declaration includes a tvg-id value. Upon loading, the player scans the XMLTV file for a channel definition with a matching ID. If an exact 1:1 string match is found, the live stream merges with its scheduling metadata. If the tvg-id is blank or contains errors, the player attempts less reliable fallback matching using the display name - a fragile process where minor variations in spacing, capitalisation, or appended resolution tags cause failure.
Setting Up EPG in TiviMate
TiviMate is widely acknowledged as the most advanced IPTV player for Android TV and FireOS, featuring optimised database handling and multi-playlist architecture. To establish a manual EPG connection:
- Navigate to Settings within TiviMate
- Access the EPG subsection
- Select Add Source and input your XMLTV URL
- Assign the EPG source to the target M3U playlist in playlist properties
- Trigger a manual update to download and parse the XML data
TiviMate distinguishes itself through a cascading priority engine - you can assign multiple XMLTV URLs with ranked priority. If the primary source lacks metadata for a specific channel, the parser automatically queries secondary sources down the hierarchy until a match is confirmed.
For channels where automated matching completely fails, TiviMate provides a manual override: long-press on the orphaned channel, access the assignment tool, search the cached XMLTV database manually, and force a permanent hard-coded link - overriding the automated tvg-id logic.
Setting Up EPG in IPTV Smarters Pro
IPTV Smarters Pro uses a different approach, leaning heavily on the Xtream Codes API rather than static M3U file parsing. When you connect using the API login (Server URL, Username, Password), the application bypasses manual XMLTV configuration entirely - the server handles all metadata synchronisation before data reaches the client device.
If you need to use a raw M3U URL instead, IPTV Smarters provides a secondary configuration path:
- During profile setup, select Load Your Playlist or File/URL
- Enter your M3U URL in the primary field
- Enter your XMLTV EPG URL in the dedicated secondary field
- Navigate to Settings and trigger a manual EPG update
Unlike TiviMate, IPTV Smarters does not support multiple overlapping EPG sources or localised manual mapping when using the M3U method. Maintaining a clean, accurately mapped XMLTV file on the server side is therefore essential.
EPG Not Showing? How to Fix It
A blank TV guide grid - or one populated with "No Information" placards - is the most common failure in IPTV deployments. Because EPG architecture relies on strict external file dependencies, diagnosing the failure requires a systematic approach.
| Problem | Cause | Solution |
|---|---|---|
| "No Information" on all channels | tvg-id values in M3U do not match channel IDs in XMLTV | Use an EPG editor (m3u4u, IPTVBoss) to remap IDs, or manually assign channels in TiviMate |
| Schedule shows wrong times | Timezone offset mismatch between XMLTV and device clock | Set device to network-provided time. Inject tvg-shift="X" in M3U header to manually offset |
| EPG was working but is now blank | Corrupted local cache from interrupted download or memory bloat | Clear app cache via OS settings, then clear EPG data within the IPTV app and force re-download |
| Some channels have EPG, others blank | Partial tvg-id matching - some channels matched, others orphaned | Add a secondary EPG source in TiviMate with lower priority to fill gaps |
| EPG update hangs or fails completely | Unescaped characters (raw & symbols) in XMLTV causing parser crash | Validate the XMLTV URL in a browser. If the file is malformed, use a proxy EPG editor to generate a clean version |
| Catch-up TV shows wrong programme | EPG timestamps are offset, causing the catch-up URL formula to request the wrong archive segment | Fix the timezone offset first. Use tvg-shift to align EPG times with actual broadcast times |
Understanding Timezone Corrections
If EPG data populates correctly but displays events offset by several hours, the issue is a timezone miscalculation. The XMLTV specification enforces UTC offsets, and the player relies on your device clock to calculate the local delta. First, ensure your streaming hardware is locked to network-provided time with the correct geographical timezone.
If the device clock is correct but the schedule remains shifted, the XMLTV file itself contains malformed offset data. This is corrected by injecting the tvg-shift attribute into your M3U file. Declaring tvg-shift="-3" within a channel line instructs the player to roll back the schedule by three hours for that channel. For global correction across all channels, declare the shift in the master M3U header line.
Clearing Corrupted EPG Cache
Uncompressed XMLTV files for global channel lists can decompress into hundreds of megabytes of raw text. Parsing this volume into a local database is taxing on the limited hardware of commercial streaming sticks. Over successive automated update cycles, interrupted downloads or fragmented memory writes can corrupt the cache tables. The application may report successful synchronisation while the interface remains blank.
The solution is a systematic database purge. From your device's application manager, execute a total Clear Cache operation. Then within the IPTV application settings, engage the Clear EPG Data function. This drops the corrupted database tables and forces a clean download, parse, and map cycle from the remote server.
Why Premium IPTV Providers Include EPG Automatically
Premium IPTV providers eliminate EPG configuration complexity entirely by handling metadata synchronisation server-side. When you connect via the industry-standard Xtream Codes API (entering a Server URL, Username, and Password), the application queries the server's EPG endpoint directly - downloading a pre-matched, pre-validated scheduling database that is already perfectly aligned with the channel lineup.
This means no manual XMLTV URL configuration, no tvg-id mapping headaches, and no timezone correction. The provider's infrastructure manages EPG aggregation from multiple broadcast sources, normalises the data into unified structures, and maintains rolling temporal windows - typically 7-14 days forward for DVR scheduling and up to 7 days backward for catch-up TV routing.
Premium EPG systems employ advanced HTTP caching, compression, and delta updates to ensure your player receives instantaneous schedule refreshes rather than continuously downloading massive XML files. This backend optimisation is what separates a professional IPTV deployment from a DIY streaming experiment. For a comprehensive overview of what premium IPTV delivers, see our Best IPTV Ireland guide.
Frequently Asked Questions
Why is my EPG time off by a few hours?
This error results from a timezone offset miscalculation between the XMLTV file and your streaming device clock. The XMLTV standard marks all times with UTC timezone indicators. If your device has the wrong timezone configured, it applies an incorrect shift to the schedule. Ensure your device is set to network-provided time. If the device is correct but the guide remains shifted, inject the tvg-shift attribute into your M3U playlist header to manually offset the schedule by the required number of hours.
Can I use multiple EPG sources at the same time?
Yes, but it depends on your IPTV player. TiviMate supports multiple XMLTV URLs with cascading priority - if the primary source lacks metadata for a channel, it queries the secondary source automatically. IPTV Smarters Pro, when using the Xtream Codes API, typically supports only a single EPG source. For M3U-based setups in Smarters, you are limited to one XMLTV URL per playlist profile.
Are custom EPGs legal?
Yes. An EPG is a text-based database containing schedules, titles, and broadcast times - factual metadata that is not copyrightable in a restrictive manner. Downloading, editing, or creating a custom XMLTV file is classified as a safe technical procedure. Legal risk in the IPTV ecosystem stems entirely from the video streams themselves, not from the scheduling metadata that describes them.
What is the XMLTV format?
XMLTV is an open, schema-driven XML format that serves as the industry standard for transmitting television scheduling data. A valid XMLTV document contains channel definitions (network identity, logo URL, display name) followed by programme elements (start time, end time, title, description, genre, episode number). Modern IPTV players parse these files to render interactive TV guide grids.
How do I fix a completely blank EPG?
A blank guide typically results from one of four issues: (1) the tvg-id in your M3U playlist does not match the channel id in the XMLTV file, (2) the XMLTV URL is unreachable or has expired, (3) the local EPG cache is corrupted and needs clearing via Settings then Clear EPG Data, or (4) the XMLTV file contains syntax errors like unescaped ampersands. Try clearing cache first, then verify the XMLTV URL loads correctly in a web browser.
Does my IPTV provider include EPG automatically?
Most premium IPTV providers include EPG data automatically when you connect via the Xtream Codes API (Server URL, Username, Password). The server handles all metadata synchronisation. If you use a raw M3U playlist URL instead, you may need to add a separate XMLTV URL manually in your player settings. Check with your provider for the correct EPG URL.
Sources
See Our EPG in Action
Experience a fully populated EPG with 25,000+ channels, live progress bars, genre filtering, and 7-day catch-up TV. No credit card required.
Start Free 24h Trial