FAST

XMLTV EPG Validator

Paste your FAST channel's XMLTV feed and lint it for the problems that get channels dropped from platform guides - missing timezone offsets, schedule gaps, orphaned channel IDs, reversed times, and thin forward depth. Runs entirely in your browser; your schedule never leaves your device.

Fetched in your browser — nothing is proxied through us. Some servers block cross-origin requests (CORS); if a feed opens in a tab but fails here, paste the XML above instead.

Stop hand-checking your guide data.

OTT Engine auto-generates a compliant XMLTV feed from your scheduling pipeline, validates it on every refresh, and aligns SCTE-35 markers with programme boundaries - so your channel never drops out of the guide.

What this validator checks

A FAST channel is invisible without a valid EPG. Platforms like Pluto, Samsung TV Plus, LG Channels, and Roku's live tab ingest the XMLTV feed you publish and use it to build the on-screen guide. These are the checks the validator runs against your feed:

CheckSeverityWhy it matters
Well-formed XML, rooted in <tv>ErrorA malformed feed is rejected outright at ingest
<channel> has id + <display-name>ErrorThe guide needs a name to render the row
Channel <icon> presentWarningGuides show a generic placeholder without one
<programme> has channel, start, stopErrorRequired to place the airing in the grid
Explicit UTC offset on every timestampErrorA missing offset shifts every airing to the wrong slot
stop is after startErrorZero or negative durations break the guide
<programme> has a non-empty <title>ErrorUntitled blocks look broken to viewers
<length> matches the start/stop spanWarningA stated runtime that disagrees with the times is misleading
Channel ids are uniqueErrorDuplicate ids collide in the guide
<rating> carries a <value>, icons have srcWarningEmpty metadata renders blank in the guide
No gaps between consecutive programmesErrorEven a one-minute gap can de-list the channel
No overlapping programmesWarningAmbiguous "what's on now" for the platform
Programme channel IDs are declaredErrorOrphan programmes are silently dropped
Forward depth of at least 7 daysWarningPlatforms stop ingesting thin feeds

XMLTV timestamp format

Every start and stop must use YYYYMMDDHHMMSS followed by a timezone offset - for example 20260418000000 +0000. The offset is the single most-missed field, and omitting it is the most common reason a guide shows every programme at the wrong time.

Frequently Asked Questions

Does my EPG data get uploaded?

No. The validator parses your XMLTV feed entirely in your browser using the built-in DOMParser. Nothing is sent to a server, so you can safely test unreleased schedules.

Can I validate an EPG by URL?

Yes - paste the feed URL and click Fetch & validate. The request is made from your browser, so a feed that blocks cross-origin requests (no Access-Control-Allow-Origin header) can't be read this way; download and paste those instead.

What XMLTV timestamp format is required?

YYYYMMDDHHMMSS followed by an explicit timezone offset, e.g. 20260418000000 +0000. The offset is mandatory - a timestamp without it shifts every airing to the wrong slot in the guide.

How much forward schedule do I need?

Platforms expect 7-14 days of forward schedule at all times. Pluto and Samsung require 14 days; Roku and LG accept 7. Below 7 days the platform may stop ingesting your feed, so the validator warns when forward depth drops under a week.

Why does a one-minute gap matter?

Every second of a 24-hour FAST channel must be covered by a programme entry. Even a one-minute gap can cause a platform to drop the channel from the guide, so the validator flags any gap between consecutive programmes on the same channel.

Related tools

Related reading