User manual
A user guide to the IPTV channel list and Enigma2 bouquet conversion and management tool.
Table of contents
- About the program
- Startup and access protection
- Main window
- Loading channel lists
- Converting to the Enigma2 format
- HPL channel pattern and sorting
- Jason lists
- Editing the channel list
- Tools
- Stream Tester
- Xtream Codes
- M3U TV - local server
- Download .m3u
- Button numbering and program files
- Troubleshooting
1. About the program
HPL Converter v3.13 [05.07.2026] is a Windows tool that combines the most important TV channel list operations in a single window:
- loading M3U / M3U8 playlists from a file or directly from a URL,
- logging in to Xtream Codes servers and loading Live, VOD and series content,
- converting a playlist to an Enigma2 bouquet (type 4097 stream services for satellite receivers),
- sorting channels according to a saved HPL channel pattern with intelligent name matching,
- support for Jason lists (numbered channel lists in JSON format),
- full list editing: folders, moving, renaming, duplicates, bulk rename, undo,
- a quick Stream Tester with colour-coded results,
- a local M3U TV server that shares the loaded playlist with a TV on the home network,
- downloading complete .m3u lists (LIVE + VOD + Series) via
player_api.phpwith series category selection.
The interface is available in Polish and English (PL / EN switch in the top right corner) and uses a dark, futuristic "glass cockpit" theme with red tabs and neon cyan accents.
Requirements
- Windows 10 or 11.
- Internet access for the network features (URL, Xtream, list download, stream testing).
- A free port
8899and firewall permission when the M3U TV server is used. - A TV / IPTV app on the same local network as the PC when the playlist is shared via M3U TV.
2. Startup and access protection
First launch
- Run the program (the
hpl_converter.pywfile or the delivered executable). - The main window opens at 1280x880 (minimum 980x620) with the M3U / URL tab active.
- The program starts in Polish. The EN button in the top right corner instantly switches the whole interface to English (and back with PL).
MAC / MachineGuid protection
The program can be bound to specific computers. Access is controlled by two lists configured in the program distribution (each with up to 5 entries):
- MAC address list - at startup the program reads the MAC addresses of the PC's network adapters,
- MachineGuid list - the unique Windows identifier from the registry (
HKLM\SOFTWARE\Microsoft\Cryptography → MachineGuid).
| List configuration | Startup condition |
|---|---|
| Both lists empty | Protection disabled - the program starts on any computer. |
| MAC list only | At least one of the PC's MAC addresses must be on the list. |
| MachineGuid list only | The PC's MachineGuid must be on the list. |
| Both lists filled | Both components must match: MAC and MachineGuid. |
If the computer is not authorised, an "Access denied" window appears instead of the program, listing the detected MAC addresses and the MachineGuid - send this data to the program vendor to have the computer added to the list.
reg query HKLM\SOFTWARE\Microsoft\Cryptography /v MachineGuid3. Main window
The following drawing is a privacy-safe UI diagram. It contains no IP address, login or user-specific data.
CHANNEL LIST | NAME URL ✓
• Channel 1 http://... ✓
• Channel 2 http://...
▸ Another group (channel count)
Permanent window elements
- Program title bar - logo, full program name and version.
- IP address (Enigma2 receiver) - an informational field for the receiver's LAN address (default 192.168.1.4). It serves as a handy note while working with bouquets; conversion and file saving do not send anything to this address.
- PL / EN - instant language switch for the entire interface.
- Four red tabs - M3U / URL (main list work), Xtream Codes, M3U TV / Server, Download .m3u.
- Status bar at the bottom - operation messages on the left, channel and group counter on the right.
- Slide-in progress panel - during longer operations (loading, converting, testing, downloading) a panel with the operation name and percentage appears above the status bar.
Channel tree
The list is presented as a tree: groups (folders) with a channel counter, and channels with the NAME, URL and check-mark ✓ columns. Groups are highlighted in colour and bold. Clicking the ✓ column or double-clicking an entry toggles its check mark; checking a group checks all of its channels.
4. Loading channel lists
Load m3u (1)
- Click Load m3u (1) and open a
.m3u,.m3u8or.txtfile. - The program reads
#EXTINFentries (name fromtvg-nameor the title, group fromgroup-title) andhttp/https/rtmp/rtspURLs. - Channels without a group are placed in the
Ungroupedfolder.
Load from URL (5)
- Click Load from URL (5). A window with a field for the m3u link opens.
- The address must start with
http://orhttps://. - The User-Agent (optional) field is pre-filled with the identifier of a popular IPTV app - some providers require a specific User-Agent and return an empty response without it.
- Click Download. The download runs in the background (gzip/deflate compression is supported) and the list fills the tree when finished.
Load Enigma2 (6)
Load Enigma2 (6) opens an Enigma2 bouquet / list file (.tv, .radio, .txt, .epl, .lst). The program reads service names from the #SERVICE / #DESCRIPTION lines and places them in the Enigma2 folder (without URLs). A list loaded this way primarily serves as the source of a channel-order pattern - see chapter 6.
userbouquet.xxx.tv) can be downloaded from the receiver via FTP from the /etc/enigma2 directory.Other sources
A list can also be loaded via the Xtream Codes tab (chapter 11) or downloaded in full to a file on the Download .m3u tab (chapter 13) and then opened with button (1). Jason lists are described in chapter 7.
5. Converting to the Enigma2 format
The conversion builds an IPTV bouquet in the Enigma2 format in memory. Every channel becomes a type 4097 stream service:
#NAME IPTV
#SERVICE 4097:0:1:2:0:0:0:0:0:0:http%3a//stream/address:Channel name
#DESCRIPTION Channel name
- Colons in the URL are replaced with
%3a, as required by the bouquet format. - Service identifiers are assigned automatically (2, 4, 6, ...).
- Save as... (4) stores the conversion result in a text file. Without a prior conversion the button reports "No data to save - convert first".
/etc/enigma2 as e.g. userbouquet.iptv.tv, register it in bouquets.tv (or use a bouquet editor), then reload the receiver's channel list.Saving the list as M3U (2)
Save m3u (2) stores the current tree content (after all edits) as a standard .m3u file with #EXTINF entries and group-title groups. This is the recommended way to preserve an organised list for other IPTV apps.
6. HPL channel pattern and sorting
A channel pattern is a stored order of channel names that the program can use to sort any other list - even when the names differ in details (HD/FHD/4K, "PL:" prefixes, diacritics and so on).
Creating a pattern
- Load the reference list with Load Enigma2 (6) - e.g. a bouquet with your favourite channel order from the receiver.
- Click Save channel pattern (7). The program stores the unique channel names in
channel_template.hplnext to the program and reports the number of saved entries.
Loading a pattern (8)
Load channel pattern (8) opens a previously saved pattern (.hpl, .json or a plain text file with one channel name per line).
Sorting m3u channels (9)
- Load an M3U list and a pattern (6 or 8).
- Select exactly one group in the tree (or any channel inside it).
- Click Sort m3u channels (9).
- Channels matched against the pattern are placed at the top of the group in pattern order; the remaining ones follow in their previous order.
How name matching works
- Names are normalised: upper case, diacritics removed, tags such as
PL, HD, FHD, UHD, 4K, SD, HEVC, VIP, RAWand prefixes likeXX:stripped. - Name similarity is scored with a text comparison algorithm; the required match threshold is 0.88, so unrelated channels are not paired.
- CANAL+ channels have extra rules: numbers (CANAL+ 1, CANAL+ SPORT 3...) and the SPORT / PREMIUM / FILM / SERIALE / DOKUMENT tokens are compared, preventing mix-ups within the channel family.
7. Jason lists
A Jason list is a numbered channel list in JSON format (.jason or .json extension) where each entry has the name, link, icon and target fields:
{ "1": { "name": "Channel", "link": "http://...", "icon": "http://...", "target": "POLSAT" }, "2": { ... } }
Operations
- Load Jason (10) - opens the file and shows the entries in the Jason folder as a numbered list (
001. Name). Entries are read in numeric order. - Save Jason (11) - stores the current tree order, renumbering the entries 1...N. The icon and target fields are preserved.
- Sort Jason (12) - sorts the list according to the loaded HPL pattern (chapter 6). When several entries share the same name, the one with
target = POLSATis preferred.
8. Editing the channel list
Selecting
- ✓ column: clicking the ✓ cell or double-clicking an entry toggles its check mark. Checking a group includes all of its channels.
- Select all (13) / Deselect all (14) operate on the whole list.
- Independently of ✓, normal row highlighting works (click, Ctrl+click, Shift+click) and is used for moving items and the Stream Tester.
Moving and deleting
- Move up (15) / Move down (16) - moves the highlighted entries one position within their folder.
- Delete selected (17) - deletes highlighted and checked (✓) entries after confirmation. Deleting a group deletes its channels.
Context menu (right mouse button)
| Command | Action |
|---|---|
| Rename | Renames a single channel (dialog with a text field, Enter confirms). |
| Rename folder | Renames the group containing the selected entry. |
| Move to folder... | Moves the highlighted channels to a group chosen from a list. |
| Cut / Paste here | Cuts entries (including whole groups with their content) to the program clipboard and pastes them after the target entry. |
| Delete | Works like button (17). |
Search (20)
The Search channel... field in the top right corner of the M3U / URL tab filters the list by a fragment of the channel or group name (confirm with Enter). The Clear (20) button restores the full list. Edits made on a search result are automatically carried over to the full list.
9. Tools (18)
The Tools (18) button opens a menu of housekeeping functions:
| Function | Description |
|---|---|
| Create folder | Adds a new, empty group with the given name. |
| Merge folders | Moves all channels from a source folder to a target folder (chosen from lists). |
| Remove empty folders | Removes all groups without channels and reports their number. |
| Find duplicates | Shows a report of duplicate pairs. A duplicate is detected by normalised name, by URL, or by both. |
| Remove duplicates | Keeps the first occurrence of each channel, removes further repetitions and reports their number. |
| Bulk rename | Removes or replaces a given text fragment in all channel names (e.g. stripping a "PL: " prefix). Redundant spaces are cleaned up automatically. |
| Auto organize folders | Distributes channels into thematic folders based on their names: Sport, Movies, Series, Kids, Documentary, News, Music, Entertainment, Other. |
| Export report | Saves the list to a .csv file (columns: group, name, url) or the last text report to .txt. |
| Undo last change | Restores the list state from before the last editing operation (multi-level undo history). |
10. Stream Tester (19)
- Highlight channels or whole groups in the tree.
- Click Stream Tester (19). The test runs in the background and the progress bar shows the status.
- Each channel is probed with a short HTTP request (5-second limit) and receives a colour:
| Colour | Result | Meaning |
|---|---|---|
| green | OK | The server responded correctly within the time limit. |
| amber | WARN | The server responded with 401 / 403 / 405 (it refuses the probe, but the stream may still play) or responded slowly. |
| red | FAIL | No response, connection error or empty URL. |
When finished, the status bar shows a summary such as Stream test completed: 42 OK, 3 WARN, 5 FAIL.
11. Xtream Codes (21)
- Open the Xtream Codes tab.
- Enter the Host in the form
http://your-server.com:port, the Username and the Password (the password field is masked). - Select what should be loaded: Live TV, VOD, Series (at least one).
- Click Connect & Load (21).
The program logs in via player_api.php and, after a successful login, shows a status like Logged in: name | Expires: date. Channels are loaded into the main tree (the program switches to the M3U / URL tab automatically) in groups with prefixes:
[LIVE] Category name- live channels,[VOD] Category name- movies,[SERIES] Category name- series entries.
A list loaded this way can be edited, sorted, converted to Enigma2 (3), saved as m3u (2) or shared via M3U TV like any other list.
12. M3U TV - local server (22)
The M3U TV / Server tab shares the loaded channel list on the home network - with a TV, a set-top box or an IPTV app - without copying any files.
- Load a channel list (M3U / URL tab or Xtream).
- Click Start server (22). The program shows the Server running status and the playlist address in the form
http://your-PC-IP:8899/iptv.m3u. - Use Copy URL and enter the address in the TV's IPTV app as "Import m3u-file from URL".
- The cards below the address show the number of shared channels and the port (8899).
- The same button stops the server (Stop server (22)).
- The server always shares the current list state - tree changes (edits, sorting) are visible the next time the playlist is fetched.
- At the
/statuspath the server returns a short diagnostic text with the channel count. - Entries without a URL (e.g. loaded from an Enigma2 file) are skipped in the shared list.
13. Download .m3u LIVE + VOD + SERIES
The fourth tab downloads a complete list from an Xtream server and writes it directly to files on disk: LIVE channels and VOD movies into one file, and series episodes into a separate one. The list is built locally via player_api.php - no server-side script is ever executed.
Step by step
- Login data.
- Fastest way: paste the full playlist address (a
get.php / m3u_pluslink) into the top field and click Load from URL - the host, username and password fill in automatically. - Or enter the Host (
http://server:port), Username and Password manually.
- Fastest way: paste the full playlist address (a
- Download scope. Check Live TV, VOD and/or Series (all enabled by default).
- Series categories. With Series checked, click Select series categories...:
- the window fetches the category list from the server,
- type e.g.
PLin the filter field and use Select matching (or Select all / Clear selection), - confirm with Confirm selection. The label under the button then shows e.g. "Series categories: selected 12 / 96".
- Output files. Choose the LIVE + VOD file (default
playlist.m3unext to the program) and the SERIES file (defaultplaylist_series.m3u). - Download list. The program verifies the account, then downloads LIVE, VOD and the episodes of the selected series in turn. Progress is shown on the bar and details in the time-stamped log window. The Cancel button stops the operation at any moment.
- Summary. A final dialog shows the number of LIVE / VOD entries and series episodes together with the saved file paths. The finished files can be opened right away with Load m3u (1).
- Groups in the output file: LIVE channels keep their category name, movies get the
VOD -prefix, series theSERIES -prefix. - Entries include the
tvg-id,tvg-name,tvg-logoandgroup-titlemetadata. - On connection problems the program automatically retries the requests with alternative User-Agent identifiers.
14. Button numbering and program files
Button numbering 1-22
| No. | Button (EN) | Function |
|---|---|---|
| 1 | Load m3u | Load a list from a .m3u / .m3u8 / .txt file |
| 2 | Save m3u | Save the current list to a .m3u file |
| 3 | Convert -> Enigma2 | Convert the list to an Enigma2 bouquet (4097 services) |
| 4 | Save as... | Save the conversion result to a text file |
| 5 | Load from URL | Download an m3u list from the internet (with a User-Agent field) |
| 6 | Load Enigma2 | Load an Enigma2 bouquet / list (pattern source) |
| 7 | Save channel pattern | Save the order pattern to channel_template.hpl |
| 8 | Load channel pattern | Load a pattern from a .hpl / .json / .txt file |
| 9 | Sort m3u channels | Sort the selected group according to the pattern |
| 10 | Load Jason | Load a numbered .jason / .json list |
| 11 | Save Jason | Save the Jason list with fresh numbering |
| 12 | Sort Jason | Sort the Jason list according to the pattern |
| 13 | Select all | Check ✓ on all entries |
| 14 | Deselect all | Remove ✓ from all entries |
| 15 | Move up | Move the highlighted entries up |
| 16 | Move down | Move the highlighted entries down |
| 17 | Delete selected | Delete highlighted and checked entries |
| 18 | Tools | Housekeeping menu (chapter 9) |
| 19 | Stream Tester | Stream availability test with colour-coded results |
| 20 | Clear | Clear the search box and restore the full list |
| 21 | Connect & Load | Xtream Codes login and channel loading |
| 22 | Start / Stop server (M3U TV) | Start and stop the local playlist server |
Files created by the program
| File | Purpose |
|---|---|
channel_template.hpl | The channel order pattern saved next to the program with button (7). JSON format: {"format": "HPL_LIST", "source": "ENIGMA2", "channels": [...]}. |
playlist.m3u | Default LIVE + VOD output file of the Download .m3u tab (next to the program). |
playlist_series.m3u | Default series episodes output file (next to the program). |
.m3u, .txt, .csv, .jason files | Written only to locations chosen by the user (buttons 2, 4, 11 and Export report). |
15. Troubleshooting
The program does not start - "Access denied" window
The computer is not on the list of authorised machines (chapter 2). Send the detected MAC addresses and the MachineGuid shown in the error window to the program vendor.
Load from URL returns an error or an empty response
- Check that the address starts with
http://orhttps://and works in a browser / VLC. - Some providers require a specific User-Agent - keep the default value or enter your IPTV app's identifier.
- Verify that the provider account is active and the concurrent connection limit is not exceeded.
Sorting (9) or (12) does not work
- "Load channel pattern (6 or 8)" - load a pattern first: an Enigma2 bouquet (6) + Save pattern (7), or a ready pattern file (8).
- "Select one M3U group to sort" - select exactly one group in the tree (applies to button 9).
- "No matching channels found" - the list names differ too much from the pattern (match threshold 0.88). Bulk rename in Tools helps to unify the names.
"No data to save - convert first"
Save as... (4) stores the conversion result - click Convert -> Enigma2 (3) first.
The M3U TV server does not start or the TV cannot load the list
- Load a channel list first - an empty program has nothing to share.
- Port
8899may be taken by another program - close it or restart the PC. - Allow the program through Windows Firewall on the private network.
- The TV must be on the same network; disable client isolation in the router / guest Wi-Fi.
- The program must keep running while the list is used on the TV.
The Stream Tester shows only FAIL / WARN
Some IPTV servers reject short probe requests (WARN for 401/403/405 codes) - the channel may still play in a player. Also check the account validity and the provider's connection limit.
Xtream login failed
- Enter the host with its port, e.g.
http://server.com:8080(no trailing slash). - Check the username and password; the
auth=0message means rejected credentials or an expired account. - Select at least one data type: Live TV, VOD or Series.
"Invalid Jason file format"
The file must be valid JSON with the structure described in chapter 7 (a dictionary of numbered entries with the name / link / icon / target fields).