Open-source project
4gray/iptvnator avatar
4gray/iptvnator

IPTVnator: a cross-platform IPTV player for m3u, Xtream Codes and Stalker portals

:tv: Cross-platform IPTV player application with multiple features, such as support of m3u and m3u8 playlists, favorites, TV guide, TV archive/catchup and more.

7,210 stars922 forksTypeScriptMIT

At a glance

What is it?
IPTVnator is an MIT-licensed Electron and Angular player that imports m3u/m3u8 playlists, Xtream Codes and Stalker portals, adds an XMLTV guide, catch-up and downloads, and ships both as a desktop app and an installable PWA. It plays content you already have; it does not supply any.
Who is it for?
Adopt IPTVnator if you already hold an m3u/m3u8 playlist, an Xtream Codes or Stalker portal account, or an XMLTV guide URL, and you want one desktop player with a channel grid, EPG ribbon, catch-up and a download manager. Do not adopt it expecting bundled channels: the README states plainly that the project provides no playlists or other digital content, and the repository carries a TRADEMARK.md, so check that file and LICENSE.md before shipping a fork under the name.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The problem IPTVnator solves: turning raw playlists into a watchable app

An IPTV subscription usually arrives as a URL that returns a long m3u file, sometimes with an XMLTV guide alongside it. VLC will open that URL, but it gives you a flat list of thousands of entries with no groups, no guide, no favourites and no watch history. IPTVnator is aimed at exactly that gap. It is a player for content you already have, not a source of content: the README carries a warning that the application does not provide any playlists or other digital content, and that the channels in its screenshots are for demonstration only. The same README opens with an official-sources notice stating that IPTVnator never sells subscriptions, channels or playlists, and that sites offering "IPTVnator subscriptions/channels/premium/activated" builds are not affiliated with the project. The audience is therefore narrow and specific: people who hold a playlist or a portal account and want a desktop client with a real interface around it. Everything else in the feature list follows from that premise.

How the Electron app, the PWA and the web backend fit together

The README describes IPTVnator as a cross-platform, open-source project built with Electron and Angular, and the repository layout supports that: apps/, libs/, electron-builder.json and ngsw-config.json sit at the top level, and the build scripts split into build:frontend (nx build web), build:frontend:pwa (the same target with --configuration=pwa) and build:backend (nx build electron-backend --configuration=production). The Angular front end is the same code in both cases; the PWA build is what the service worker configuration serves, and the Electron backend is what supplies the desktop-only capabilities. That split explains the feature list rather than being a marketing detail. EPG with a live timeline ribbon and multi-channel grid, TV archive and catch-up, the download manager for offline movies and episodes, global search across live TV, movies and series, the desktop auto-updater and the mobile remote control are all marked (desktop) in the README. The PWA gets playlists, playback and the web-facing parts. Sources are imported from a remote URL or from a local file, and the README states that playlists update automatically on startup. Playback runs through a built-in HTML5 player using HLS.js or Video.js, with an experimental unified control layer for HTML5, Video.js and ArtPlayer enabled under Settings, Playback. On desktop the app can also hand a stream to MPV, VLC or IINA, or render MPV inside the app window, which the README labels experimental. A dedicated radio player handles streams tagged radio="true".

Installing IPTVnator and loading a first playlist

The README does not document a package-manager install command. It points to the official website and the GitHub Releases page for the application, and the repository topics list snap among the packaging targets, so the honest answer is that binaries come from releases rather than from a documented apt or brew line. Building from source is the alternative the repository itself supports. The package.json declares node ^22.22.3 || ^24.15.0 and the workspace uses pnpm, so a source checkout starts like this:

bash
pnpm install
pnpm run build:frontend
pnpm run serve:frontend

The install step runs a postinstall hook, electron-builder install-app-deps, which rebuilds native dependencies for Electron. If you only want the browser build, nx build web --configuration=pwa produces the PWA bundle that ngsw-config.json configures. To see the backend and a mock Xtream server together, the repository provides a script for that:

bash
pnpm run serve:marketing-demo

That runs the xtream-mock-server and electron-backend projects in parallel. For a first real use, open the app, choose to add a playlist, and supply either a remote m3u URL or a local file. If your provider issues Xtream Codes or Stalker/Ministra credentials, add them as that source type instead, and set a custom User-Agent per playlist if your provider filters on it. The README states that playlists refresh automatically on startup, so a stale list usually corrects itself on the next launch. Press ? or Shift+/ inside the workspace to see the shortcut list; Ctrl/Cmd+K opens the command palette, and Ctrl/Cmd+F opens global search in the desktop app.

Where IPTVnator stops: DRM, missing install docs and desktop-only features

The most concrete limitation is one the README states rather than hides: the project supplies no content. If you have no playlist or portal account, IPTVnator has nothing to show you, and no amount of configuration changes that. The second is the desktop/PWA split. Catch-up, the EPG grid, the download manager, global search, the auto-updater and the remote control are desktop features; a browser install of the PWA will not have them. Third, the README marks two of the more interesting playback paths as experimental: the unified control layer for HTML5, Video.js and ArtPlayer, and embedded MPV. Treat those as subject to change between releases. Fourth, the README does not document DRM handling anywhere. Streams that require a Widevine-style licence will not play through an HTML5 player, and the external-player route does not fix that either, since the licence exchange still has to happen. Fifth, the install story is thin for anyone who expects a package manager: the README gives no apt, snap or brew command, so distribution packaging is something you verify per platform rather than assume. Finally, the project's own documentation is silent on several operational questions, including rollback: the README does not describe how to revert to a previous version after an auto-update.

IPTVnator compared with a general-purpose media player

The obvious alternative is a general media player such as VLC or MPV, pointed directly at the m3u URL. The difference in approach is real, not cosmetic. VLC treats the playlist as a text file of entries and plays the one you select; it has no concept of your Xtream account, no XMLTV timeline, no per-playlist favourites, no catch-up window and no watch history. IPTVnator builds a data layer on top of the same streams: it groups channels, tracks resume positions for VOD, aggregates favourites across playlists, and enriches movie and series metadata through TMDB. That enrichment is opt-in and requires your own TMDB API key, which is a deliberate choice: the app does not ship a shared key that could be rate-limited or revoked. The trade-off runs the other way too. VLC will open almost any container and codec you throw at it, and it does not care whether the URL is an IPTV stream. IPTVnator is narrower by design, and its playback paths are the ones listed in its README. If your need is "play this odd file once", the general player wins. If your need is "keep a 20,000-entry playlist organised with a guide", the general player gives you none of that.

Licence, self-hosting and what an upgrade actually costs

IPTVnator is MIT-licensed, and package.json carries "license": "MIT" with LICENSE.md at the repository root. MIT is permissive, so forking and redistributing modified builds is allowed under that licence, but the repository also contains TRADEMARK.md, which is a separate document from the licence and governs use of the project name. Read both before publishing a fork under the IPTVnator name; the licence and the trademark are not the same permission. The README's official-sources notice reinforces this, since unofficial builds are already a problem the project has written about. On maintenance, the last push to the default branch was on 2026-09-21, and the most recent release listed is v0.23.0 from 2026-08-30, with v0.22.0 on 2026-07-05 and v0.21.0 on 2026-05-06. That is a regular cadence across the three releases shown. Upgrade cost depends on how you run it. Desktop users get an auto-updater, so the cost is the risk of an unattended change plus the absence of a documented rollback path. Self-hosters running the Docker setup for the PWA and web backend carry the usual cost of rebuilding an image and checking ngsw-config.json behaviour after a service-worker change. Anyone building from source should watch the Node engine range in package.json, since it pins ^22.22.3 || ^24.15.0, and the repository includes a dependency check script, pnpm run deps:nx:validate, that verifies Nx version sync across the workspace.

Editorial conclusion

Adopt IPTVnator if you already hold an m3u/m3u8 playlist, an Xtream Codes or Stalker portal account, or an XMLTV guide URL, and you want one desktop player with a channel grid, EPG ribbon, catch-up and a download manager. Do not adopt it expecting bundled channels: the README states plainly that the project provides no playlists or other digital content, and the repository carries a TRADEMARK.md, so check that file and LICENSE.md before shipping a fork under the name. Verify first that your provider exposes the Xtream or Stalker endpoints the app expects, that your streams are not DRM-protected, and that you are willing to build from source, since the README documents no package-manager install command and points only to the official website and GitHub Releases for binaries.

Frequently asked questions

What is IPTVnator?

It is a cross-platform, open-source video player application for IPTV playlist playback, built with Electron and Angular. It imports m3u and m3u8 playlists from remote URLs or local files, supports Xtream Codes and Stalker/Ministra portals, and can display EPG information in XMLTV format from a URL.

How do I install IPTVnator on Windows?

The README does not document a package-manager command. It directs users to the official website and the GitHub Releases page for the application, and the repository topics list snap among the packaging targets. Building from source requires Node ^22.22.3 || ^24.15.0 and pnpm.

How do I use IPTVnator?

Add a playlist by remote URL or by uploading a file from the local file system, or add an Xtream Codes or Stalker/Ministra source if your provider issues those credentials. Playlists update automatically on startup, and Ctrl/Cmd+K opens the command palette while ? or Shift+/ shows the shortcut list.

Is there an IPTVnator alternative for Linux?

A general media player such as VLC or MPV can open the same m3u URL, but it has no Xtream account handling, no XMLTV timeline, no per-playlist favourites and no catch-up window. IPTVnator adds those on top of the streams you already have, and its README also allows handing playback to MPV, VLC or IINA on desktop.

Official sources

  1. 4gray/iptvnator on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/4gray-iptvnator.svg)](https://hysenlabs.com/projects/4gray-iptvnator)