EPG mapper: match M3U channels to XMLTV tvg-id

Open your M3U playlist and an XMLTV guide. The mapper suggests a guide channel for every live channel without a working tvg-id, with a confidence score. Accept or reject each one, then download the playlist with the tvg-ids filled in. Free, no sign-up.

Runs entirely in your browser. The playlist and guide are never uploaded, and existing tvg-ids are kept unless you choose otherwise.

You can also drop both files here.

Why channels have no TV guide

A player links a live channel to its programmes through one value: the playlist's tvg-id must equal the id of a <channel> in the XMLTV guide. If the tvg-id is empty, misspelt, or written for a different guide, the channel shows no programmes, even when the guide covers it under another id. The M3U checker tells you how many channels match; this tool fixes the ones that do not.

How the matching works

Both sides are cleaned the same way before they are compared: lower case, accents removed, punctuation turned into spaces, and quality tags (HD, FHD, UHD, 4K, HEVC, 1080p…) dropped. Number words become digits, so "Example One" and "Example 1" compare equal, and "+1" is kept so a timeshift channel is not mixed up with the main one. A short country prefix such as UK:, |DE| or [FR] is read as a hint and compared with the guide id's country ending, like .uk.

Each playlist name is then scored against the guide's display names and its ids (camel-case ids such as ExampleOne.uk are read as names too). The score mixes how many letter pairs the two names share with how many whole words they share. Names that are the same apart from spacing score 100. Different numbers ("Sport 1" against "Sport 2") cut the score, a matching country adds 3 and a different country takes away 15. The best guide channel wins if it scores 50 or more.

Naming differences it handles

Playlist nameGuide channelWhy it matches
UK: Example News HDExampleNews.ukPrefix read as country, HD dropped, id read as a name
|DE| Beispiel Eins FHDBeispiel Eins (BeispielEins.de)Prefix and quality tag ignored
Exemple TéléExemple TeleAccents ignored
Example Movies +1Example Movies +1"+1" kept, so it does not match the main channel
Example Sport 2Example Sport 1Matches only with a low score: the numbers differ

What it cannot know is meaning. A channel renamed by its owner, a regional edition with the same name, or a provider's own label such as "Movies 4" can score well and still be wrong, or score badly and be right. That is why nothing below the automatic level is written until you accept it, and why the score is shown for every row: start with the highest scores, accept them in bulk, then work down the list. Large playlists often repeat the same channel in several groups; the mapper scores each distinct name once and reuses the result, so 60,000 live channels take well under a second against a guide of ten thousand channels. The guide is read in pieces with a progress bar, and only its channel list is kept in memory, so guides of 100 MB and more are fine.

Reviewing the suggestions

  • Needs review lists suggestions that are not accepted yet. Tick the ones that are right, or filter and use "Accept shown".
  • Accepted are the ones that will be written. Suggestions at or above the automatic level start here; untick any that are wrong.
  • tvg-id not in the guide are channels that already have an id the guide does not know. They are only changed when "Allow replacing" is ticked.
  • Already matched channels are never changed.

The download is your playlist with only the accepted tvg-ids written in: the header (with url-tvg), every other attribute, the option lines and the order are kept. Films and series episodes are copied as they are. Check the result with the EPG viewer by opening the new playlist next to the guide, or read how to fix an empty TV guide for the other causes.

Questions

Are my playlist and guide uploaded anywhere?
No. Both files are read and matched by JavaScript in your browser, and the fixed playlist is made there too. Nothing from them is sent to IPFlix or anyone else.
Will it change tvg-ids that are already there?
Not unless you tick "Allow replacing tvg-ids that are already set". Without it, channels that have a tvg-id keep it, even when the guide does not know that id, and only channels with no tvg-id get one. Channels whose tvg-id is already in the guide are never touched.
What does the confidence score mean?
It is how closely the channel name matches the guide channel name, from 0 to 100, after ignoring case, accents, spacing and tags such as HD or FHD. 100 means the names are the same; a matching country prefix adds a little and a different one takes points off. Suggestions under 50 are not shown.
Which suggestions should I check by hand?
Anything under about 90, regional or +1 channels, and channels whose names are only a number or a short word. Two channels can share a name in different countries, so the country hint matters: "UK: Example News" should map to an id ending in .uk, not .us.
Does it match movies and series?
No. TV guides only cover live channels, so films and episodes are left exactly as they are.
Does this fix the guide in my player?
Only if your player uses the edited playlist file. Players that import from your provider's link will read the provider's tvg-ids again; in that case, send the provider the list of corrections.

Watch it on your TV

IPFlix Pro Player for Android TV, Google TV and Fire TV offers your playlist's EPG during setup and shows it in a TV Guide grid and a now/next info bar.

  1. Install IPFlix on the TV and open Add Playlist.
  2. Scan the QR code on the TV with your phone.
  3. On the phone, paste your provider's M3U link or type the Xtream login.

7-day free trial with everything unlocked, counted from your first playlist. IPFlix does not provide channels or content.