默认账号密码均为 admin,默认端口 36400,暴露公网前务必修改;All-in-One 部署不支持硬件加速,需要加速请用 proxy 分离部署;使用 Schedules Direct 需另行配置账号。
m3u-editor
m3ue活跃维护一站式 IPTV 编辑器,可管理 M3U 播放列表和 EPG 节目单,输出 Xtream API,并支持 .strm 文件同步与自定义脚本、Webhook 后处理。
A full-featured IPTV editor, including features similar to xteve or threadfin. With full EPG management, Xtream API output, ability to store and sync .strm files, post processing with ability to call custom scripts, send webhook requests, or send an email, and much more!
docker compose -f docker-compose.proxy.yml up -dREADME 未说明具体硬件要求;硬件加速需使用分离的 m3u-proxy 容器,All-in-One 单容器部署不支持硬件加速。
自托管的 IPTV 编辑器,类似 xteve/threadfin,管理播放列表、EPG 与 Xtream 输出
一站式 IPTV 编辑器,可管理 M3U 播放列表和 EPG 节目单,输出 Xtream API,并支持 .strm 文件同步与自定义脚本、Webhook 后处理。
核心能力
- 编辑 m3u、m3u8、m3u+ 与 Xtream Codes 播放列表
- 管理 XMLTV 本地/远程 EPG 并集成 Schedules Direct
- 输出 Xtream API 供播放器直接接入
- 同步 .strm 文件并管理剧集
- 后处理支持自定义脚本、Webhook 与邮件通知
容易踩的坑
- v0.14.1.1-devDev 0.14.1.1pre-release2026-11-09 · 2026-11-09 17:29 UTC
查看更新说明
What's Changed
Features
- feat(media-server): Emby/Jellyfin login via user auth (
1c823f958) - feat: Grant several credentials in one device pairing (
8abad0777) - feat: List every Arr integration per request search result (m3u-tv #137) (
aa92afec8)
Bug Fixes
- fix(xtream): qualify related-series columns for alias logins (#1822) (
87bbdd79f) - fix: check the connected IP on webhook requests to block DNS-rebinding SSRF (
8ad2f71a9) - fix: retain selected artwork roles across EPG exports (#1750) (#1757) (
89a9be92a) - fix: Honor Group Auto Sort on M3U playlists (#1821) (
1c486c88d) - fix: Stable get_dvr_recordings paging when start times tie (
af7d31ebe)
Maintenance
- chore: Pass IMDB ID with series/vod info endpoints (
4e908097c)
Docker Image
docker pull sparkison/m3u-editor:dev-0.14.1.1 - feat(media-server): Emby/Jellyfin login via user auth (
- v0.14.1.1-expExperimental 0.14.1.1pre-release2026-11-09 · 2026-11-09 17:28 UTC
查看更新说明
What's Changed
[!WARNING] This is an experimental release. Use at your own risk.
Features
- feat(media-server): Emby/Jellyfin login via user auth (
1c823f958) - feat: Grant several credentials in one device pairing (
8abad0777) - feat: List every Arr integration per request search result (m3u-tv #137) (
aa92afec8)
Bug Fixes
- fix(xtream): qualify related-series columns for alias logins (#1822) (
87bbdd79f) - fix: check the connected IP on webhook requests to block DNS-rebinding SSRF (
8ad2f71a9) - fix: retain selected artwork roles across EPG exports (#1750) (#1757) (
89a9be92a) - fix: Honor Group Auto Sort on M3U playlists (#1821) (
1c486c88d) - fix: Stable get_dvr_recordings paging when start times tie (
af7d31ebe)
Maintenance
- chore: Pass IMDB ID with series/vod info endpoints (
4e908097c)
Docker Image
docker pull sparkison/m3u-editor:experimental-0.14.1.1 - feat(media-server): Emby/Jellyfin login via user auth (
- v0.14.1最新正式版2026-11-06 · 2026-11-06 13:51 UTC
What's Changed
Features
- feat(sports): Add on-demand channel matching for the M3U TV app (
7329a8eef) - feat: Add support for TheSportsDB (
795e5bdd6) - feat: Add AED profile using ESPN API for automated EPG generation (
8f9a5b7c8) - feat: Add ESPN API support (
0aa4639d3)
Bug Fixes
- fix(vod): store the provider added date in the app timezone (
045a14258) - fix(series): store provider last_modified in the app timezone (
135962844) - fix(copilot): keep conversation switches from mixing streams or losing approvals (#1797, #1798) (
aa5db8ff1) - fix(series): stop overlapping metadata fetches deleting live episodes (#1819) (
dc67a397d) - fix(series): select metadata batches by id cursor, not offset (#1814) (
53a9210fc) - fix(probe): detect quality from width as well as height (#1807) (
b120b10ff) - fix(aiostreams): report manifest transport failures as connection failures (#1809) (
de7327d40) - fix(auth): reject expired Playlist Auths on M3U and HDHR output (#1817) (
96987cce9) - fix(playlists): repoint merged groups and categories when duplicating (#1816) (
a682eed62) - fix(easy-editor): scope the channels heading to the selected playlist and type (#1815) (
8eac4e0fb) - fix(merge): keep the valid channel name 0 in fallback matching (#1813) (
4bf309389) - fix: Rate limiting applying universally instead of per route (
7cb39bf8c) - fix(dvr): count each library file once, as measured on disk, in the disk quota (#1812) (
b540a92a9) - fix(dvr): give every recording its own output file (#1811) (
12f622a15) - fix(espn-api): Cache warming and response timeout fixes (
ec1b42caf) - fix(series): refresh expired provider covers on sync (#1810) (
c1cee7229)
Maintenance
- chore: Optimize Sports API fetching (
0b5584a46) - chore: Show override and provider group names in processing pick lists (
b0faf5439) - chore: Cleanup and optimize match cards and details on Sports page (
e559dfa4b) - chore: Add sports view to parity M3U TV app sports screen (
1f99d809c) - chore: Add sports fixtures XAPI endpoint (
e4d18d859) - chore: Remove failing/flaky test (
ce8a9c864) - chore(dev-deps): Update deps to resolve CVE's (
6d1439689) - chore: Ensure busy game days don't drop games due to limits (
a4f953e07) - chore: Add missing league logo to API endpoint (
5582e17d9) - chore: Update ESPN AED profiles sync logic and add sync quick-action (
f900272bb)
New Contributors
- @macray76 made their first contribution in https://github.com/m3ue/m3u-editor/pull/1811
Full Changelog: https://github.com/m3ue/m3u-editor/compare/v0.14.0...v0.14.1
- feat(sports): Add on-demand channel matching for the M3U TV app (
- v0.14.1-devDev 0.14.1pre-release2026-11-06 · 2026-11-06 13:50 UTC
查看更新说明
What's Changed
Features
- feat(sports): Add on-demand channel matching for the M3U TV app (
7329a8eef) - feat: Add support for TheSportsDB (
795e5bdd6) - feat: Add AED profile using ESPN API for automated EPG generation (
8f9a5b7c8) - feat: Add ESPN API support (
0aa4639d3)
Bug Fixes
- fix(vod): store the provider added date in the app timezone (
045a14258) - fix(series): store provider last_modified in the app timezone (
135962844) - fix(copilot): keep conversation switches from mixing streams or losing approvals (#1797, #1798) (
aa5db8ff1) - fix(series): stop overlapping metadata fetches deleting live episodes (#1819) (
dc67a397d) - fix(series): select metadata batches by id cursor, not offset (#1814) (
53a9210fc) - fix(probe): detect quality from width as well as height (#1807) (
b120b10ff) - fix(aiostreams): report manifest transport failures as connection failures (#1809) (
de7327d40) - fix(auth): reject expired Playlist Auths on M3U and HDHR output (#1817) (
96987cce9) - fix(playlists): repoint merged groups and categories when duplicating (#1816) (
a682eed62) - fix(easy-editor): scope the channels heading to the selected playlist and type (#1815) (
8eac4e0fb) - fix(merge): keep the valid channel name 0 in fallback matching (#1813) (
4bf309389) - fix: Rate limiting applying universally instead of per route (
7cb39bf8c) - fix(dvr): count each library file once, as measured on disk, in the disk quota (#1812) (
b540a92a9) - fix(dvr): give every recording its own output file (#1811) (
12f622a15) - fix(espn-api): Cache warming and response timeout fixes (
ec1b42caf) - fix(series): refresh expired provider covers on sync (#1810) (
c1cee7229)
Maintenance
- chore: Optimize Sports API fetching (
0b5584a46) - chore: Show override and provider group names in processing pick lists (
b0faf5439) - chore: Cleanup and optimize match cards and details on Sports page (
e559dfa4b) - chore: Add sports view to parity M3U TV app sports screen (
1f99d809c) - chore: Add sports fixtures XAPI endpoint (
e4d18d859) - chore: Remove failing/flaky test (
ce8a9c864) - chore(dev-deps): Update deps to resolve CVE's (
6d1439689) - chore: Ensure busy game days don't drop games due to limits (
a4f953e07) - chore: Add missing league logo to API endpoint (
5582e17d9) - chore: Update ESPN AED profiles sync logic and add sync quick-action (
f900272bb)
Docker Image
docker pull sparkison/m3u-editor:dev-0.14.1 - feat(sports): Add on-demand channel matching for the M3U TV app (
- v0.14.1-expExperimental 0.14.1pre-release2026-11-06 · 2026-11-06 13:50 UTC
查看更新说明
What's Changed
[!WARNING] This is an experimental release. Use at your own risk.
Features
- feat(sports): Add on-demand channel matching for the M3U TV app (
7329a8eef) - feat: Add support for TheSportsDB (
795e5bdd6) - feat: Add AED profile using ESPN API for automated EPG generation (
8f9a5b7c8) - feat: Add ESPN API support (
0aa4639d3)
Bug Fixes
- fix(vod): store the provider added date in the app timezone (
045a14258) - fix(series): store provider last_modified in the app timezone (
135962844) - fix(copilot): keep conversation switches from mixing streams or losing approvals (#1797, #1798) (
aa5db8ff1) - fix(series): stop overlapping metadata fetches deleting live episodes (#1819) (
dc67a397d) - fix(series): select metadata batches by id cursor, not offset (#1814) (
53a9210fc) - fix(probe): detect quality from width as well as height (#1807) (
b120b10ff) - fix(aiostreams): report manifest transport failures as connection failures (#1809) (
de7327d40) - fix(auth): reject expired Playlist Auths on M3U and HDHR output (#1817) (
96987cce9) - fix(playlists): repoint merged groups and categories when duplicating (#1816) (
a682eed62) - fix(easy-editor): scope the channels heading to the selected playlist and type (#1815) (
8eac4e0fb) - fix(merge): keep the valid channel name 0 in fallback matching (#1813) (
4bf309389) - fix: Rate limiting applying universally instead of per route (
7cb39bf8c) - fix(dvr): count each library file once, as measured on disk, in the disk quota (#1812) (
b540a92a9) - fix(dvr): give every recording its own output file (#1811) (
12f622a15) - fix(espn-api): Cache warming and response timeout fixes (
ec1b42caf) - fix(series): refresh expired provider covers on sync (#1810) (
c1cee7229)
Maintenance
- chore: Optimize Sports API fetching (
0b5584a46) - chore: Show override and provider group names in processing pick lists (
b0faf5439) - chore: Cleanup and optimize match cards and details on Sports page (
e559dfa4b) - chore: Add sports view to parity M3U TV app sports screen (
1f99d809c) - chore: Add sports fixtures XAPI endpoint (
e4d18d859) - chore: Remove failing/flaky test (
ce8a9c864) - chore(dev-deps): Update deps to resolve CVE's (
6d1439689) - chore: Ensure busy game days don't drop games due to limits (
a4f953e07) - chore: Add missing league logo to API endpoint (
5582e17d9) - chore: Update ESPN AED profiles sync logic and add sync quick-action (
f900272bb)
Docker Image
docker pull sparkison/m3u-editor:experimental-0.14.1 - feat(sports): Add on-demand channel matching for the M3U TV app (
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
English | 中文
A full-featured and powerful IPTV editor, including features similar to xteve or threadfin. Also includes full EPG management, full Xtream API output, series management with ability to store and sync .strm files, post processing with ability to call custom scripts, send webhook requests, or send an email, and much more!
Works with m3u, m3u8, m3u+ and Xtream codes api!
EPG support for XMLTV files (local or remote), XMLTV URLs, and full Schedules Direct integration.

Questions/issues/suggestions
Feel free to open an issue on this repo, or hit us up on Discord
Join us on Discord
Join our Discord server to ask questions and get help, help others, suggest new ideas, and offer suggestions for improvements! You can also try out and help test new features! 🎉
🚀 How to run
Managed Hosting
Fully managed M3U Editor instances available via ElfHosted – no setup required 🪄
Self hosted
Prerequisites
- Docker installed and setup on your system
🐳 Docker quick start v0.8.x+
[!IMPORTANT]
- Default Username: admin
- Default password: admin
- Default port: 36400
| Use Case | File | Description |
|---|---|---|
| Modular Deployment | docker-compose.proxy.yml | ⭐⭐ Recommended! Separate containers for m3u-editor, m3u-proxy (the external proxy setup is required for hardware acceleration), and Redis — perfect if you want more granular control (Postgres and NGINX can be easily added as a seperate container as well). |
| Modular + VPN | docker-compose.proxy-vpn | Example of modular deployment using Gluetun VPN. |
| All-in-One Deployment | docker-compose.aio.yml | A simple, all-in-one solution — everything runs in a single container for quick setup (hardware acceleration is not supported in this setup). |
🔥 Advanced docker setup v0.8.x+
| Use Case | File | Description |
|---|---|---|
| Fully Modular (Nginx) | docker-compose.external-all.yml | Example of fully modular deployment with Nginx. See External Services Setup for full details and examples |
| Fully Modular (Caddy) | docker-compose.external-all-caddy.yml | Example of fully modular deployment with Caddy (alternative to Nginx). Includes automatic HTTPS support. |
View more in our getting started docs to get up and running in minutes! 🥳
📸 Screenshots







🤝 Want to Contribute?
Whether it’s writing docs, squashing bugs, or building new features, your contribution matters! ❤️
We welcome PRs, issues, ideas, and suggestions!
Here’s how you can join the party:
- Follow our coding style and best practices.
- Be respectful, helpful, and open-minded.
- Respect the CC BY-NC-SA license.
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Submit a pull request
⚖️ License
m3u editor is licensed under CC BY-NC-SA 4.0:
- BY: Give credit where credit’s due.
- NC: No commercial use.
- SA: Share alike if you remix.
For full license details, see LICENSE.