mrkeyoor.com_
Sun 20 Sept 15:51 UTC
Self-Hostedevaluationupdated 20 Sept 2026

iptv review

iPTV is a Chinese-documented self-hosted live-TV source manager; the README and repository guides are in Chinese, and the current tree has no English guide. It gathers platform extractors, direct links, and M3U or TXT subscriptions into editable channel groups, then serves M3U, TXT, and EPG outputs to televisions and media players.

Verdict

Our iPTV install passed all 9 tests in 28 seconds, but npm audit also found 4 high-severity vulnerabilities, so patch review is part of deployment rather than an optional cleanup. Use it on a protected home network if you read Chinese, understand which streams you may relay, and value its source-specific handling more than a static playlist. Wait or choose a narrower proxy if you need a quiet appliance, English support, or a clean dependency audit.

We ran it

Lab card: what happened when we ran iptvScreenshot of iptv (ifansclub.com)
Install✓ · 28s129 packages · 71 MB
Buildn/ano build script
Tests✓ · 28s9 passed · 0 failed of 9 (node:test)
Known vulns40 critical · 4 high · 0 moderate · 0 low (npm audit)
Repo266 files~44,706 lines of source · 15.3 MB · 1 CI workflows · Dockerfile

Answers from our run

Does iptv build from source?

Dependencies installed in 28 seconds (129 packages), and the project has no separate build step. We cloned commit 4e49dbf into a clean Debian container with 3 CPUs and no project-specific setup.

Do iptv's tests pass?

Yes: 9 of 9 passed when we ran the project's own test command (node:test). Some failures need services or credentials a bare container does not have.

Does iptv have known vulnerabilities in its dependencies?

npm audit flagged 4 known advisories in the dependency tree at the time of our run.

Who should not use iptv?

Anyone seeking English documentation: the main guide, external-source guide, interface text, and operating notes are Chinese.

What are the alternatives to iptv?

Threadfin, xTeVe, Jellyfin. Our iPTV install passed all 9 tests in 28 seconds, but npm audit also found 4 high-severity vulnerabilities, so patch review is part of deployment rather than an optional cleanup.

Setup3/5Compose is short; credentials, proxies, and players add real work
Docs4/5Exceptionally detailed Chinese guide with no English counterpart
Community4/5796 stars, current releases, and active issue discussion
Maturity3/59 tests passed, but 4 high-severity advisories remain

Who it’s for

Chinese-reading NAS owners who want one browser panel for several legally accessible live-TV sources.
Households that need different channel profiles for separate televisions or users.
Operators comfortable diagnosing HLS redirects, proxy modes, expiring platform sessions, and player compatibility.
People who already have permission to use every stream and account they add.

Who it’s NOT for

Anyone seeking English documentation: the main guide, external-source guide, interface text, and operating notes are Chinese.
Operators who cannot review dependency advisories before deployment: our npm audit found 4 high-severity known vulnerabilities.
People who want guaranteed channel availability: open issues report a sports source playing the wrong station, Migu high-quality playback failures, and Bilibili streams dropping briefly.
Users who cannot determine whether a stream may legally be copied or relayed: the README says public accessibility does not grant broadcast or commercial-use rights.
Beginners planning to expose the default port directly to the internet: the sample leaves mpass empty, and its optional password is carried in the URL path.

Setup reality

Our sandbox installed commit 4e49dbf in 28 seconds, adding 129 packages and using 71 MB. There was no build target, so that step was skipped. The test command finished in 28 seconds with 9 passed and 0 failed. Npm audit found 4 known vulnerabilities, all high severity.

Docker Compose is the documented path: expose port 1905, mount ./data at /iptv/data, and open the browser admin page. Local use needs Node.js 20 or newer, with 22 LTS recommended. Public sources work without credentials; higher quality and member channels may require your own cookies or tokens.

Some modules need mainland China network access, Chromium, or server-side media proxying. The optional mpass protects every route through a password path, while mhost controls public URLs. Full proxy mode shifts video bandwidth onto your server, and headless browser workers add memory pressure on small NAS hardware.

More than 800 channels can arrive through one service

The README says a default deployment can aggregate more than 800 channels, though the actual count changes with source status, region, and enabled modules. iPTV combines direct HLS links, imported M3U or TXT subscriptions, public listings, and extractors for Chinese video and broadcaster sites. It then deduplicates and groups the results, generates an EPG, and serves standard playlists to TVs, phones, or computers. This is a working channel control plane, not merely a large M3U file.

Playback can take 3 routes. Standard playlists leave compatible media on the shortest path. A compatibility option relays manifests when players do not follow redirects, while full proxy mode can send supported video segments through the server. Individual modules may force proxying to add a required request header or refresh a signed address. That design rescues awkward players and upstreams, but it also makes server bandwidth and source-specific failure behavior part of the viewing experience.

Four admin pages separate sources from channel presentation

The browser panel has 4 main pages. Source Management controls platform modules, direct links, web extraction, and imported subscriptions. My Channels handles groups, names, ordering, hidden items, and separate profiles. Settings covers aliases, EPG sources, user tokens, and backup or restore. The final page shows version information. Keeping source acquisition apart from the visible lineup is the project's best idea because one broken extractor need not ruin every television's arrangement.

Credentials raise the stakes. Some free channels need no account, while higher quality or member feeds may ask you to import a cookie or token from an account you own. The README says credentials remain in the deployment and describes source-specific storage, including a dedicated Chromium profile for one login flow. Back up /iptv/data carefully, restrict who can download configuration exports, and assume the persistent directory contains information worth protecting even when a playlist itself looks harmless.

What happened when we ran it

Our sandbox installed commit 4e49dbf in 28 seconds, adding 129 packages and using 71 MB on disk. The checkout contained 266 files, about 44,706 source lines, and occupied 15.3 MB. No build script or target existed, so the harness skipped that step. The project's test command completed in 28 seconds with 9 passed and 0 failed out of 9.

The dependency audit was the bad result: npm reported 4 known vulnerabilities, all high severity, with 0 critical, moderate, or low findings. The supplied measurement does not identify which package caused each advisory, so blaming Puppeteer, QR generation, or an HTTP client would be guesswork. Treat the audit as a deployment stop that needs package-level review and retesting. The repository has 1 CI workflow plus a Dockerfile and Compose file, but no conventional tests directory.

Port 1905 belongs behind a private network or deliberate edge

The sample Compose file publishes port 1905 and leaves mpass blank. Setting it makes every service URL carry a password path and returns 403 when the path is absent. That is better than an open admin panel, though a secret embedded in a URL can appear in browser history, access logs, shared playlists, or reverse-proxy records. For access beyond the LAN, add HTTPS at a controlled edge and decide whether URL-path access control meets your threat model.

Small NAS boxes also need a resource plan. The Compose notes estimate each Chromium process at roughly 200 to 400 MB and suggest reducing browser concurrency to 1 when memory is 2 GB or less. Full proxy mode consumes video bandwidth, while standard mode lets players contact upstream CDNs. Several sources depend on mainland China network reachability, expiring addresses, or player codecs. A green container log cannot prove that a particular TV can decode every channel.

Version 4.15.0 is active, and upstream breakage stays visible

Version 4.15.0 was released on September 13, 2026, and the repository was pushed again on September 19. GitHub showed 796 stars, 254 forks, and 13 open issues when fetched. The latest release added 19 Hong Kong, Taiwan, Heilongjiang, and Yunnan streams, while the next push added line selection for GOOD TV. This is active maintenance at a pace that matches the number of moving upstreams.

Issue activity shows why that pace is needed. Issue 135 says a sports entry plays a different station. Issue 134 reports that Migu playback works only after dropping to 480p, and issue 125 describes Bilibili interruptions that can make a TV app skip ahead. Another NAS report can load channel logos yet never start playback. These are not all core application defects, but that distinction offers little comfort during a failed match. Expect diagnosis, source switching, and occasional updates.

GPL-3.0 covers the code, not the television rights

The repository code uses GPL-3.0-only, while the 800-plus channel claim includes outside media, names, logos, guide data, and URLs with separate owners. The README states that public reachability and a successful availability check do not establish permission to copy, rebroadcast, sell, or use a stream commercially. It also provides mblank=true for an empty deployment, letting you disable bundled material and add only sources whose rights you understand.

For a Chinese-reading home operator, iPTV solves a difficult problem with unusual specificity. It knows when to refresh a signed URL, inject a source header, proxy a manifest, or leave media on the direct path. Those strengths also make it a restless appliance. Start blank or with a small legal lineup, keep port 1905 private, and resolve the 4 high-severity advisories before trusting saved account sessions to it. If you only need to filter one stable playlist, Threadfin or xTeVe asks far less of you.

Alternatives

ProjectWhat it isPick it when
ThreadfinAn M3U proxy and tuner bridge aimed at Plex, Emby, and Jellyfin setups.pick this instead when you already have a lawful playlist and mainly need filtering plus media-server integration.
xTeVeA lightweight IPTV proxy that presents M3U channels as a tuner for media servers.pick this instead when a simple tuner bridge matters more than platform-specific scraping and account flows.
Jellyfin gh↗A full media server with live-TV support alongside a personal movie and music library.pick this instead when playback and owned media management matter more than source extraction.

What people are saying

  1. [github-trending] akiralereal/iptv
  2. [github-trending] Free-TV/IPTV
  3. [velocity-scout] Free-TV/IPTV
  4. [github-trending] iptv-org/iptv

Sources

  1. iPTV README
  2. iPTV v4.15.0 release
  3. iPTV Docker Compose example
  4. Wrong sports channel issue
  5. Migu playback issue

More self-hosted reviews

Bubble-Card · ace-step-ui · alist · tunnel-client · karmada · OpenStock · the whole board →