Short answer: Plex has no box for an Xtream Codes login. Nothing in Live TV & DVR asks for a server, username and password. You either turn those three details into two URLs, a playlist and a guide, and give them to a tuner emulator such as Threadfin, or you use an emulator that accepts the login directly, such as Dispatcharr. Then set the emulator's tuner count to your account's connection limit. Plex itself never sees your password, which is the one nice thing about this setup.
At a glance
Xtream logins and Plex
| Plex accepts Xtream? | No, only tuners |
| Route 1 | Build M3U + XMLTV URLs → Threadfin |
| Route 2 | Emulator with an Xtream input (e.g. Dispatcharr) |
| Tuner count | = your max connections |
| Biggest risk | The URLs contain your password |
What an Xtream login actually is
"Xtream Codes" started as the name of a panel product used to run IPTV services. The company behind it was shut down after an Italian police operation in 2019, but its login format outlived it: many panels still speak the same API, so "Xtream login" now just means three details: a server address (often with a port, such as http://line.example.com:8080), a username and a password.
Player apps use those three to call an API, normally at player_api.php, and pull channel lists, categories and guide data in pieces. It's a different model from an M3U file, where the whole list arrives as one download. Our Xtream Codes explainer covers the format and why logins fail in player apps.
Plex speaks neither. Its Live TV & DVR only talks to network tuners, which is why every Plex IPTV setup runs through an emulator that impersonates an HDHomeRun.
Turning a login into two URLs
Most Xtream-style panels still expose two older endpoints that return a full playlist and a full guide when you put the login in the address. The pattern looks like this, with your own server, username and password swapped in:
Playlist:
http://SERVER:PORT/get.php?username=USER&password=PASS&type=m3u_plus&output=ts
Guide:
http://SERVER:PORT/xmltv.php?username=USER&password=PASS
| Part | Options | What to pick for Plex |
|---|---|---|
| type | m3u, m3u_plus | m3u_plus: it includes tvg-id, logos and group-title |
| output | ts, m3u8 (some panels say hls) | ts is the simplest for emulators; try m3u8 if ts fails |
| SERVER:PORT | As given by the provider | Include the port exactly; http vs https matters |
| xmltv.php | No extra options on most panels | Feed it to the emulator, not to Plex directly |
Two caveats. First, providers can switch these endpoints off, and some do, because a full playlist download is heavy for the server. Developers who've built players report that on some panels get.php and xmltv.php no longer work and only the API answers. Second, the playlist from get.php often includes films and series alongside live channels. You'll filter those out later. If your provider's dashboard offers a "download M3U" button, use that URL instead of building one; it's the format they support.
On ts versus m3u8: ts sends one continuous transport stream, which emulators pass to Plex with the least fuss. m3u8 is HLS, a stream chopped into short segments; some providers serve it more reliably, especially over long distances, so it's the first thing to try if ts channels stutter or refuse to start.
Test the URLs before Plex
Don't debug three things at once. Prove the URLs work before the emulator and Plex get involved.
-
Playlist: open the get.php URL in a browser on your home network. It should download a text file that starts with
#EXTM3U. An empty file, an error page or a login prompt means the endpoint is off or the details are wrong. -
Guide: open the xmltv.php URL. You should get XML with
<channel>and<programme>entries. A tiny file with no programmes means no guide is offered this way. - One stream: copy one channel URL from the playlist into VLC (Media → Open Network Stream). If it plays, the emulator will be able to play it too.
Test on the network the server is on. Some panels tie a login to an IP address or a country, so a URL that works on your phone's mobile data may not behave the same from the server.
Route 1: URLs into Threadfin
Threadfin, the maintained fork of xTeVe, takes an M3U playlist and an XMLTV file and presents them to Plex as an HDHomeRun. It doesn't advertise an Xtream login field, so it uses the two URLs you just built.
- Settings → Playlist: add the get.php URL, give it a name and set the tuner count (see the limits section).
- Settings → XMLTV: add the xmltv.php URL.
- Filter: cut the list down to the live groups you want. Xtream playlists are big, and Plex is happiest with a few hundred channels at most.
- Mapping: check each kept channel has a guide match, then save.
-
Plex: Settings → Live TV & DVR → Set Up Plex DVR, add the device at
http://SERVER-LAN-IP:34400if it isn't found, and give Plex Threadfin's own XMLTV address for the guide.
The full walk-through, including Docker settings, is in our Threadfin setup guide.
Route 2: an emulator that takes the login
Newer stream managers accept an Xtream account directly. Dispatcharr is the best-known open-source example: you add a provider as either an Xtream Codes account or an M3U, set a maximum-connections value for that account, attach EPG sources and then expose the channels to Plex as a tuner. It runs in Docker, with its dashboard on port 5500 by default.
The advantages over hand-built URLs are real:
- It talks to the panel's API, so it works when
get.phphas been switched off. - Connection limits are set per account, which matters if you have more than one lawful source.
- It can fail over to a backup source if one stops responding.
- It can merge guide data from several XMLTV sources.
The trade-off is complexity: it's a bigger application with more to configure and keep updated. If your provider's get.php URLs work and you have one account, Threadfin is the shorter path.
Connection limits and Plex recordings
Every Xtream account has a limit on simultaneous streams, often one or two. The panel's API reports it as a max-connections value, and many player apps show it on an account screen.
The emulator's tuner count must match it. Plex treats each tuner as a physical tuner it can use for live viewing or recording. If you tell Plex there are four tuners on a two-connection account, it will schedule overlapping recordings that the provider then refuses. Worse, a recording can quietly take the slot someone in the lounge was using.
| Account limit | Tuner setting | What it means in Plex |
|---|---|---|
| 1 connection | 1 | Watch or record, never both |
| 2 connections | 2 | One live viewer plus one recording |
| 3+ connections | Match it, minus one for a player app if you also watch outside Plex | Leaves a slot for the phone app |
Remember that Plex isn't the only thing using the account. A player app on a bedroom TV with the same login takes a slot too. Our max connections guide explains how to track down what's holding them.
Keeping the credentials private
Those URLs put your username and password in plain text, often over unencrypted http. Anyone who sees the URL has your account. A few rules:
- Don't paste the URL into online playlist editors or converter sites. Do the filtering in a self-hosted emulator.
- Redact before asking for help. Screenshots of emulator settings and log snippets on forums are a common leak.
- Keep the emulator off the internet. Its web UI should be reachable on your home network only, not port-forwarded. Plex's remote access works through the Plex server; the emulator doesn't need exposing.
- Back up the config folder privately. It holds the URLs.
- If it leaks, change the password with the provider and update the emulator, rather than living with mystery connections.
The upside of the emulator design is that Plex, its clients and anyone you share your server with only ever see the emulator's local addresses, never the provider login.
Whose login is it?
A login format says nothing about whether a service is licensed. Some legitimate providers hand out Xtream-style logins for use in third-party players. Many unlicensed resellers do too, and they're the ones that sell "thousands of channels" for a few dollars a month with logins shared across panels. Plex, Threadfin and Dispatcharr are neutral tools; the question is the source.
Use this setup with a login from a provider that actually holds the rights to what it streams, or with your own and public free channels. If you're not sure which you have, our guides on spotting IPTV scams and whether IPTV is legal in the US lay out the tell-tale signs.
Quick answers
Can Plex log in to an Xtream Codes account? No. Plex's Live TV & DVR only connects to tuners, so you need a tuner emulator between Plex and the account.
How do I convert an Xtream login to an M3U URL? On most panels: http://SERVER:PORT/get.php?username=USER&password=PASS&type=m3u_plus&output=ts. The guide is usually at xmltv.php with the same username and password.
What if get.php doesn't work? The provider may have disabled it. Use the M3U link from their dashboard, or an emulator such as Dispatcharr that talks to the Xtream API directly.
Should I choose ts or m3u8 output? Start with ts, which emulators handle most simply. Switch to m3u8 if streams fail or the provider recommends it.
How many tuners should I set? The same as your account's simultaneous-connection limit, minus any slots used by other apps on the same login.
Does Plex see my Xtream password? No. Plex only sees the emulator's local tuner address. The credentials live in the emulator's settings, so protect that instead.
Is using an Xtream login with Plex legal? The tools are legal. Whether the streams are depends on whether the provider is licensed to distribute them.
Xtream-style panels differ, and providers can disable endpoints or change URL formats without notice. Threadfin and Dispatcharr add features often, so check their current documentation for input types and default ports. Checked October 2026.