Skip to content

Releases: jellyfin/jellyfin

12.3

Choose a tag to compare

@jellyfin-bot jellyfin-bot released this 23 Oct 00:30

🚀 Jellyfin Server 12.3

We are pleased to announce the latest stable release of Jellyfin, version 12.3! This minor release brings several bugfixes to improve your Jellyfin experience. As always, please ensure you take a full backup before upgrading!

Discuss this release further on our forums.

Changelog (7)

🏗️ Enhancements

📈 General Changes

12.2

Choose a tag to compare

@jellyfin-bot jellyfin-bot released this 05 Oct 23:07

🚀 Jellyfin Server 12.2

We are pleased to announce the latest stable release of Jellyfin, version 12.2! This minor release brings several bugfixes to improve your Jellyfin experience. As always, please ensure you take a full backup before upgrading!

Discuss this release further on our forums.

Changelog (51)

📈 General Changes

12.1

Choose a tag to compare

@jellyfin-bot jellyfin-bot released this 15 Sep 01:23

🚀 Jellyfin Server 12.1

We are pleased to announce the latest stable release of Jellyfin, version 12.1! This minor release brings several bugfixes to improve your Jellyfin experience. As always, please ensure you take a full backup before upgrading!

Discuss this release further on our forums.

Changelog (47)

📈 General Changes

12.0

Choose a tag to compare

@jellyfin-bot jellyfin-bot released this 08 Sep 01:38

🚀 Release notes for 12.0

Notes on Updating

Before upgrading from an earlier version, a full backup of the data directory is strongly recommended, as this release includes database changes that prevent rolling back without a full restore.

Direct upgrades from 10.10.7 and 10.11.x to 12.0 are supported; intermediate upgrades are not required. Users running releases older than 10.10.7 are strongly encouraged to upgrade to 10.10.7 before migrating to 12.0.

Installed repository plugins (anything not built-in) should also be removed before migrating. Plugins will likely need time to adapt to the new database changes, so re-adding them afterward is the safest approach for testing.

Official plugins compatible with Jellyfin are available through the stable plugin repository. If you have changed to the unstable plugin repository please change it back.

After migrating please perform the following steps.

  • Perform a full library scan to restore alternative versions

If you run into issues, please prefix bug reports with "[12.0]".

Packaging

  • Debian Bullseye and Ubuntu Focal packages are no longer built

Server

  • Performance PR implications #16062
    • We're running a full path-based check on all library items to clean up left overs. Depending on size this can take some time
    • Alternative versions of media that were auto resolved (not manually merged) will be removed due to data type issues -> A full library scan will fix this again and is therefore REQUIRED AFTER UPGRADE
    • First scan will take significantly longer than normal and some movies might appear as newly added due to type issues that got fixed on-scan
  • Multiple versions for episodes
  • Similarity & recommendation providers
  • Search providers, letting plugins extend or replace how search results are produced
  • SchedulesDirect and EPG refresh fixes
  • Fixes to the parental rating system
  • Proper data pruning on file replacement/deletion
  • Support triple+ digit episode numbers
  • Add library-specific BoxSet and Playlist filtering, allowing per-library collection and playlist views
  • CACHEDIR.tag support
  • Accept-Language header support
  • Add VideoRotation profile condition for Android TVs that do not support rotation metadata
  • Parse provider IDs from season and episode folder/file names
  • Allow tmdb, tvdb, and imdb as aliases for the tmdbid, tvdbid, and imdbid provider IDs
  • Add curly brace and parentheses support for parsing attribute values
  • Add NameStartsWith and NameLessThan filters to Person search
  • Add new filters for audio and subtitle languages
  • Add OriginalLanguage as option to PreferredAudioLanguage
  • Add a collection API for Included In feature
  • Add support for VobSub subtitle streams
  • Add Tmdb missing episode provider

Breaking and behavior changes

  • Legacy route prefixes removed (/emby/* and /mediabrowser/*). Old third-party clients that rely on them will stop working
  • Legacy authorization is now disabled by default, and a migration disables it on existing installs as well
  • Removed obsolete API routes: POST /Users/{userId}/EasyPassword (the EasyPassword feature is gone), GET /Items/{itemId}/CriticReviews, GET /Environment/NetworkShares, POST /System/MediaEncoder/Path, GET /LiveTv/Recordings/Groups/{groupId}, and GET /QuickConnect/Initiate
  • The global subtitle configuration has been removed, subtitle settings are configured per library
  • .ogg is no longer treated as a video extension and is audio only, .aifc is now recognized as audio, and .aiff is no longer treated as an image
  • Symlinks are only resolved at playback time
  • Sorting by name now uses SortName and CleanName, and the same cleaning logic is applied to ForcedSortName. Library ordering may change compared to 10.11
  • Image endpoints no longer upscale beyond the source resolution, so low resolution artwork renders at its real size instead of being enlarged
  • Username capitalization can now be changed. Usernames are stored in a normalized column with a unique index, so installs with usernames that differ only by case need to be corrected before upgrading

Database and performance

  • Playlists and collections are now properly relational, using a new LinkedChildren table instead of serialized child lists. OwnerId and PrimaryVersionId are real GUID foreign keys, and ExtraIds has been dropped
  • Many tuning migrations covering item counts, item names, type and clean name, latest items, image info, and primary version id
  • Migration routines clean up existing data on first boot: duplicate music artists and people are merged, orphaned extras and external data are removed, incorrect owner relationships are repaired, and clean names, forced sort names, and series presentation keys are recomputed
  • Heavy database tasks no longer run while a library scan is in progress
  • Faster queries for Resume, Next Up, rewatching, Latest Items for music, playlists and collections, artist lookup, and item counts
  • Item deletion is batched, which fixes "too many SQL variables" failures when deleting large numbers of items
  • jellyfin.db can now be stored at a custom path

Operations

  • New --mode startup flag with MediaServer, MigrateSystem, and SeedSystem, allowing migrations or database seeding to be run without starting the server. This is useful for containerized and orchestrated deployments and for controlled upgrades
  • The startup interface has been restyled and now shows version and activity information
  • Disabled plugins are no longer re-enabled on restart
  • Full system backups skip corrupt keyframe rows instead of failing

Media and subtitles

  • Subtitle writing now goes through SubtitleEdit, which is what avoids the SSA to ASS conversion and loss of styles
  • External subtitles can be embedded into MKV when transcoding
  • The subtitle extraction timeout is now configurable
  • Client-rendered graphical subtitles are allowed during remux
  • Fixes for races in concurrent subtitle conversion, cache invalidation when a subtitle is replaced, and ffmpeg hangs during extraction
  • New HlsAudioSeekStrategy configuration option
  • Trickplay: existing files are discovered during a scan, duplicates from interlaced video are fixed, invalid PTS values from containers are normalized, and the cache is cleaned up after a failure

Live TV

  • Live TV no longer returns unreachable "server-local" streaming URLs to clients
  • XMLTV background images and episode thumbnails are now imported
  • XMLTV guide imports skip programs whose data has not changed, using an ETag computed from the fields the server actually consumes, which makes repeat guide refreshes considerably cheaper. Other listings providers stay on the existing field-by-field update path

Metadata and providers

  • ListenBrainz is now bundled with the server and provides similar artist data with a selectable similarity algorithm
  • TVDB provider IDs are supported for movies
  • AudioDb artist search
  • ReplayGain album gain is parsed
  • MusicBrainz lookups are more resilient
  • WEB-DL release tags are recognized in file names
  • Hyphenated numbers in episode titles are no longer parsed as multi-episode files
  • 3D format detection works when the tag is the last token of the path
  • Person metadata refreshes are queued instead of blocking the request

Transcoder

  • New upstream version of FFmpeg 8.1
  • Optimized CUDA transposing filter performance
  • Optimized OCL scaling filter performance
  • Optimized OCL tonemapping filter performance on Mali GPU
  • Use EOTF from BT 2446 Method B for HLG tonemapping
  • Fix potential A/V desync in HLS when transcoding video while remuxing audio
  • Avoid SSA to ASS conversion and loss of styles
  • Add spec-compliant dvh1 HLS variant for DoVi P5 for compatibility

Web

  • The Modern layout is now the default, the previous layout is now called Legacy
  • Updated Music Videos view
  • Updated Mixed Media view
  • Updated Collections & Playlists view
  • Updated Books view
  • Add still watching prompt
  • Add delay setting for photo slideshow
  • Add caching of queries to indexed db for the tanstack query client for improved loading performance
  • Add watch feature to log viewer
  • Add , and . as controls to scrub frame-by-frame
  • Add filters for audio and subtitle languages (modern layout only)
  • Add Collections and playlist tab to all libraries
  • Add collections to item details page
  • Replace libpgs with libbitsub and adds support for vobsub rendering
  • Merge cards for crew with multiple roles

Layout and themes

  • All themes now derive from a shared base theme built on CSS variables, including Dark, Light, WMC, Blue Radiance, Apple TV, and Purple Haze. Custom themes may need to be adjusted
  • The library toolbar has been merged into the app bar, with a sticky library header and design polish throughout the library
  • Custom links can be added to the Modern layout
  • The screensaver time setting is now available in the Modern layout

Libraries and browsing

  • Collections and folders tabs for book libraries, and a folder view in the Modern home videos layout
  • Default tab options for Home Videos and Photos libraries
  • Studio search, and an extended Studios tab
  • Play All and Shuffle buttons on the series library. Both are disabled rather than hidden when no items are available
  • Improved Upcoming view
  • Sorting and filtering on the Activity page
  • A Reset Filters button in the filter dropdown
  • Folders can be marked as played
  • TV show creators are shown on item details
  • Similarity providers can be configured per library
  • Pagination controls are hidden when paging is disabled

Playback

  • The pl...
Read more

12.0 RC7

12.0 RC7 Pre-release
Pre-release

Choose a tag to compare

@crobibero crobibero released this 31 Aug 23:18
4910aaf

🚀 Jellyfin Server 12.0 RC7

We are pleased to announce the seventh release candidate preview release of Jellyfin 12.0!

This is a preview release, intended for those interested in testing 12.0 before its final public release. We welcome testers to help find as many bugs as we can before the final release.

As always, please ensure you stop your Jellyfin server and take a full backup before upgrading!

A note about versioning

Starting with this release, we are dropping the preceding 10. from our versioning. Thus, 10.11.x -> [10.]12.x = 12.x. The reason is simple: at this point in the project, we don't envision a hard break in the API like we planned way back in the early days, and this version scheme was causing a lot of confusion amongst users about what a "major" release was. For more information, please see the RC1 release notes.

What's new?

The main goal of this release has been performance. 10.11.0 dropped a major backend rewrite, and while it was broadly functional, it had a lot of rough edges. This release seeks to polish out most of those rough edges and bring better performance to all users.

There are many other small fixes, improvements, changes, and translations. See our draft release notes here or below for the full list of pull requests. You can also view the Web side changelog here.

Note: You must be on Jellyfin 10.10.7+ or 10.11.x (ideally, 10.11.11) before upgrading! If you are not, the upgrade will fail. Ensure you upgrade to one of these versions first!

Note: The initial load of Jellyfin 12.x will run a few migrations and will take several minutes. Please be patient and do not interrupt the process. You can leverage the (newly improved!) startup UI on your local network to see specific progress, or off-network to see general progress, by visiting the server URL in your web browser during startup.

Note: If you install the RC, you should disable all external plugins and reinstall using the unstable plugin repository, or plugins may fail to load and cause unintended side effects.

Installing

This preview release is distributed in all our traditional forms, though not automatically via our Apt repository or latest tag.

  • For all non-Docker environments, you can find the files for manual download in our repository by selecting "Stable Preview" for your OS.
  • For Docker, you can pull the 12.0-rc7 or preview tags.

What's Changed (since v12.0-rc6)

Full Changelog: v12.0-rc6...v12.0-rc7

12.0 RC6

12.0 RC6 Pre-release
Pre-release

Choose a tag to compare

@crobibero crobibero released this 26 Aug 01:08
904699b

🚀 Jellyfin Server 12.0 RC6

We are pleased to announce the sixth release candidate preview release of Jellyfin 12.0!

This is a preview release, intended for those interested in testing 12.0 before its final public release. We welcome testers to help find as many bugs as we can before the final release.

As always, please ensure you stop your Jellyfin server and take a full backup before upgrading!

A note about versioning

Starting with this release, we are dropping the preceding 10. from our versioning. Thus, 10.11.x -> [10.]12.x = 12.x. The reason is simple: at this point in the project, we don't envision a hard break in the API like we planned way back in the early days, and this version scheme was causing a lot of confusion amongst users about what a "major" release was. For more information, please see the RC1 release notes.

What's new?

The main goal of this release has been performance. 10.11.0 dropped a major backend rewrite, and while it was broadly functional, it had a lot of rough edges. This release seeks to polish out most of those rough edges and bring better performance to all users.

There are many other small fixes, improvements, changes, and translations. See our draft release notes here or below for the full list of pull requests. You can also view the Web side changelog here.

Note: You must be on Jellyfin 10.10.7+ or 10.11.x (ideally, 10.11.11) before upgrading! If you are not, the upgrade will fail. Ensure you upgrade to one of these versions first!

Note: The initial load of Jellyfin 12.x will run a few migrations and will take several minutes. Please be patient and do not interrupt the process. You can leverage the (newly improved!) startup UI on your local network to see specific progress, or off-network to see general progress, by visiting the server URL in your web browser during startup.

Note: If you install the RC, you should disable all external plugins and reinstall using the unstable plugin repository, or plugins may fail to load and cause unintended side effects.

Installing

This preview release is distributed in all our traditional forms, though not automatically via our Apt repository or latest tag.

  • For all non-Docker environments, you can find the files for manual download in our repository by selecting "Stable Preview" for your OS.
  • For Docker, you can pull the 12.0-rc6 or preview tags.

What's Changed (since v12.0-rc5)

New Contributors

Full Changelog: v12.0-rc5...v12.0-rc6

12.0 RC5

12.0 RC5 Pre-release
Pre-release

Choose a tag to compare

@crobibero crobibero released this 11 Aug 00:33
6d501ba

🚀 Jellyfin Server 12.0 RC5

We are pleased to announce the fifth release candidate preview release of Jellyfin 12.0!

This is a preview release, intended for those interested in testing 12.0 before its final public release. We welcome testers to help find as many bugs as we can before the final release.

As always, please ensure you stop your Jellyfin server and take a full backup before upgrading!

A note about versioning

Starting with this release, we are dropping the preceding 10. from our versioning. Thus, 10.11.x -> [10.]12.x = 12.x. The reason is simple: at this point in the project, we don't envision a hard break in the API like we planned way back in the early days, and this version scheme was causing a lot of confusion amongst users about what a "major" release was. For more information, please see the RC1 release notes.

What's new?

The main goal of this release has been performance. 10.11.0 dropped a major backend rewrite, and while it was broadly functional, it had a lot of rough edges. This release seeks to polish out most of those rough edges and bring better performance to all users.

There are many other small fixes, improvements, changes, and translations. See our draft release notes here or below for the full list of pull requests. You can also view the Web side changelog here.

Note: You must be on Jellyfin 10.10.7+ or 10.11.x (ideally, 10.11.11) before upgrading! If you are not, the upgrade will fail. Ensure you upgrade to one of these versions first!

Note: The initial load of Jellyfin 12.x will run a few migrations and will take several minutes. Please be patient and do not interrupt the process. You can leverage the (newly improved!) startup UI on your local network to see specific progress, or off-network to see general progress, by visiting the server URL in your web browser during startup.

Note: If you install the RC, you should disable all external plugins and reinstall using the unstable plugin repository, or plugins may fail to load and cause unintended side effects.

Installing

This preview release is distributed in all our traditional forms, though not automatically via our Apt repository or latest tag.

  • For all non-Docker environments, you can find the files for manual download in our repository by selecting "Stable Preview" for your OS.
  • For Docker, you can pull the 12.0-rc5 or preview tags.

What's Changed (since v12.0-rc4)

New Contributors

Full Changelog: v12.0-rc4...v12.0-rc5

12.0 RC4

12.0 RC4 Pre-release
Pre-release

Choose a tag to compare

@crobibero crobibero released this 02 Aug 22:23

🚀 Jellyfin Server 12.0 RC4

We are pleased to announce the fourth release candidate preview release of Jellyfin 12.0!

This is a preview release, intended for those interested in testing 12.0 before its final public release. We welcome testers to help find as many bugs as we can before the final release.

As always, please ensure you stop your Jellyfin server and take a full backup before upgrading!

A note about versioning

Starting with this release, we are dropping the preceding 10. from our versioning. Thus, 10.11.x -> [10.]12.x = 12.x. The reason is simple: at this point in the project, we don't envision a hard break in the API like we planned way back in the early days, and this version scheme was causing a lot of confusion amongst users about what a "major" release was. For more information, please see the RC1 release notes.

What's new?

The main goal of this release has been performance. 10.11.0 dropped a major backend rewrite, and while it was broadly functional, it had a lot of rough edges. This release seeks to polish out most of those rough edges and bring better performance to all users.

There are many other small fixes, improvements, changes, and translations. See our draft release notes here or below for the full list of pull requests. You can also view the Web side changelog here.

Note: You must be on Jellyfin 10.10.7+ or 10.11.x (ideally, 10.11.11) before upgrading! If you are not, the upgrade will fail. Ensure you upgrade to one of these versions first!

Note: The initial load of Jellyfin 12.x will run a few migrations and will take several minutes. Please be patient and do not interrupt the process. You can leverage the (newly improved!) startup UI on your local network to see specific progress, or off-network to see general progress, by visiting the server URL in your web browser during startup.

Note: If you install the RC, you should disable all external plugins and reinstall using the unstable plugin repository, or plugins may fail to load and cause unintended side effects.

Installing

This preview release is distributed in all our traditional forms, though not automatically via our Apt repository or latest tag.

  • For all non-Docker environments, you can find the files for manual download in our repository by selecting "Stable Preview" for your OS.
  • For Docker, you can pull the 12.0-rc4 or preview tags.

What's Changed (since v12.0-rc3)

New Contributors

Full Changelog: v12.0-rc3...v12.0-rc4

12.0 RC3

12.0 RC3 Pre-release
Pre-release

Choose a tag to compare

@crobibero crobibero released this 22 Jul 00:59
fc43f15

🚀 Jellyfin Server 12.0 RC3

We are pleased to announce the third release candidate preview release of Jellyfin 12.0!

This is a preview release, intended for those interested in testing 12.0 before its final public release. We welcome testers to help find as many bugs as we can before the final release.

As always, please ensure you stop your Jellyfin server and take a full backup before upgrading!

A note about versioning

Starting with this release, we are dropping the preceding 10. from our versioning. Thus, 10.11.x -> [10.]12.x = 12.x. The reason is simple: at this point in the project, we don't envision a hard break in the API like we planned way back in the early days, and this version scheme was causing a lot of confusion amongst users about what a "major" release was. For more information, please see the RC1 release notes.

What's new?

The main goal of this release has been performance. 10.11.0 dropped a major backend rewrite, and while it was broadly functional, it had a lot of rough edges. This release seeks to polish out most of those rough edges and bring better performance to all users.

There are many other small fixes, improvements, changes, and translations. See our draft release notes here or below for the full list of pull requests. You can also view the Web side changelog here.

Note: You must be on Jellyfin 10.10.7+ or 10.11.x (ideally, 10.11.11) before upgrading! If you are not, the upgrade will fail. Ensure you upgrade to one of these versions first!

Note: The initial load of Jellyfin 12.x will run a few migrations and will take several minutes. Please be patient and do not interrupt the process. You can leverage the (newly improved!) startup UI on your local network to see specific progress, or off-network to see general progress, by visiting the server URL in your web browser during startup.

Note: If you install the RC, you should disable all external plugins and reinstall using the unstable plugin repository, or plugins may fail to load and cause unintended side effects.

Installing

This preview release is distributed in all our traditional forms, though not automatically via our Apt repository or latest tag.

  • For all non-Docker environments, you can find the files for manual download in our repository by selecting "Stable Preview" for your OS.
  • For Docker, you can pull the 12.0-rc3 or preview tags.

What's Changed (since v12.0-rc2)

Read more

12.0 RC2

12.0 RC2 Pre-release
Pre-release

Choose a tag to compare

@joshuaboniface joshuaboniface released this 28 Jun 17:25

🚀 Jellyfin Server 12.0 RC2

We are pleased to announce the second release candidate preview release of Jellyfin 12.0!

This is a preview release, intended for those interested in testing 12.0 before its final public release. We welcome testers to help find as many bugs as we can before the final release.

As always, please ensure you stop your Jellyfin server and take a full backup before upgrading!

A note about versioning

Starting with this release, we are dropping the preceding 10. from our versioning. Thus, 10.11.x -> [10.]12.x = 12.x. The reason is simple: at this point in the project, we don't envision a hard break in the API like we planned way back in the early days, and this version scheme was causing a lot of confusion amongst users about what a "major" release was. For more information, please see the RC1 release notes.

What's new?

The main goal of this release has been performance. 10.11.0 dropped a major backend rewrite, and while it was broadly functional, it had a lot of rough edges. This release seeks to polish out most of those rough edges and bring better performance to all users.

There are many other small fixes, improvements, changes, and translations. See our draft release notes here or below for the full list of pull requests. You can also view the Web side changelog here.

Note: You must be on Jellyfin 10.10.7+ or 10.11.x (ideally, 10.11.11) before upgrading! If you are not, the upgrade will fail. Ensure you upgrade to one of these versions first!

Note: The initial load of Jellyfin 12.x will run a few migrations and will take several minutes. Please be patient and do not interrupt the process. You can leverage the (newly improved!) startup UI on your local network to see specific progress, or off-network to see general progress, by visiting the server URL in your web browser during startup.

Note: If you install the RC, you should disable all external plugins and reinstall using the unstable plugin repository, or plugins may fail to load and cause unintended side effects.

Installing

This preview release is distributed in all our traditional forms, though not automatically via our Apt repository or latest tag.

  • For all non-Docker environments, you can find the files for manual download in our repository by selecting "Stable Preview" for your OS.
  • For Docker, you can pull the 12.0-rc2 or preview tags.

What's Changed (since v12.0-rc1)

New Contributors

Full Changelog: v12.0-rc1...v12.0-rc2