Threadfin

M3U proxy that emulates an HDHomeRun tuner for IPTV

Media Servers ★ 1.7k stars Easy setup MIT

Threadfin is an M3U proxy and IPTV manager that emulates an HDHomeRun device so live TV works in Plex, Jellyfin, and Emby. It filters channels, maps EPG data, and buffers streams for reliability.

Key features

  • HDHomeRun emulation
  • M3U and XMLTV management
  • Channel filtering
  • Stream buffering

Pros & cons

Strengths

  • Simple lightweight binary
  • Good IPTV integration

Trade-offs

  • Requires an IPTV source
  • Not a full media server

Threadfin replaces

Last reviewed Sep 13, 2026 · 756 words

Plex, Jellyfin and Emby will all record live television, but only from a tuner they recognise, and an M3U playlist from an IPTV provider is not one. Threadfin sits between the two and lies convincingly. It reads your playlist and XMLTV guide, presents itself on the LAN as an HDHomeRun with however many tuners you tell it to claim, and the media server takes it from there: guide grid, recordings, the lot. It is a single Go binary that idles in a few dozen megabytes of RAM, and it is the maintained fork of xTeVe, which is where most of its 1,713 stars came from.

HDHomeRun emulation is the entire product

Everything else is in service of that one illusion. Threadfin exposes an HDHomeRun discovery endpoint plus a lineup, an M3U at /m3u/threadfin.m3u and an XMLTV file at /xmltv/threadfin.xml, all on port 34400. Jellyfin and Emby can consume the M3U and XMLTV directly and never need the HDHomeRun pretence; Plex is the one that insists on a tuner, and for Plex you add the Threadfin address as an HDHomeRun device. Plex also requires a Plex Pass for DVR features, which is a Plex fact rather than a Threadfin one, and the reason a lot of people end up on Jellyfin for live TV.

The compose file is three lines of substance:

services:
  threadfin:
    image: fyb3roptik/threadfin:latest
    ports:
      - "34400:34400"
    volumes:
      - ./conf:/home/threadfin/conf
    restart: unless-stopped

Run it on the same network segment as Plex if you want discovery to work; across VLANs, add the tuner by IP.

Filtering 3,000 channels down to 40 is the real work

Providers ship playlists with thousands of entries and the media server's guide is unusable at that scale. Threadfin's filter tab lets you include channels by group or regex and exclude the rest, and the mapping tab is where you assign each surviving channel a number, a logo and an EPG source. Do this once, carefully. The number of tuners you declare should match what your provider allows concurrently, usually 1 to 3, because the media server will happily try to record two things at once and the provider will drop both.

Mapping EPG: XMLTV in, guide out

Your provider's XMLTV usually covers its own channels with its own IDs. Threadfin matches channels by name automatically and lets you fix the misses by hand, and it can merge several XMLTV files, so a free national guide can fill gaps in a provider's thin one. Set the update schedule to refresh the playlist and guide daily; a stale guide is what makes recordings start at the wrong time.

Buffering: when to turn it on and which one

With buffering off, the media server pulls the stream straight from the provider through Threadfin's redirect, and any hiccup at the source becomes a dropped recording. Turning on Threadfin's own buffer, or the ffmpeg or VLC buffer (ffmpeg ships in the container image), makes Threadfin fetch the stream and re-serve it, smoothing over short stalls at the cost of CPU and a few seconds of delay. I run ffmpeg buffering for anything I record and none for channels I only watch live. The 128 MB RAM figure assumes no buffering; each buffered stream adds tens of megabytes.

Threadfin vs xTeVe vs Dispatcharr vs Tvheadend

xTeVe is the original and has gone quiet; Threadfin is the drop-in successor with the same config layout. Dispatcharr is the newer project doing the same job with a more modern interface and better multi-provider handling, worth a look if you juggle several sources. Tvheadend is a different animal, a full TV backend with its own DVR and client apps, and the right choice if you also have real DVB or ATSC tuners. Threadfin needs an IPTV source and is not a media server; it makes an existing one better.

What I'd do

Jellyfin plus Threadfin, on the same box, M3U and XMLTV pointed at Threadfin's URLs, ffmpeg buffering on, tuners set to whatever the provider allows, filters trimmed to the channels a real person will scroll past. Legality of the IPTV source is your responsibility and varies by provider and country, so pick a legitimate one. The Jellyfin setup guide covers the media server side; Threadfin is an evening's work on top of it, and after that live TV appears in the same app as everything else.

Compare Threadfin

4 head-to-head comparisons.

Similar media servers apps