Exactly how this editor parses and writes M3U/M3U8 — documented parser and generator behaviour.
#EXTM3U marks the header; attributes on that line (for example url-tvg) are captured.#EXTINF: carries an optional duration then attributes; the channel name is the text after the last comma on the line.tvg-name becomes the channel name.#EXTGRP: sets the group for the next channel, but only when group-title is absent.key="value" and key=value are accepted; the quoted form wins if a key appears in both.# is ignored.-1.timeshift, catchup-days, catchup-type, tvg-id, tvg-name, group-title, tvg-logo, then the remainder sorted alphabetically.\".#EXTGRP: is not emitted by default.| Attribute | Meaning | Editable in the UI |
|---|---|---|
tvg-id | EPG channel identifier | Yes |
tvg-name | Channel name used by EPG sources; also the fallback display name | Yes |
tvg-logo | Channel logo URL | Yes |
group-title | Group the channel is listed under | Yes |
timeshift | Catch-up offset in hours | No — preserved unchanged |
catchup-days | Number of days of catch-up available | No — preserved unchanged |
catchup-type | Catch-up mechanism advertised by the provider | No — preserved unchanged |
url-tvg | EPG source URL — an #EXTM3U header attribute, not per channel | No — preserved unchanged |
The input line on the left, what export writes on the right.
#EXTINF:-1 group-title="News" tvg-id="bbc.uk" tvg-logo="https://example.com/bbc.png",BBC News
https://example.com/bbc/index.m3u8#EXTINF:-1 tvg-id="bbc.uk" group-title="News" tvg-logo="https://example.com/bbc.png",BBC News
https://example.com/bbc/index.m3u8| Status | Meaning |
|---|---|
ok | The stream responded successfully. |
redirect | A redirect response; the resolved address is reported as final_url. |
timeout | No response within the allotted time. |
error | Transport failure or an HTTP error code. |
forbidden | The server refused access. |