All posts
6 min readEPGMaster.ai

EPG matching is still stuck in the era of manual TVG-IDs.

If you’ve ever set up an EPG for an IPTV playlist, you’ve done some version of this dance:

  1. Upload your M3U.
  2. Open a giant table of channels with cryptic identifiers like FOXSPORTS1.us and SKYSPORT1.uk.
  3. For each of your 2,000 channels, find the right identifier in a 38,000-row dropdown.
  4. Save.
  5. Realise your provider names their FOX channel USA||FOX SPORT 1 HDand you can’t even tell which row in the dropdown is the right one.

That’s how the entire industry has worked for the last decade. Let’s walk through who does what, and then talk about why it’s so hard to do better.

The current state of EPG tooling

epg.best is the dominant player. ~120,000 users, well-built, popular for a reason. Their workflow: upload your M3U, get a giant table where you manually assign a TVG-ID to every row. They have a substring autocomplete to help — type fox and you get every channel matching fox. But it’s still you, picking, row by row. With 2,000 channels, plan an evening.

iptv-org/epgis the open-source backbone of a lot of the EPG ecosystem. It’s a CLI plus a YAML registry of channels and where to fetch their guides from. Excellent project. Completely impenetrable to a regular user. You need to understand Docker, YAML, channel ID conventions, and how to schedule cron jobs. The community is small because the barrier is high.

xmltv.se and similar regional services hand you XMLTV files for specific countries. Useful if you live in Sweden and watch only Swedish channels. Useless if your provider is global.

EPGShare01 aggregates community-submitted XMLTVs. Great for coverage in the EU and UK. No matching layer at all — you have to know which file to download and which channel IDs to use.

Schedules Direct covers North America beautifully but requires a paid subscription, manual lineup setup, and (until you wire it into something that does the matching) the same manual TVG-ID problem.

Notice what’s missing from every option above: the part where you don’t have to do the matching yourself.

Why matching is actually hard

Provider channel names are a mess. The same channel might appear as:

  • AMC.us (clean)
  • USA: AMC HD (decorated)
  • USA|| AMC ᴴᴰ (decorated with Unicode quality tags)
  • AMC East or AMC@West (region variants)
  • UK|| AMC From The 70s (themed sub-channel that isn’t actually AMC)

You can’t just substring-match AMC— you’ll false-positive on the themed channel. You can’t exact-match the provider name — it doesn’t match anything. You can’t just trust the tvg-id field — providers leave it blank, fill it with garbage, or put the channel name in it.

Real matching needs:

  • Fuzzy similarity (Jaccard token overlap, Levenshtein distance) so USA: AMC HD matches AMC.us.
  • Country awareness. If the provider tags it UK, prefer the UK catalog entry over the US one.
  • Region suffix handling. AMC@East and AMC@West both resolve to AMC.us.
  • Substring bonus + decorator stripping. Strip HD, FHD, 4K, UHD, emoji, pipe delimiters, country prefixes — then match.
  • An alias engine. When a user manually fixes a wrong match, remember it. The next user with the same provider gets it right automatically.
  • Negative caching.When a channel genuinely has no match (a local sports bar feed, a provider’s test channel), don’t keep retrying.

None of this is novel research. It’s standard string-matching with domain-specific tweaks. But it adds up to real engineering — the kind that doesn’t happen if your product is a giant searchable dropdown.

What we built

EPGMaster matches every channel in your playlist automatically, the moment you upload it. We use the catalog from iptv-org and Schedules Direct as our reference, run fuzzy matching with country bias on every provider name, and surface the unmatched channels in a single Unmatchedview where you can fix them in bulk. When you fix one, our alias engine learns — future users with the same channel get the right answer for free.

Result: a 3,000-channel playlist matches in seconds, with typical accuracy in the high 90s. The handful left over you fix in five minutes. Compare that to four hours of type the channel name, scroll, click, save, repeat.

Why this hasn’t happened until now

Honestly, because the matching catalog and the matching engine are two separate hard problems. iptv-org built the catalog. Schedules Direct built another one. Various scrapers built more. Tying them together with a real matching engine is the work, and nobody had the incentive to do it because the dominant EPG service (epg.best) makes its money from the manual workflow.

We don’t. Our whole pitch is that you should never have to look at a TVG-ID dropdown ever again. Start your free 14-day trial and try it.

Try it free for 14 days

14 days of full access. No credit card required. Cancel anytime.

Start Free Trial