1. M3U vs M3U8 - what is the difference
For a channel list, nothing that matters. M3U8 is M3U saved in UTF-8 encoding, i.e. with accented characters shown correctly in channel names. Today practically every playlist is UTF-8 regardless of extension, and the app reads both the same way.
The confusion comes from .m3u8 also being the extension of an
HLS stream - the address of a single channel, which is itself a small
list of video segments. In an IPTV playlist the channel addresses often end in
.m3u8, and that is normal: an M3U list contains M3U8 streams. So an address
from your provider ending in .m3u8 may be either the whole list or one
channel. You add a playlist to the app, not a single stream - the
address of one channel will load incorrectly (the app would treat its segments as
channels).
2. How to add a playlist
"Add list" on the home screen. Two sources:
- From an address. Paste the URL your provider gave you. The list is downloaded from the server and refreshed automatically - when the provider adds or removes channels, you see the changes after a refresh.
- From a file. Pick a
.m3uor.m3u8file from your phone or tablet, or from a USB stick on the TV. The app copies it into its own storage; such a list does not refresh - to change it, delete it and add the new file.
When adding, you give a name (anything you like), optionally an EPG address, and whether the list should use the default guide from Settings. If you have no list yet, one button adds the demo playlist with openly licensed material - purely to check that playback works on your device.
One list is free. Several lists at once, with switching between them, is a PRO feature.
3. What the app reads from the file
Besides the channel name and address, the app understands these attributes on the
#EXTINF line and in the #EXTM3U header:
| Attribute | What it does |
|---|---|
| tvg-id | Channel identifier in the EPG. The most reliable way to match the schedule. |
| tvg-name | Fallback name when there is nothing after the comma in #EXTINF. |
| tvg-logo | Channel logo address. Without it the logo may come from the EPG. |
| group-title | Channel group - becomes a category in the list. Alternatively an #EXTGRP: line. |
| url-tvg | In the header: XMLTV guide address. Also x-tvg-url. With several addresses the first is used. |
| catchup | Archive type: default, append, shift, flussonic, xc. |
| catchup-source | Archive address template with {utc}, {utcend}, {lutc}, {duration} placeholders. |
| catchup-days | How many days back the archive reaches. Also timeshift and tvg-rec. A type with no number = 7 days. |
Attribute names are case-insensitive. A channel without a group goes into the "Inne" (Other) category; a channel without a name gets a number.
Not supported: #EXTVLCOPT and #KODIPROP lines
(per-channel HTTP headers and DRM keys) are ignored. DRM-protected streams will not
play.
4. Groups, favourites and your own categories
Playlist groups become category tabs in the channel list, in file order. The channel number always comes from the full list, so it does not change when you switch categories and can be dialled with the remote's digits.
Independently of the provider's grouping you can mark favourites (custom order in PRO) and create your own groups (PRO) - these survive a list refresh, because they are stored on the app's side, tied to the channel's identifier or name.
5. Refreshing the list
A list from an address is downloaded again no more often than every 12, 24 or 48 hours - the "Refreshing lists and EPG" setting. Between downloads the app uses the saved copy, so the list opens instantly, even with no connection (the channels themselves still need the network). If the server is unreachable at refresh time, the older copy is used. Manually: "Refresh list and EPG" in the channel list menu.
Less frequent refreshing means a lower risk of limits - some providers block an account after too many playlist downloads in a short time.
6. Stream formats and provider panels
The app plays what Android plays: HLS (.m3u8),
MPEG-TS over HTTP (.ts, addresses without an extension), and
plain video files (MP4, MKV). http and https addresses; redirects
between them are allowed, because panels often redirect streams to unencrypted servers.
Xtream Codes: the app has no separate username/password login. Use the
M3U playlist address the panel provides (usually
.../get.php?username=…&password=…&type=m3u_plus). The archive of such
panels (catchup="xc") is supported.
Not supported: Stalker/MAC portals, DASH, RTMP and UDP/multicast, DRM-protected streams.
7. Backup
Settings → backup saves your lists, favourites, groups, parental lock, scheduled programmes and settings to a single file. Nothing leaves the device - you move the file yourself, e.g. from the phone to the TV.
8. When the list does not load
- 0 channels after adding. The address returns an HTML page (login,
account-expired notice) rather than an M3U list. Open the address in a browser: it should
download a text file starting with
#EXTM3U. - The list is there, channels do not start. That is a stream problem, not a list problem - see the TV page, sections 4 and 7.
- Garbled accented characters. The file is not UTF-8. For a list from an address ask the provider for the M3U8 variant; for a file, re-save it as UTF-8.
- No groups. The list has neither
group-titlenor#EXTGRP; everything lands in "Inne". Make your own groups (PRO) or ask the provider for them3u_plusvariant. - No guide. See IPTV EPG.
Anything else: kontakt@ipapptv.com - with the first lines of the file (without addresses containing a username and password).
