Create a classic TV experience using your own media - IPTV backed by Plex/Jellyfin/Emby/NFO
Find a file
2026-01-05 20:47:50 -05:00
.github chore: more changes and improvements around tunarr versioning 2026-01-05 20:47:50 -05:00
.husky chore: add commitlint setup and configuration 2024-07-08 13:19:33 -04:00
design feat(macos): add proper macOS wrapper app (#1290) 2025-07-29 22:01:25 -04:00
docker docs: big docs update part 1 2025-11-05 16:09:34 -05:00
docs docs: Add documentation around TUNARR_DEBUG_REDUCE_SEARCH_INDEXING_MEMORY (#1566) 2025-12-28 13:13:06 -05:00
docs-extras/includes docs: even more stuff 2025-11-05 16:47:52 -05:00
macos/Tunarr fix: bundle and start meilisearch properly on macOS 2025-09-17 13:08:02 -04:00
patches refactor: add media_source_id to relevant entities (#1106) 2025-02-28 15:53:29 -05:00
release chore: try pre-releases on release-please because release-it has too many bugs 2026-01-05 16:10:21 -05:00
scripts chore: output details about meilisearch binary before bundling 2025-12-15 16:45:48 -05:00
server chore: more changes and improvements around tunarr versioning 2026-01-05 20:47:50 -05:00
shared chore: more changes and improvements around tunarr versioning 2026-01-05 20:47:50 -05:00
types chore(main): release 1.0.14 (#1581) 2026-01-05 15:23:51 -05:00
web chore: more changes and improvements around tunarr versioning 2026-01-05 20:47:50 -05:00
.dockerignore Packaging v0: Build and run server in a docker container (#139) 2024-03-05 13:13:26 -05:00
.gitignore chore: add new .tanstack to gitignore 2025-10-18 16:33:36 -04:00
.prettierignore fix: another fix for foreign keys migration; defer checking 2025-12-11 10:20:56 -05:00
.prettierrc fix: fix channel deletes when channel is associated with fillers (#889) 2024-10-18 12:31:05 -04:00
.release-it.json chore: disable release-it-pnpm plugin 2026-01-05 16:00:01 -05:00
CHANGELOG.md chore(main): release 1.0.14 (#1581) 2026-01-05 15:23:51 -05:00
CLAUDE.md refactor: simplify program grouping upserting code 2025-12-08 22:19:00 -05:00
commitlint.config.ts chore: add commitlint setup and configuration 2024-07-08 13:19:33 -04:00
CONTRIBUTING.md feat!: add support for Jellyfin media (#633) 2024-08-22 07:41:33 -04:00
Dockerfile chore: more changes and improvements around tunarr versioning 2026-01-05 20:47:50 -05:00
eslint.config.mjs chore: linter package upgrades 2026-01-03 13:11:52 -05:00
LICENSE dizqueTV license 2020-09-24 18:49:41 -04:00
mkdocs.yml docs: enable search in docs 2025-12-15 21:29:12 -05:00
package.json chore(main): release 1.0.14 (#1581) 2026-01-05 15:23:51 -05:00
pnpm-lock.yaml chore: conditionally run release-it based on semantic changes 2026-01-03 13:16:48 -05:00
pnpm-workspace.yaml Merge remote-tracking branch 'origin/dev' into media-scanner 2025-10-02 08:48:15 -04:00
README.md docs: update README.md with badge links (#1490) 2025-12-03 11:06:37 -05:00
release.config.mjs chore: add test release-it configurations 2026-01-03 11:28:45 -05:00
turbo.json chore: cleanup turbo tasks, consolidate some shared package versions 2025-09-30 21:02:20 -04:00
vitest.config.ts refactor: get all tests passing; configure at top-level 2025-07-06 20:51:18 -04:00

Tunarr

GitHub Repo stars Docker Pulls Docker Image Version

Create and configure live TV channels using media on your Plex, Jellyfin, or Emby servers.

Access your channels by adding the spoofed Tunarr HDHomerun tuner to Plex, Jellyfin, or Emby. Or utilize the m3u URL with any IPTV player app (we love UHF and Tivimate).

Important

  • ⚠️ Tunarr is a work in progress and is under very active development.
  • ⚠️ Please report any issues you encounter or suggest any ideas you have in the issues section or in Tunarr's discord server.

What is this?

Tunarr is a rewrite + rebrand of dizqueTV (which in itself was a fork of other projects!). This project was born out of both a love for TV and an appreciation for the work put into dizqueTV and its predecessors.

Tunarr has the following goals:

  • Modernize the stack, both backend and frontend
  • Stabilize the program, fix bugs, and improve performance (Tunarr currently is developed and tested on Node 22, non-trivial performance improvements over previous versions)
  • Modernize and "prettify" the Web UI
  • And of course, Add a ton great new features!

Features

  • NEW Advanced filtering of Plex libraries, helping to easily find the content you want to schedule
  • NEW Jellyfin / Emby library support!
  • NEW Stream your channels directly in the browser
  • NEW Complete rewrite of streaming pipeline, offering better stability and improved performance
  • NEW New and more powerful scheduling options!
  • NEW Dark mode!
  • NEW Quickly find content you want for your channels with advanced filtering and sorting (Jellyfin filtering coming soon)
  • NEW Scheduled, configurable backups - never lose your channels and configuration!
  • NEW Support multiple transcode configurations and set them per-channel
  • NEW Audio language preference support
  • NEW Improved UI for time/random slot scheduling
  • NEW Improved Subtitle support: support for image and text based subtitles. Supports extracting embedded text based subtitles. Configure subtitle preferences (language, subtitle type, etc) per-channel.
  • Spoofed HDHR tuner and a IPTV channel list, providing a large amount of flexibility and easing integration with xTeVe or Threadfin and Plex, or the IPTV client of your choice.
  • Customize channels with a logo, filler content ("commercials", music videos, prerolls, channel branding videos) between programming, and more!
  • View channel lineups on the web-based TV Guide
  • Support for hardware accelerated transcoding, including Nvidia, VAAPI, QuickSync, and macOS VideoToolbox. (AMF; #1131 and Vulkann #1172 are coming soon!)

Limitations

  • Like dizqueTV, Tunarr does not currently watch your Plex server for media updates/changes. You must manually remove and re-add your programs for any changes to take effect. Same goes for Plex server changes (changing IP, port, etc).. You'll have to update the server settings manually in that case. NOTE This feature is actively under development! (https://github.com/chrisbenincasa/tunarr/issues/15)

Releases

Wiki

Development

At a high level, pnpm is Tunarr's package manager and turbo is used for task running in the repo.

Web

vite is used for web dev and bundling.

Start dev servers

  1. Install deps:
pnpm i
  1. Start dev servers:
pnpm turbo dev

After the servers are running, the backend should be available at localhost:8000 and the frontend at localhost:5173/web.

License

  • The original dizqueTV is released under zlib license (c) 2020 Victor Hugo Soliz Kuncar: we've kept this.