Skip to main content
M3U is the universal playlist format supported by virtually every IPTV provider and media player. This guide shows you how to load M3U playlists, attach EPG sources and publish processed playlists to clients.

Step 1: Define an M3U input

1

Add the input to source.yml

source.yml
Use file:// to load a local playlist file:
source.yml
2

Create a source and target

Wire the input to a target and set the output type to m3u:
source.yml
3

Configure api-proxy.yml

api-proxy.yml
The M3U playlist is then available at:
Or using the REST-friendly alias:

EPG (XMLTV) integration

Attach one or more EPG sources to the input using the epg block:
source.yml
url: auto tells tuliprox to use the EPG URL embedded in the M3U playlist itself, if present. Clients retrieve the EPG at:

M3U output options

Example:

Batch M3U sources

Use m3u_batch to load many provider URLs from a CSV file:
source.yml
The CSV file must have these columns: Alternatively, use an m3u input with a batch:// URL — tuliprox treats it the same as m3u_batch.

Common issues

Verify the URL is reachable from the tuliprox host:
For file:// URLs confirm the path exists and tuliprox has read permission.
EPG matching depends on the tvg-id attribute in the M3U entries matching channel IDs in the XMLTV data. Enable smart_match with fuzzy_matching to handle minor name differences.
M3U attribute parsing reads group-title and tvg-name from #EXTINF lines. Check the raw playlist to confirm those attributes are present. Use the rename and mapping features to normalise names after import.
For very large playlists consider enabling disk_based_processing: true in config.yml to reduce peak memory usage during updates.