Most guides to adding an M3U to Plex assume you'll run Docker. Plenty of Plex servers live on a Windows PC, a Mac mini or a NAS where Docker is either missing or more hassle than it's worth. You don't need it. The bridge that makes Plex accept a playlist runs as an ordinary program too.
Short answer: download Threadfin's standalone build for your system, run it, point it at your M3U and XMLTV links, then add it in Plex under Live TV & DVR → Set Up Plex DVR by typing your-ip:34400. On a NAS, use the vendor's app catalogue rather than the command line. The catch on Windows and Mac is keeping the program running after a reboot, which is the step people forget until the guide goes blank.
| Your Plex server runs on | Easiest route | Watch out for |
|---|---|---|
| Windows 10/11 PC | Threadfin .exe, started at login or as a service | Firewall prompt; PC sleeping |
| Mac (Apple Silicon or Intel) | Threadfin macOS build, started at login | Gatekeeper blocking an unsigned binary |
| Synology NAS | Container Manager with a few clicks | Folder permissions |
| Unraid | Community Applications template | Same port clash as any app |
| TrueNAS SCALE | A custom app entry | Older guides reference a catalogue that changed |
| Already pay for Channels DVR | Let Channels present its sources to Plex | You're now running two DVRs |
At a glance
M3U into Plex, no Docker
| Plex alone | Cannot read an M3U |
| What you install | Threadfin, a small bridge program |
| Port | 34400 (web UI at /web) |
| Plex menu | Settings → Live TV & DVR → Set Up Plex DVR |
| Plex Pass | Needed only to record |
Why Plex needs a go-between
Plex's Live TV & DVR only accepts tuners: HDHomeRun network boxes, some Hauppauge USB sticks and a few others. It has no field for a playlist, and Plex's forum moderators have said there's "no support at all for m3u." A bridge program reads your M3U and answers Plex as if it were an HDHomeRun. Our guide to what Plex accepts from an M3U covers the format side; here we're only concerned with getting the bridge running.
Before installing anything, test the playlist in VLC on the same computer. If channels don't play there, they won't play in Plex. Our VLC guide shows how. If you only have a server address, username and password, convert it first using our Xtream-to-Plex guide.
Windows
- Download. From Threadfin's GitHub Releases page, take the Windows build for your processor (almost always the 64-bit Intel/AMD one). It's a single executable; there's no installer.
-
Give it a home. Make a folder such as
C:\Threadfinand put the file there. Threadfin keeps its settings in your user profile by default, so don't run it from Downloads where it may get cleaned up. - Run it. Double-click. A console window opens and Windows Defender Firewall asks whether to allow network access. Tick Private networks only.
-
Open the web UI at
http://localhost:34400/weband follow the wizard (tuner count, XEPG, your M3U URL, your XMLTV URL). - Make it survive a reboot. The simplest way: Task Scheduler → Create Task → trigger "At log on" (or "At startup" with "Run whether user is logged on or not") → action "Start a program" pointing at the .exe. Tools like NSSM can wrap it as a proper Windows service if you prefer.
- Stop the PC sleeping. Settings → System → Power: set sleep to Never on mains power. A sleeping server means a dead tuner and missed recordings.
If port 34400 is already in use, run the program from a command prompt with -h to see its options, including how to choose another port.
Mac
- Download the macOS build that matches your chip: Apple Silicon (arm64) for M1 and later, Intel (amd64) for older Macs.
-
Move it to a permanent folder, for example
~/Applications/Threadfin. -
Clear Gatekeeper. The binary isn't notarised, so macOS will refuse to open it. In Terminal, in that folder, run
chmod +xon the file andxattr -d com.apple.quarantineon it. Alternatively try to open it once, then allow it under System Settings → Privacy & Security. -
Run it from Terminal (
./followed by the file name), allow incoming connections when asked, then openhttp://localhost:34400/web. - Start it at login. Add it under System Settings → General → Login Items, or write a small LaunchAgent if you want it to restart automatically after a crash.
- Prevent sleep under System Settings → Energy (or Battery on a laptop): enable "Prevent automatic sleeping when the display is off".
NAS: Synology, Unraid, TrueNAS
On a NAS the honest answer is that you'll be running a container, but through the vendor's interface, without writing compose files.
Synology (DSM 7.2 and later). Install Container Manager from Package Center. Under Registry, search for fyb3roptik/threadfin and download the latest tag. Create a container from it: map local port 34400 to container port 34400, add two folders from a shared folder (for example docker/threadfin/conf → /home/threadfin/conf and docker/threadfin/temp → /tmp/threadfin), set the TZ environment variable to your time zone, and tick auto-restart. The permissions on that shared folder need to allow the container to write; if settings don't save, that's why.
Unraid. In the Apps tab (Community Applications), search for Threadfin and install the template. Check the port and appdata path, set your time zone, and apply.
TrueNAS SCALE. Threadfin's readme points to a TrueCharts chart, but TrueCharts stopped publishing for TrueNAS's app system in 2024. On current versions, use Apps → Discover → Custom App, enter the image name, port 34400 and two host-path storage entries for the conf and temp folders.
A NAS with an older ARM chip may not have a matching image. Check the image's supported platforms first.
The Channels DVR shortcut
If you already subscribe to Channels DVR, which installs natively on Windows, macOS, Linux and most NAS brands (Synology, QNAP, Unraid, TrueNAS and others), you may not need Threadfin at all. In December 2024 Channels' developers documented a way to add Channels sources to Plex: copy the M3U and XMLTV links from the Channels DVR settings, and enter them in Plex's tuner setup. Their note explains the trick: "Plex doesn't support M3U. We detect when Plex is accessing the M3U url and return data in a format that Plex can understand."
It's labelled a hack in their own community, and you'd be paying for one DVR to feed another. But if Channels is already running, it's the least extra software.
Adding it in Plex (all platforms)
- Finish Threadfin's channel mapping first: filter to the groups you want and make sure each channel has an XMLTV match. Detail is in building a clean M3U for Plex.
- In Plex Web, open Settings, choose the server, then Live TV & DVR under Manage.
- Click Set Up Plex DVR. If Threadfin isn't found, choose to enter the address manually and type the computer's LAN IP with
:34400. Use the LAN address rather thanlocalhosteven when Plex is on the same machine; it avoids surprises if anything else on the network needs to reach the stream. - At the guide step, choose XMLTV and enter
http://LAN-IP:34400/xmltv/threadfin.xml. - Check the channel mapping, untick anything unwanted, and continue.
Watching at home doesn't need Plex Pass. Recording does ($6.99 a month, $69.99 a year or $249.99 lifetime since April 2025), as does remote viewing unless viewers buy Plex's Remote Watch Pass. The Docker version of these steps, with a compose file, is in our Threadfin-in-Docker walkthrough.
Platform-specific problems
| Platform | Symptom | Fix |
|---|---|---|
| Windows | Plex can't reach port 34400 | Firewall rule set to Public only; allow Private networks |
| Windows | Guide empty every morning | PC slept overnight; disable sleep |
| Mac | "Cannot be opened because the developer cannot be verified" | Remove the quarantine attribute or allow under Privacy & Security |
| Mac | Works until logout | Started from Terminal; add to Login Items |
| Synology | Settings don't save | Shared-folder permissions; give the container write access |
| Any NAS | Guide times shifted | Missing or wrong TZ variable |
| Any | Plays in Plex Web, errors on a TV app | Set the buffer to FFmpeg in Threadfin; see IPTV on Plex apps |
And as with any setup like this, the source matters more than the software. Use a playlist you're licensed to watch; our page on checking IPTV providers explains what to look for.
Quick answers
Can I add an M3U to Plex without Docker?
Yes. Threadfin publishes standalone builds for Windows, macOS and Linux. Run it, load your M3U and XMLTV, then add it in Plex Live TV & DVR by typing the computer's IP address and port 34400.
Can Plex read an M3U file on its own?
No. Plex Live TV & DVR only accepts tuners, so a bridge such as Threadfin has to present the playlist as an HDHomeRun tuner.
How do I keep Threadfin running on Windows?
Create a Task Scheduler task that starts the executable at log on or at startup, or wrap it as a Windows service with a tool such as NSSM. Also stop the PC from sleeping.
Why won't macOS open Threadfin?
The binary is not notarised, so Gatekeeper blocks it. Remove the quarantine attribute in Terminal or allow it under System Settings, Privacy and Security.
How do I install Threadfin on a Synology NAS?
Use Container Manager: download the fyb3roptik/threadfin image, map port 34400, mount folders for the conf and temp paths, set your time zone and enable auto-restart.
Can Channels DVR add M3U channels to Plex?
Yes, using a method its developers documented in December 2024. Channels DVR detects Plex's requests and answers in a format Plex understands, so you enter its M3U and XMLTV links in Plex's tuner setup.
Do I need Plex Pass?
Not to watch at home. Recording needs Plex Pass, and remote viewing needs Plex Pass or a Remote Watch Pass.
NAS app catalogues, macOS security prompts and Threadfin's release builds all change over time, so menu names may differ on your system. Plex prices are US list prices at the time of checking. Checked October 2026.