I had a couple of large IPTV playlists and a Jellyfin server, and I wanted the channels to show up as proper Live TV — with a guide — not a flat M3U dumped into a player. Dispatcharr bridges the gap.
What it does
It ingests M3U playlists and XMLTV guide data, lets you dedupe and organize channels, and exposes an HDHomeRun-style tuner plus an XMLTV guide that Jellyfin consumes natively. It also proxies the streams, so clients hit one stable endpoint.
Behind a VPN
IPTV fetching is best done through a VPN, so I run Dispatcharr sharing a gluetun container's network namespace — every upstream request egresses through the tunnel, while Jellyfin reaches it on the internal network.
The gotchas
- Streams vs Channels. Importing an M3U creates streams; the lineup only shows channels. You generate channels from streams.
- Dedup early. ~2,000 raw streams collapsed to ~550 real channels once I merged duplicate sources into failover groups.
- Free IPTV is flaky. Plenty of channels are just dead upstream — that's the source, not your setup.
End result: live TV with a guide, right inside Jellyfin.




