M3U, Xtream Codes, EPG: what the words mean and which one you have
Someone hands you a link and a password and says “put this in an IPTV app”. From there it is mostly vocabulary. There are two ways a subscription reaches a player, they behave very differently, and knowing which you were given explains almost everything about what the app can and cannot show you.
- A playlist is a text file
- An M3U is a list of channel names and stream addresses. Nothing more — no guide, no catalogue.
- An account is an API
- Xtream Codes is a server the app can query: channels, films, series, guide and catch-up as separate calls.
- The player supplies neither
- Both point at your provider’s servers. An IPTV app is a client, the way a mail app is a client.
IPTV is a delivery method, not a service
IPTV means television delivered over an ordinary internet connection instead of an aerial, a satellite dish or a cable. That is the whole definition. It says nothing about who is sending the picture, whether they have the right to, or whether you are paying them — a national broadcaster streaming its own channels and a shady reseller both use the same technology.
An IPTV player is the client end of that: an app that takes an address, opens the stream and draws the picture. It has no channels of its own, in the same way a web browser has no websites of its own. This distinction is worth holding on to, because it is the difference between a legitimate app and a piracy tool, and it is also why the App Store is full of players with no content anywhere in them.
Where it gets confusing is that the two ways of handing a subscription to a player are so different in capability that people assume they are different products. They are not — they are the same channels, described to the app in two different ways.
M3U playlist versus Xtream Codes account
If your provider gave you a long URL ending in .m3u or .m3u8, you have the first. If they gave you a server address, a username and a password, you have the second.
| M3U playlist | Xtream Codes account | |
|---|---|---|
| What it is | A text file listing channels and their stream URLs | An API the app queries for each kind of content |
| Live channels | Yes, as one flat list | Yes, organised into categories |
| Films and series | Only if the provider mixed them into the same list | Yes, as a proper catalogue with seasons and episodes |
| Programme guide | Only via a separate XMLTV URL, if given one | Built in, per channel |
| Catch-up / replay | No | Where the provider offers it |
| Updates | The whole file is re-downloaded | Only what changed is requested |
| Credentials | Usually embedded in every stream URL | Sent per request, and can be stored separately |
Many providers give you both for the same subscription. If you have the choice, the Xtream account is the better one to add — it gives the app enough structure to build a guide and a catalogue rather than a flat list of a hundred thousand names.
The rest of the vocabulary
- EPG (XMLTV)
- The programme guide: what is on now, what is next, what was on this morning. It arrives as a separate XML file, often tens of megabytes, and has to be matched to your channels by an id the provider sets. Mismatched ids are why a guide is sometimes right for half the channels and empty for the rest.
- Catch-up (archive, replay)
- The provider records a channel for a rolling window — usually one to seven days — so you can start a programme that has already aired. It only exists if they enabled it, per channel, and no player can add it.
- VOD
- Films and series held as individual files rather than a live stream. In an Xtream account these are separate sections with their own metadata; in an M3U they are just more entries in the list.
- Connection limit
- How many streams your subscription may play at once, counted at the server. Exceeding it is the most common cause of a channel that suddenly refuses to open — including when the second “connection” is your own phone, still holding the previous stream.
- Transport stream (TS / HLS)
- The two shapes a live channel arrives in. HLS is chopped into segments and tolerates a wobbly connection better; raw TS starts faster and is less forgiving. Providers usually offer both; either the app picks, or you do.
Adding a subscription to any player
The wording differs between apps; the sequence does not.
-
Work out which of the two you have
A single long link means a playlist. A hostname with a port, plus a username and a password, means an Xtream account. If you were sent an app with the details baked in, ask for the plain details — you are not obliged to use their player.
-
Add it, and let the first import finish
A large list takes a moment: tens of thousands of entries have to be parsed and stored. This happens once. If an app freezes here rather than showing progress, it is loading the whole file into memory, and it will do the same every time.
-
Attach the guide if it came separately
For an M3U, the EPG is a second URL you paste in. For an Xtream account it is already there.
-
Sort out favourites before anything else
Nobody browses a hundred thousand channels twice. Marking the twenty you actually watch turns the list into something usable, and it is the single highest-value five minutes you will spend.
-
Test one channel from each category
Providers frequently have whole categories that are dead. Finding that out now is better than during a match.
Why a channel buffers, and who can fix it
Buffering on IPTV is almost never the app. A live stream has no ability to slow down and catch up — it arrives at the rate the source sends it, and if that rate cannot be sustained the picture stalls. Three things cause it, and they are distinguishable.
If one channel stutters and the rest are fine, the source for that channel is overloaded or badly encoded. Nothing on your side will help; a different quality variant of the same channel sometimes will. If everything stutters at the same time of day, the provider is saturated at peak hours — the classic evening problem on oversold services. If everything stutters all the time, look at your own connection, and specifically at Wi-Fi: a phone two rooms from the router on a congested 2.4 GHz band is a far more common cause than bandwidth.
A larger buffer helps a wobbly connection at the cost of a longer wait when changing channel, and it cannot rescue a source that is simply not sending enough data. And if a stream opens for a second and dies, that is usually not buffering at all but the connection limit — something else is already playing on the same account.
What to look for in a player, once you have a subscription
- It survives a huge list
A big provider’s export runs to several hundred thousand entries — the one this page was checked against holds 701,017. A player that reads the list into memory will stall on import and be slow forever after. One that streams it into a database opens instantly at any size.
- The guide sits next to the channels
A programme guide you have to navigate away to see is a guide you will not use. On a tablet or a Mac there is room for both at once.
- Your credentials are stored properly
Xtream stream URLs embed your password. A player that writes those URLs into its database has written your password into its database. The Keychain is where that belongs.
- It respects the connection limit
Downloading while watching, on a one-connection account, means one of the two fails. A player that knows this can queue rather than collide.
- Resume works on films and series
VOD in an IPTV catalogue should behave like any other video: it remembers where you were, and the next episode is one tap away.
The three screens, for this specifically
A remote control more than a television: fine for catching a match, and the place where a small favourites list matters most.
The best of the three for browsing a catalogue — the guide, the channel list and the picture all fit on screen at once.
A large channel list is genuinely comfortable here, with the player in its own window and the guide in another. No advertising in the Mac build at all.
Questions people ask
Does an IPTV app come with channels?
A legitimate one does not, and cannot. It is a client — you bring a subscription from a provider and the app plays it. Any app that arrives with channels already in it is distributing content, which is a very different thing legally and rarely a good sign.
Why is my programme guide empty for some channels?
The guide matches to channels by an identifier the provider sets. If a channel’s id in the playlist does not match any id in the XMLTV file, that channel gets no guide. It is a data problem at the provider’s end, and the only fix is a corrected list from them.
Why does a channel stop when I start a download?
Your subscription almost certainly allows one simultaneous connection. Playing and downloading are two, so one of them loses. Providers sell additional connections; some players also cap their own IPTV downloads to one to avoid tripping this.
Can I use one subscription on my phone and my Mac at the same time?
Only if it allows more than one connection. The limit is counted per account at the server, not per device, so a one-connection account means one screen at a time no matter how many devices you have set it up on.
What FoxDL does with a subscription you already have
FoxDL is the client half only. It provides, hosts and supplies no channels, films or streams of its own — you add a service you legally subscribe to.
- M3U playlists and Xtream Codes accounts, with the catalogue, seasons, episodes and resume that an Xtream account makes possible.
- EPG and catch-up where the provider offers them.
- Lists at provider scale — a 485 MB, two-million-channel playlist imports in about two minutes for 9 MB of peak memory, because it is parsed straight to disk instead of into memory and every screen pages from the database rather than loading the catalogue.
- Credentials live in the Keychain. Stream URLs that embed a password are built when needed and never written to the database.
- Connection-aware: IPTV downloads are capped to one connection so they do not knock out what you are watching.
- Favourites, search and recently watched across the whole list.
Free: the first playlist or account on iPhone and iPad, the first two on Mac. Pro removes the limit. Prices, channels and reliability are entirely your provider’s business, not ours.
Questions people ask about this
- How do I add an M3U playlist to FoxDL?
- How do I add an Xtream Codes account?
- Does FoxDL show the EPG guide and catch-up TV?
- Can FoxDL handle a playlist with millions of channels?
- Why does my IPTV channel buffer or fail to open?
- Does FoxDL provide IPTV channels, films or streams?
Keep reading
Why your iPhone opens one video file and refuses the next
Containers, codecs, and the three ways to watch a file iOS refuses to open.
What a download manager does that a web browser will not
Why transfers stop when you switch apps, what resuming really requires, and how streams become files.
What a media app on your phone can see, and what it should never send
What a media app can see, how to read a privacy label, and why a lock is not encryption.
Your library, finally in one place.
Free to download. No account, no sign-up, and the whole feature set is in the free version.