Why build your own guide at all
Three honest reasons: coverage gaps (your niche channels have no schedule anywhere), accuracy (the only reliable source for a broadcaster's schedule is the broadcaster), and consolidation (you run several providers and want one guide, not three).
The effort is only worth it when the payoff is real — for a family that lives on a dozen channels, a hand-built guide for those twelve beats fighting a 20,000-entry XMLTV.
Treat it as targeted surgery: you are not replacing your provider's EPG; you are patching the holes where it fails. Build only the feed you need, merge it, and serve the union.
WebGrab++: the generation workhorse
WebGrab++ is the standard workhorse of the craft: a config-driven tool with grabber plugins that scrape broadcaster sites and JSON endpoints, normalize the schedule and emit a standard XMLTV file on a schedule.
Its setup is configuration, not code: add a config entry per source site, map channel IDs to your playlist's tvg-id values, set the timezone and let it run. The included guides do the heavy lifting for the major networks.
The tool earns its reputation in the gaps: where a broadcaster has a proper API or feed, the grabber is accurate to the minute; where it scrapes HTML, expect periodic breakage as sites change layout — hence the maintenance rhythm below.
Merging sources into one XMLTV
Once you have two or three feeds — the provider's, your own WebGrab++ output, a community project — the craft becomes merging: one union file where each channel appears once with data from its best source.
A simple merger is a hierarchy: for each channel, prefer the curated source when it has data and fall back to the provider's feed when it does not. De-duplication by channel ID prevents double listings in the guide.
Free merger tools and small scripts both do this well; the engineering discipline is determinism — the same inputs should always produce the same merged output, so your player sees a stable, predictable guide.
Timezone discipline: the silent killer
The classic custom-EPG failure is timezone mismanagement: XMLTV carries UTC timecodes, and any player worth using converts to local time. But a scraper that mislabels local time as UTC shifts every program by hours — the single most common 'my custom guide is broken' report.
Normalize everything to UTC at generation time and let the player convert; resist the urge to embed local offsets in the file. One format rule fixes an entire category of bugs.
A quick verification pass after generation — checking that tonight's prime-time shows land at the expected local hour — catches drift before it reaches the couch.
Serving the merged guide to every player
Your final XMLTV needs a home and a schedule: an always-on machine serves the file over HTTP (a tiny static server or a cron-regenerated file on any web service), and each player points its EPG source at that URL.
Refresh cadence matters: regenerate the guide several times a day to cover live updates, and set each player's EPG refresh to a matching interval so the merged data stays current.
The payoff is the single-source dream: one URL, maintained centrally, consumed by every TV, box and phone — and your custom patches ride along with your provider's feed automatically.
The maintenance rhythm and honesty
Custom EPG is a garden, not a lawn: scraper sites change, broadcasters re-architect, and a working feed can decay without any signal. The honest maintenance contract is a weekly verification glance and a monthly scrape-fix pass.
Log what breaks and how — the repair memory turns a recurring breakage into a ten-minute fix instead of a re-discovery. Most experienced builders keep a changelog of site changes.
And the honesty rule of thumb: build custom EPG only where it pays. For mainstream coverage, a provider with a self-healing pipeline (as we run at IPTVXtream) already does the gardening so you can watch instead.
Frequently asked questions
What generates a custom EPG?
WebGrab++ is the reference tool: config-driven grabbers scrape broadcaster sources and emit standard XMLTV on a schedule.
Can I merge my custom guide with my provider's?
Yes — a hierarchical merger prefers the curated source per channel and falls back to the provider's feed. De-duplicate by channel ID.
Why are my custom programs off by hours?
Classic timezone bug: local-time content labeled as UTC (or vice versa). Normalize everything to UTC at generation and let the player convert.
Is custom EPG worth the effort?
Only where it pays — niche channels, accuracy, consolidation. For mainstream coverage, a provider with a healthy pipeline is the easier answer.
The bottom line
Custom EPG is the deepest lever in the guide game: capture your own schedules with WebGrab++, merge them with the provider's feed, normalize timecodes to UTC and serve one URL to the whole household. It is a garden that pays in accuracy precisely where commercial feeds fail — and a maintenance rhythm is the true cost of admission. If you would rather skip the gardening, message us on WhatsApp at +1 (555) 364-8853 and test our self-healing pipeline on a trial account instead.
Ready to test it yourself?
Start a free trial and judge the quality with your own eyes.
Start Free Trial on WhatsApp