Announcing Tunarr 2026.11.0!
Hi all. I haven't posted here since Tunarr 1.3 in May, and 20 releases have shipped since then, so here's a roundup. If you're new, Tunarr builds live TV channels from your Plex, Jellyfin, Emby, or local media. It serves them as M3U/XMLTV or as an emulated HDHomeRun tuner, so they show up in Plex, Jellyfin, Emby, Channels, TiviMate, and so on.
Version numbers changed. After 1.3.15, Tunarr switched to calendar versioning (YEAR.MONTH.PATCH). 2026.9.0 came right after 1.3.15, and the current release is 2026.11.0. There's no 1.4 to wait for, and upgrading works the same as before.
Upgrades are safer to roll back. Tunarr now snapshots your database before it runs any migration, and it refuses to start an older build against a newer database. If an upgrade goes badly, restore the db-pre-migration-*.bak file and run the older version.
The big stuff
ErsatzTV Next streaming backend (experimental, 2026.11.0). Tunarr can now hand a channel's transcoding to ersatztv-channel, the streaming worker from the ErsatzTV Next project. Tunarr keeps doing the scheduling and the guide, and the worker runs the ffmpeg pipeline. It's off by default. You can turn it on for one channel (Streaming tab, "Use ErsatzTV next Backend") or for every channel (Settings → Features). It works with HLS, HLS Direct v2, and MPEG-TS channels. Some transcode settings don't carry over yet, and the docs list them: tunarr.com. Please try it on a channel you don't mind breaking and tell me what goes wrong. Thanks to the ErsatzTV Next project for building the worker.
A new look (2026.10.4 and 2026.11.0). A top bar replaces the left drawer. It has a Ctrl+K / ⌘K palette that jumps to channels, custom shows, filler lists, smart collections, and settings pages. There's a new theme, new fonts, and a density setting (Settings → General) if you want more on screen. Phones get a bottom bar. New installs get a setup checklist instead of the old welcome wizard, and it ticks itself off as you add a source, scan a library, and create a channel. Existing installs won't see it.
Saving a schedule no longer freezes your other channels. Slot schedules are now built in a pool of worker threads by default. Before this, saving a big time-slot schedule could stall every live channel at once and push them out of sync with the guide.
Movie slots are gone (breaking change, 2026.10.4). A movie slot drew from every movie on the channel, including the commercials in your filler lists, so filler could get scheduled as regular programs. On upgrade, Tunarr turns each movie slot into a custom-show slot. It builds a custom show named "<Channel> Movies" and keeps the slot's order, filler, mid-roll, and timing. There's nothing to do on your end, with one catch. The new custom show is a snapshot, so movies you add to the channel later have to be added to that show by hand. If you script against the API, it now rejects movie slots.
Optional login for the web UI. Set TUNARR_BASIC_AUTH_USER and TUNARR_BASIC_AUTH_PASSWORD and the web UI and admin API will require a username and password. M3U, XMLTV, HDHomeRun, streams, and artwork stay open, so your clients keep working.
Streaming and transcoding
- E-AC3 and Opus are new audio output formats.
- On macOS, Tunarr now detects what VideoToolbox can do.
- Many hardware acceleration fixes:
- VAAPI: iHD driver name, rate control detection, tonemapping fallback when OpenCL can't attach, scaling before tonemapping, MPEG-2 output
- NVIDIA: text subtitle burn-in, looped inputs
- AV1 decoding through libdav1d
- HLS: one slow client can no longer freeze the playlist for everyone else. Each session gets its own directory, and playlists stop listing segments that were already deleted.
- Subtitles: sidecar WebVTT timing fixes, external subtitles from Jellyfin and Emby, and burn-in fixes for VAAPI and NVIDIA.
- Anamorphic video gets the right aspect ratio, and programs shorter than 10 seconds no longer get skipped.
Scheduling and filler
- Filler picks the least recently played item and honors long cooldowns. Linked slots share a cooldown, and an empty filler list is skipped instead of breaking the schedule.
- Mid-roll breaks stay inside their time slot and now work in custom-show slots.
- The random slot cooldown now actually applies.
- Slot padding lines up with your local clock instead of UTC.
- Block Shuffle and Cyclic Shuffle are now one dialog with presets, and the bulk flex tools moved into a Flex menu.
- Smart collections and search can filter by season.
Libraries and media sources
- If a library disappears or your server rejects Tunarr's credentials, Tunarr marks the library unavailable instead of deleting it.
- Removing a local folder moves its programs to the trash instead of deleting them, and the trash empties in the background.
- Local scans pick up files overwritten in place and mark deleted music videos as missing.
- You can turn play status updates (watched state sent back to Plex/Jellyfin) on or off per server.
- Music videos get more metadata, and Jellyfin shows that live inside a collection now scan.
- Log rolling is on by default.
- New Simplified Chinese translation.
Beyond that, there are well over 200 bug fixes. The full changelogs are on the releases page.
Upgrading: pull chrisbenincasa/tunarr:latest (or ghcr.io/chrisbenincasa/tunarr:latest), or grab a binary from the releases page.
Thanks to everyone who sent PRs, translations, bug reports, and repros this cycle. Come say hi on Discord.
52 points · 11 comments
Mentions
Announcing Tunarr 2026.11.0! Hi all. I haven't posted here since Tunarr 1.3 in May, and 20 releases have shipped since then, so here's a roundup. If you're new, Tunarr builds live TV channels from your Plex, Jellyfin, Emby, or local media. It serves them as M3U/XMLTV or as an emulated HDHomeRun tuner, so they show up in Plex, Jellyfin, Emby, Channels, TiviMate, and so on. Version numbers changed. After 1.3.15, Tunarr switched to calendar versioning (YEAR.MONTH.PATCH). 2026.9.0 came right after 1.3.15, and the current release is 2026.11.0. There's no 1.4 to wait for, and upgrading works the same as before. Upgrades are safer to roll back. Tunarr now snapshots your database before it runs any migration, and it refuses to start an older build against a newer database. If an upgrade goes badly, restore the db-pre-migration-*.bak file and run the older version. The big stuff ErsatzTV Next streaming backend (experimental, 2026.11.0). Tunarr can now hand a channel's transcoding to ersatztv-channel, the streaming worker from the ErsatzTV Next project. Tunarr keeps doing the scheduling and the guide, and the worker runs the ffmpeg pipeline. It's off by default. You can turn it on for one channel (Streaming tab, "Use ErsatzTV next Backend") or for every channel (Settings → Features). It works with HLS, HLS Direct v2, and MPEG-TS channels. Some transcode settings don't carry over yet, and the docs list them: tunarr.com. Please try it on a channel you don't mind breaking and tell me what goes wrong. Thanks to the ErsatzTV Next project for building the worker. A new look (2026.10.4 and 2026.11.0). A top bar replaces the left drawer. It has a Ctrl+K / ⌘K palette that jumps to channels, custom shows, filler lists, smart collections, and settings pages. There's a new theme, new fonts, and a density setting (Settings → General) if you want more on screen. Phones get a bottom bar. New installs get a setup checklist instead of the old welcome wizard, and it ticks itself off as you add a source, scan a library, and create a channel. Existing installs won't see it. Saving a schedule no longer freezes your other channels. Slot schedules are now built in a pool of worker threads by default. Before this, saving a big time-slot schedule could stall every live channel at once and push them out of sync with the guide. Movie slots are gone (breaking change, 2026.10.4). A movie slot drew from every movie on the channel, including the commercials in your filler lists, so filler could get scheduled as regular programs. On upgrade, Tunarr turns each movie slot into a custom-show slot. It builds a custom show named "<Channel> Movies" and keeps the slot's order, filler, mid-roll, and timing. There's nothing to do on your end, with one catch. The new custom show is a snapshot, so movies you add to the channel later have to be added to that show by hand. If you script against the API, it now rejects movie slots. Optional login for the web UI. Set TUNARR_BASIC_AUTH_USER and TUNARR_BASIC_AUTH_PASSWORD and the web UI and admin API will require a username and password. M3U, XMLTV, HDHomeRun, streams, and artwork stay open, so your clients keep working. Streaming and transcoding - E-AC3 and Opus are new audio output formats. - On macOS, Tunarr now detects what VideoToolbox can do. - Many hardware acceleration fixes: - VAAPI: iHD driver name, rate control detection, tonemapping fallback when OpenCL can't attach, scaling before tonemapping, MPEG-2 output - NVIDIA: text subtitle burn-in, looped inputs - AV1 decoding through libdav1d - HLS: one slow client can no longer freeze the playlist for everyone else. Each session gets its own directory, and playlists stop listing segments that were already deleted. - Subtitles: sidecar WebVTT timing fixes, external subtitles from Jellyfin and Emby, and burn-in fixes for VAAPI and NVIDIA. - Anamorphic video gets the right aspect ratio, and programs shorter than 10 seconds no longer get skipped. Scheduling and filler - Filler picks the least recently played item and honors long cooldowns. Linked slots share a cooldown, and an empty filler list is skipped instead of breaking the schedule. - Mid-roll breaks stay inside their time slot and now work in custom-show slots. - The random slot cooldown now actually applies. - Slot padding lines up with your local clock instead of UTC. - Block Shuffle and Cyclic Shuffle are now one dialog with presets, and the bulk flex tools moved into a Flex menu. - Smart collections and search can filter by season. Libraries and media sources - If a library disappears or your server rejects Tunarr's credentials, Tunarr marks the library unavailable instead of deleting it. - Removing a local folder moves its programs to the trash instead of deleting them, and the trash empties in the background. - Local scans pick up files overwritten in place and mark deleted music videos as missing. - You can turn play status updates (watched state sent back to Plex/Jellyfin) on or off per server. - Music videos get more metadata, and Jellyfin shows that live inside a collection now scan. - Log rolling is on by default. - New Simplified Chinese translation. Beyond that, there are well over 200 bug fixes. The full changelogs are on the releases page. Upgrading: pull chrisbenincasa/tunarr:latest (or ghcr.io/chrisbenincasa/tunarr:latest), or grab a binary from the releases page. Thanks to everyone who sent PRs, translations, bug reports, and repros this cycle. Come say hi on Discord.
Delay when closing Streams I'm just getting tunarr set up, but when switching between channels the old streams continue playing in the background. So if I switch channels 10 times I will have all 10 streams transcoding in the background for a few minutes. Eventually they die off, but it takes several minutes. Is this normal? I feel crazy, but I don't see any other comments about this. This one is vaguely similar, but it isn't caused by the simple act of switching channels: tunarr#1950 So I'm just looking for any advice? A few family members use my Jellyfin, and if I implement this I'm worried that they'll crash my machine with a few minutes of bored channel surfing. Initially I noticed it when testing with VLC, but dedicated IPTV players do it too. I'm using nvidia hardware acceleration, and have played with a bunch of the settings. And I know Tunarr has some cleanup tasks which are supposed to run every minute. That still seems a little slow to me, but even with that my streams last several minutes before dying. Running v2026.10.3