M3U
A text file with no video in it, and the thing an IPTV subscription actually is.
An M3U is a plain-text list of media addresses with names attached. It contains no audio or video whatsoever. When an IPTV provider sells you a subscription, what you receive is a link to one of these — a list of channel names, logos, groups and stream addresses that a player turns into a channel guide.
30 July 2026
Opened without help by
Nothing in iOS or macOS reads an M3U as a playlist. Tapping one shows a wall of text. It is not a media format and no system was ever going to treat it as one — it needs an app that understands what the list is *for*.
The facts
| Full name | MP3 URL, or Moving Picture Experts Group Audio Layer 3 Uniform Resource Locator |
|---|---|
| Kind | Playlist — a list of addresses, no media |
| Extensions | .m3u (any text encoding), .m3u8 (UTF-8) |
| Published | Late 1990s, by Fraunhofer for Winamp; never formally standardised |
| Structure | A #EXTINF line naming each entry, followed by its address |
| IPTV extensions | tvg-id, tvg-name, tvg-logo, group-title — added by convention, not by a specification |
| What the addresses point at | Usually HLS playlists or MPEG-TS streams; sometimes plain files |
| Typical provider size | A few hundred KB to well over 200 MB for lists in the hundreds of thousands of channels |
A list of names and addresses
The format is about as simple as a format gets. Each entry is two lines: one starting with #EXTINF that names the thing, and one with the address it lives at. Everything else — logos, channel numbers, the groups that become categories in a player — arrived later as attributes people agreed to put on the #EXTINF line. No standards body ever ratified any of it.
That informality is why M3U files vary so much. One provider writes group-title="Sports", another writes group-title="SPOR", a third leaves it out entirely and expects the player to guess. A player that handles IPTV well is mostly a player that has met a lot of badly written M3U files.
The confusion with M3U8 is worth clearing up: the 8 refers to UTF-8 text encoding, nothing more. Every HLS playlist is an M3U8, but not every M3U8 is HLS — an IPTV channel list saved as UTF-8 is also an .m3u8 and has nothing to do with segmented streaming.
Why size is the whole problem
Provider lists have grown in a way the format never anticipated. A file that was a few hundred lines in 2010 is now, from a large provider, hundreds of thousands of entries and hundreds of megabytes of text.
The naive way to read one — load the file into memory, parse it, hold the result — falls over long before that. Parsing a 200 MB list that way means a memory spike an iPhone will not tolerate, and iOS ends the app rather than waiting. This is why so many IPTV apps simply crash on a large provider.
The approach that works is to never hold the list at all: read it from disk in pieces, write each channel straight into a database as it is parsed, and then page the screen from that database. FoxDL was measured against a 485 MB list of two million channels — 123 seconds to import, 9 MB of extra memory, 4 milliseconds to draw the first page, 400 milliseconds to search the whole list. The numbers are only interesting because the naive approach cannot produce them at all.
Using one
- Add it as a URL, not as a file
Providers update their lists — channels move, addresses rotate. A player holding the URL can refresh; a player holding a copy you downloaded once is out of date the first time anything changes.
- Expect the groups to be a mess and use search
Category names come from the provider and follow no convention. On a large list, searching for a channel is faster than navigating to it, provided the app searches the database rather than a loaded array.
- Know that the list is not the content
An M3U is addresses. Whether those addresses are legal to watch is a question about the provider, not about the file or the player. No app ships channels, and none can vouch for a list you supply.
Questions about this format
Where these facts come from
Nearby formats
Your library, finally in one place.
Free to download. No account, no sign-up, nothing to hand over.