The command line
Two command line tools come with the studio. The installer can put them on your PATH, so they run from any Command Prompt or PowerShell window.
Both answer in JSON on standard output, so they fit in scripts and scheduled tasks. Several commands can go on one line: they run one after the other, each working on what the one before it left, and the answer is a JSON list with one object per command. The first one that fails is the last one that runs, and the exit code is then 1.
"help" after either tool's name lists everything it can do.
Several commands on one line
M3UEditorCLI open_xtream http://host:8080 user pass filter news number save news.m3u Opening something in the studio
M3UEditor.exe playlist.m3u
M3UEditor.exe https://example.com/playlist.m3u
M3UEditor.exe --portal=http://portal.example.com/c/ --mac=00:1A:79:00:00:00 If the studio is already running, what you open goes to the window that is already there.
M3UEditorCLI: getting a playlist
| Command | What it does |
|---|---|
| open <file> | A playlist file |
| open_url <url> | A playlist on the web |
| open_xtream <url> <user> <password> | An Xtream Codes account |
| open_portal <url> <mac> [live|movies|series] | A Stalker portal |
| open_iptvorg <category|language|country> | The iptv-org lists |
| save <file> | Write the playlist as M3U |
| info | Count its groups and streams |
M3UEditorCLI: changing it
| Command | What it does |
|---|---|
| filter <text> | Keep only streams whose name has it |
| number | Number the channels (tvg-chno) |
| assign_epg <codes.json> | Set tvg-id from [{"name":"code"}] |
| add_youtube <url> [name] [group] | Add a YouTube video as a stream |
M3UEditorCLI: checking and merging
| Command | What it does |
|---|---|
| validate [<file>] | Broken entries and duplicates |
| dedupe <input> <output> | Drop later copies of the same stream |
| compare <mine> <theirs> | What theirs adds, removes and changes |
| merge <mine> <theirs> <output> | Apply all of it |
dedupe and merge keep a copy of the playlist in a .backups folder beside it first.
M3UEditorCLI: providers, libraries and assistants
| Command | What it does |
|---|---|
| list_profiles | The provider profiles you set up |
| sync_profile <name> | Bring one up to date |
| sync_all [--due-only] | All of them, or only those due |
| strm [<file>] --out=<folder> [--movies|--series] [--group=NAME] [--no-nfo] [--prune] | A library of .strm files |
| mcp [--playlist=<file>] [--trace] | An MCP server (see AI assistants) |
| activate <key> | Enter the licence key |
validate and strm work on the playlist the command before them opened when no file is named.
M3UEditorCLI examples
M3UEditorCLI validate playlist.m3u
M3UEditorCLI open_url https://example.com/list.m3u filter sport save sport.m3u
M3UEditorCLI open_portal http://portal.example.com/c/ 00:1A:79:00:00:00 movies strm --out=D:\Library
M3UEditorCLI compare mine.m3u provider.m3u
M3UEditorCLI merge mine.m3u provider.m3u merged.m3u
M3UEditorCLI sync_all --due-only sync_all --due-only is made for Task Scheduler: run it every hour and each profile is brought up to date as often as you set it to be.
RecordingCLI: recordings and downloads
RecordingCLI works on the studio's own recording schedule and download queue. Whatever you book or queue with it shows in the studio, and the other way round.
Recordings are made by whichever is running: the studio while it is open, and "RecordingCLI run" while it is not. The two tell each other what they are doing. When you open the studio, RecordingCLI run hands everything over to it - at once, or as soon as what it is recording has finished - and when you close the studio, RecordingCLI run takes over again. Nothing is recorded twice, and a download that was handed over carries on where it stopped.
RecordingCLI: recordings
add <url> --start=<when> (--stop=<when> | --minutes=<n>)
[--title=<text>] [--channel=<text>] [--container=<kind>]
[--pad-before=<min>] [--pad-after=<min>]
record <url> (--minutes=<n> | --stop=<when>) [--title=<text>]
[--container=<kind>] [--no-wait]
list [--waiting] every booking, or only those still to come
remove <id> take a booking out that is not recording
stop <id> stop one that is recording; what it recorded is kept record books it from now and waits until it has been recorded, whoever records it. An <id> can be cut short to its first few characters.
<when> is "now", a date and a time such as 2026-10-03 20:30, or a time on its own, which means the next time the clock says it. <kind> is auto, mp4, mkv, ts or flv for video, and audio, mp3, aac, m4a or mka for radio; left out, the studio's Recording setting decides.
RecordingCLI: downloads
| Command | What it does |
|---|---|
| downloads | What is downloading, or waiting to |
| download <url> [--title=<text>] | Queue a download |
| pause <name> | Or pause --all |
| resume <name> | Or resume --all |
| cancel <name> | Or cancel --all |
A <name> is the name "downloads" shows. With neither the studio nor RecordingCLI run going, a new download waits in the queue until one of them starts.
RecordingCLI: running in the background
| Command | What it does |
|---|---|
| run [--until-idle] | Record and download while the studio is closed |
| status | What is running, what is recording, what is next |
| activate <key> | Enter the licence key |
run keeps going until you press Ctrl+C, or with --until-idle until nothing is left to record or download. Like the studio, it keeps the computer from going to sleep while recordings are booked, and sets it to wake up a minute before the next one.
To record whenever the studio is closed, start it when you sign in
- Put a shortcut to "RecordingCLI.exe run" in your Startup folder (press Windows+R, type shell:startup and press Enter), or
- In Task Scheduler, create a task that runs RecordingCLI.exe with the argument run "At log on".
RecordingCLI examples
RecordingCLI record http://host/live/123.ts --minutes=90 --title="Evening news"
RecordingCLI add http://host/live/7.ts --start="2026-10-03 20:30" --minutes=60 --title=Match
RecordingCLI add http://host/1.ts --start=20:00 --minutes=30 add http://host/2.ts --start=21:00 --minutes=45 list --waiting
RecordingCLI list --waiting
RecordingCLI stop 3f2a
RecordingCLI download http://host/movie/42.mkv --title="A film (2024)"
RecordingCLI pause --all
Frequently asked questions
What does ERD-Playlist Studio do?
ERD-Playlist Studio builds and looks after IPTV playlists. Open a playlist from a file or from your provider, tidy it up, check which channels still work, match it to a TV guide, and watch, record and download what is on it.
What do I need to run ERD-Playlist Studio?
- Windows 10 or later.
- A 64-bit PC (x64), a Windows on Arm PC (arm64) or a 32-bit PC (x86).
- Administrator rights to install.
- Windows' own media support.
The player says "Windows cannot decode this". What can I do?
The player uses the decoders built into Windows. The "N" editions of Windows ship without Windows' own media support: there the studio starts and works, but the player says "Windows cannot decode this" until you add the Media Feature Pack from Windows' Optional features. When Windows has no decoder for a single track, the player names it (for example "HEVC: no decoder on this computer") and plays the rest of the stream.
Where can a playlist come from?
A file you have (M3U, Smart IPTV, Enigma/Dreambox bouquets, XSPF, ASX, WPL or PLS), an address from your provider, an Xtream Codes account, a Stalker (Ministra) portal, the free channels of iptv-org or radio stations from radio-browser.info.
Which formats can I save and export to?
Save and Save As write M3U (.m3u or .m3u8), Smart IPTV, Enigma/Dreambox, ASX, WPL, PLS or XSPF. Export also writes the ticked groups as an HTML, CSV, JSON, Markdown or XML report. Files are written as UTF-8 text.
Can I undo changes to a playlist?
Yes. Every change to a playlist can be undone with Undo (Ctrl+Z) and done again with Redo (Ctrl+Y), each playlist keeping its own history. Bigger jobs, such as an import, a find and replace or a sort, are one step each. Locking is not an undo step.
How do I find out which channels still work?
Run Stream > Stream Checker... It tries every stream of All Groups or one group and marks each with a green star (online) or a red one (offline). It then reads up to 50 of the streams that answered, and a stream that is not what it says gets a violet star. Delete offline streams removes what was found offline, and can be undone.
What do the coloured stars mean?
Grey: not changed. Blue: changed. Green: online. Red: offline. Violet: not what it says it is. An orange star before a name marks a favourite; a red star after a name marks a locked stream.
How do I merge my provider's new playlist into my own?
Use Tools > Playlist Health Center.. and choose Compare with a provider playlist and apply selected changes. You see every stream the other playlist Added, Removed or Modified, all ticked; untick what you want to keep as it is and press Next to apply the rest. Tick Save as provider profile to keep comparing with that source on a schedule.
How do I keep a playlist up to date with my provider automatically?
Set up a provider profile with Tools > Provider Profiles... While the studio is open it looks every minute for enabled profiles that are due, and brings them up to date in the background. Profiles can also be brought up to date with the studio closed, with M3UEditorCLI sync_all --due-only in Task Scheduler.
Can a provider profile empty my playlist by mistake?
No. When the provider sends back an empty playlist while your target has streams in it, the run stops rather than emptying your playlist. Before any change is made, a snapshot of the target is kept, and the new playlist is only put in place once it has been read back and found sound.
How do I restore an earlier version of a playlist?
Before the Playlist Health Center or a provider profile changes a playlist, the studio saves a copy of it as it was. The last ten are kept for each playlist. Tools > Restore snapshot.. lists them, newest first; the one you pick opens as a separate playlist called Restored- followed by the name.
How do I match my channels to a TV guide?
A guide finds a channel by its tvg-id. Choose an EPG code set (SmartIPTV, BaZnGa or DiamondTV) under Settings > TV guide, then use Tools > Assign EPG Codes.. to write the best match into tvg-id for all groups or one group. The TV Guide ID editor (the "..." beside tvg-id) does the same for one stream.
The TV Guide shows data for only a few of my channels. Why?
The status bar says how many of the playlist's channels the guide actually has data for. A low number usually means the channels' tvg-id tags do not match the guide.
All the times in the guide are an hour out. How do I fix that?
Set Settings > Guide alignment > Guide time offset (minutes, may be negative). Guide alignment is an expert page: tick Show expert settings under Settings > Common to see it. For a single channel, right-click its name in the guide and choose Guide offset.
Can I pause live TV?
Yes. Press Space to pause a live channel; the player keeps recording it into a buffer on disk, so you can carry on where you paused. The size of the buffer is "Live TV kept for pausing (MB, 0 is off)" on the Playback settings page, 512 MB unless you change it.
Can I watch a programme that has already been on?
When your provider keeps catch-up for a channel and the TV Guide knows what is on, Backspace offers the programme on now from its start, and going back past the pause buffer offers the programme at that moment. Press Y to switch.
Which streams can the player not play?
rtsp, rtmp, srt and mms addresses cannot be opened, and the player says so. Neither can streams protected with DRM.
Can I play a stream on my television?
Yes, with Send to TV. It finds Chromecasts, Google TVs and televisions with Google Cast built in, AirPlay receivers such as an Apple TV, and DLNA televisions and players on your network. To put a whole playlist on a television running the Smart IPTV app, use Tools > Send to Smart IPTV...
Can I record while the studio is closed?
Yes. With "RecordingCLI run" going in the background, bookings are recorded and downloads carry on while the studio is closed, and the two hand the work back and forth by themselves. Series rules need the studio, because it reads the guide.
Will my computer wake up for a recording?
While recordings are booked or running, the studio keeps the computer from going to sleep, and sets it to wake up a minute before the next booking. If Windows will not allow either, you are told when you book, so you can leave the computer on or turn on wake timers in the Windows power plan.
What happens when my provider only allows a few connections?
The studio asks the provider (Xtream Codes accounts say) and holds a recording or download back until a connection is free rather than having it refused. When more recordings are due than there are connections, the one with the higher Priority goes first.
Can Kodi, Plex, Emby or Jellyfin use my playlist's films and series?
Yes. Tools > STRM Library.. writes the playlist's films and series as a library of small .strm files that Kodi, Plex, Emby or Jellyfin can list and play without anything being downloaded, with .nfo files if you like. Downloads can also carry an .nfo file beside them.
Do I need accounts for film details and subtitles?
TMDB and TVDB both need a free account of your own; put the keys under Settings > Databases. No key ships with the studio, and a database with no key is simply not asked. Keys are stored encrypted for your Windows account. Subtitles come from OpenSubtitles.com with your own OpenSubtitles API key under Settings > Subtitle search; with no key nothing is fetched, and a user name and password are optional. CDDB and MusicBrainz need no account.
Is my Trakt password stored in the studio?
No. Connect.. under Settings > Trakt shows a code to type on Trakt's website; your Trakt password is never asked for.
How can I lock channels from children?
Right-click a group or streams and choose Lock, and set a code under Settings > Parental lock. From then on, watching a locked stream, sending it to a TV, or recording or downloading it asks for the code first. The lock is written into the playlist file; the code is kept on this computer only and never written into a playlist.
Which languages does ERD-Playlist Studio speak?
Fifteen: English, Dutch, German, French, Spanish, Italian, Portuguese (Brazil), Portuguese (Portugal), Polish, Turkish, Russian, Ukrainian, Greek, Romanian and Swedish. Choose one under Settings > Common > Language and press OK; the whole program changes at once, without restarting.
Can I open two playlists in separate windows?
Yes. Untick "Allow only one instance" under Settings > Instances (an expert page). With more than one window open, the first one looks after the recording schedule, the unattended refresh of your provider profiles, the download queue and the AI assistant connection. Only that window records and downloads, so nothing is done twice.
Can I use ERD-Playlist Studio from scripts?
Yes. M3UEditorCLI works on playlists and RecordingCLI on recordings and downloads. Both answer in JSON on standard output, and several commands can go on one line. "help" after either tool's name lists everything it can do.
Can an AI assistant work with my playlists?
An AI assistant that supports the Model Context Protocol (MCP) can read and edit your playlists, book recordings and look after your downloads: either on the playlist open in the studio (Settings > AI assistants, off by default, only programs on this computer can connect), or on any playlist file with M3UEditorCLI mcp.
Is a licence key needed?
Yes. ERD-Playlist Studio needs a valid licence key to run. Enter it with Help > Activate License..; the command line tools use the same key. Please do not share your key: a key that is shared can be revoked.
Are updates checked to be genuine?
Yes. Before anything is offered, the answer from the update server is checked to be genuine, and the downloaded installer is checked against it before it runs. An update can never take you back to an older version, and your settings are kept.
What does uninstalling leave behind?
The uninstaller leaves your own things where they are: your settings, caches and kept guides, recording schedule and download queue, logs, earlier versions of your playlists, and every recording and download. To start completely afresh, delete the program's folder in your local application data folder and in your Documents folder.