How to Add IPTV to Plex on a Windows PC or Mac (2026 Walkthrough)

Short answer: you add IPTV to Plex by running a free program called Threadfin on the same Windows PC or Mac as your Plex server. Threadfin loads your M3U playlist and XMLTV guide, and Plex then finds it under Settings → Live TV & DVR → Set Up Plex DVR as if it were an HDHomeRun tuner. Plan on 30 to 45 minutes the first time. You need a playlist you're entitled to use, a computer that stays on while anyone is watching, and a Plex Pass if you want to record.

At a glance

The walkthrough in brief

Time needed 30-45 minutes
Runs on The PC or Mac that already runs Plex
Threadfin address http://localhost:34400/web/
Plex menu Settings → Live TV & DVR
Most common mistake Forgetting to activate channels in Threadfin

Before you start

Gather these first. Hunting for a guide URL halfway through the Plex wizard is how most first attempts stall.

You need Where it comes from
Plex Media Server, current version Already installed on your PC or Mac
Plex Pass, if you'll record $6.99/month or $69.99/year (October 2026); Plex says live viewing alone is free
M3U playlist URL Your licensed provider's account page, or a public broadcaster playlist
XMLTV guide URL Usually from the same provider
Your stream limit How many devices your plan allows at once
VLC Free, for the test in step 1

If your provider gave you an Xtream login (server, username, password) rather than links, ask them for the M3U and XMLTV versions. Our Xtream Codes explainer shows how the two relate.

A word on the source: Plex and Threadfin don't supply channels. Use a playlist from a service that holds the rights, free public streams, or your own antenna tuner. Plugging an unlicensed reseller's list into Plex doesn't make it legitimate, and those lists vanish without warning anyway.

Step 1: Test the playlist outside Plex

Two minutes here saves an hour later. Open VLC, choose Media → Open Network Stream on Windows or File → Open Network on a Mac, paste the M3U URL and press Play. Then open the playlist view and try three or four channels.

If channels play in VLC, any later problem is in Threadfin or Plex. If they don't play in VLC, nothing below will fix them, and the conversation is with your provider. Our VLC diagnostics guide explains how to read the result.

Step 2: Install Threadfin on Windows or Mac

Threadfin is open source and published on GitHub. Most guides assume Docker, but on a normal desktop the standalone program is simpler. Download the file that matches your system from the project's Releases page: the Windows build for an ordinary PC, the macOS "arm64" build for an M-series Mac, or "amd64" for an older Intel Mac.

On Windows:

  1. Make a folder such as C:\Threadfin and move the downloaded .exe into it.
  2. Double-click it. A console window opens and stays open while Threadfin runs.
  3. When Windows Defender Firewall asks, allow access on Private networks. Without that, Plex on other devices can't reach it.
  4. Open http://localhost:34400/web/ in a browser.

On a Mac:

  1. Move the downloaded file into a folder such as ~/Threadfin.
  2. Open Terminal in that folder and make it runnable: chmod +x followed by the file name.
  3. Run it with ./ followed by the file name. If macOS blocks it as coming from an unidentified developer, go to System Settings → Privacy & Security and choose Open Anyway, then run it again.
  4. Allow incoming connections if the macOS firewall asks, and open http://localhost:34400/web/.

Threadfin keeps its settings in a hidden .threadfin folder in your user directory by default, so updating the program later doesn't wipe your channel mapping. If you already use Docker Desktop, the container route in our Threadfin setup guide works just as well.

Step 3: Load the playlist and guide

The first time the web page opens, a short wizard appears.

  1. Tuner count. Enter your plan's simultaneous stream limit. Each live view and each recording in Plex uses one. Set it higher than your plan allows and the provider will start refusing streams.
  2. EPG source. Choose XEPG. That lets Threadfin build the guide and map channels. The other option hands the guide to Plex, which won't recognise IPTV channels.
  3. M3U playlist. Paste the URL you tested in VLC.
  4. XMLTV file. Paste the guide URL.

Threadfin downloads both and opens its dashboard. Note the stream count and the tvg-id percentage. A high percentage means most channels will match the guide automatically.

Step 4: Pick and activate your channels

This is the step people skip, and it's why Plex later says it found a tuner with no channels.

Filter first. In the Filter tab, add a group filter for each playlist group you want, for example "News" or "Sports". Save. The dashboard count should drop from thousands to dozens or low hundreds. Plex's guide gets slow with very large lineups, so keep it to what you actually watch.

Then map. Open the Mapping tab. For each channel:

  1. Check that an XMLTV entry is selected. Channels with matching tvg-id values will already have one.
  2. For the rest, click the channel and choose its guide entry from the list.
  3. Give it a channel number and make sure it's set to active.

Save. Only active channels are passed to Plex. If a channel has no guide match, activate it anyway; Plex will show it with generic placeholder blocks. Our tvg-id matching guide covers stubborn cases.

Step 5: Add Threadfin as a tuner in Plex

Now switch to Plex Web, either at app.plex.tv or http://localhost:32400/web on the server.

  1. Open Settings (the spanner icon), scroll the left column to your server, and choose Live TV & DVR.
  2. Click Set Up Plex DVR (some recent versions label it Set Up Plex Tuner). Plex searches the network for tuners.
  3. If Threadfin appears, select it. If not, use the link to enter the device's network address manually and type your computer's LAN address with the port, such as 192.168.1.20:34400. Use the real address rather than "localhost" so other devices in the house work too.
  4. Plex shows the channel list Threadfin is offering. Click Continue.
  5. When Plex asks for your postcode to download listings, look for the option to use an XMLTV guide on your server instead. Enter http://[your-ip]:34400/xmltv/threadfin.xml. Use the plain .xml address, not the compressed .gz one.
  6. Plex matches channels to guide entries. Check the list, untick anything you don't want, and click Continue.
  7. Wait while Plex downloads the guide. A few hundred channels can take several minutes.

Live TV now appears in the Plex sidebar on every client signed in to your account. Open it, pick a channel and give it a few seconds. Plex buffers a little before playback starts.

Step 6: Keep it running

Close the Threadfin window and live TV stops. Set it to start on its own.

Windows: press Win + R, type shell:startup, and put a shortcut to the Threadfin .exe in the folder that opens. It will launch at sign-in. For a PC that reboots unattended, Task Scheduler with a "When the computer starts" trigger is more reliable.

Mac: add it under System Settings → General → Login Items, or wrap it in a small launch agent if you're comfortable with that.

Also give the computer a fixed address in your router's settings. Plex remembers the tuner by IP, and if the address changes after a router restart, Plex shows the tuner as offline.

And turn off sleep. A sleeping PC means a failed recording at 8 p.m.

Fixing common errors

What you see Usual cause Fix
Plex finds no device Discovery blocked by firewall Enter IP:34400 manually; allow Threadfin through the firewall
Tuner found, zero channels Nothing active in Mapping Activate channels, save, rerun the Plex scan
Guide import fails Used the .gz guide URL Switch to threadfin.xml
"Could not tune channel" Stream offline, or all tuners busy Test the channel in VLC; check active streams
Plays, then freezes Buffer type or Wi-Fi Try the FFmpeg buffer in Threadfin's settings; wire the PC
"No information" in guide Channel not mapped to XMLTV Map it, then refresh the guide in Plex
Works at home, not on phone away Remote access off, or upload too slow Check Settings → Remote Access in Plex

After any change in Threadfin, refresh in Plex too. Under Live TV & DVR, open the tuner's settings and rescan channels, or refresh the guide. Plex caches the lineup and won't notice changes on its own. Guide problems that survive a refresh are covered in our EPG troubleshooting guide.

Quick answers

Can I add an M3U URL directly in Plex? No. Plex has no playlist field. A tuner emulator like Threadfin sits in between and presents the playlist as an HDHomeRun.

Do I need Docker to add IPTV to Plex? No. Threadfin runs as a normal program on Windows and macOS. Docker is just one option.

What address do I give Plex? Your computer's LAN IP plus port 34400, for example 192.168.1.20:34400.

Which guide URL works in Plex? The uncompressed one: http://[your-ip]:34400/xmltv/threadfin.xml. Plex won't read the .gz version.

How many tuners should I set? The number of simultaneous streams your plan allows. Recordings count too.

Why does Plex show the tuner but no channels? Channels haven't been activated in Threadfin's Mapping tab. Activate, save and rescan.

Does the computer have to stay on? Yes. Plex and Threadfin both run on it, so if it sleeps, live TV and recordings stop.


Plex renames setup screens from time to time, and Threadfin's release files and menus change between versions. If a label differs, look for the closest match. Use only playlists you're licensed to watch. Checked October 2026.