Jellyfin 10.10.x (and 10.11.0-rc4) not splitting audio artists containing "feat." into multiple artists #7236

Open
opened 2026-02-07 04:44:20 +03:00 by OVERLORD · 16 comments
Owner

Originally created by @verybadsoldier on GitHub (Aug 10, 2025).

Description of the bug

On Jellyfin 10.10.x, when creating a music library, an artist tag containing "feat." is not split up anymore into multiple artists.

I tested in on 10.10.0, 10.11.0-rc4 and on 10.10.7 on Windows and 10.10.7 on Linux.

I just installed 10.9.11 for testing, and it works fine there. So, it seems to be a regression in 10.10x. I could not find it mentioned in the release notes, so I assume it is not a intended change.

Reproduction steps

  1. Create a music library
  2. Add a directory containing mp3 files that have an ARTIST tag consisting of e.g. "Eminem feat. His Mother"
  3. Finish the library creation
  4. Login to Jellyfin and navigate to the created music library
  5. Look which artists have been created in the database
  6. You will see only "Eminem feat. His Mother" been created

What is the current bug behavior?

Only one artist called "Eminem feat. His Mother" has been created.

What is the expected correct behavior?

There should be two artists: "Eminem" and "His Mother".

Jellyfin Server version

10.10.0+

Specify commit id

No response

Specify unstable release number

No response

Specify version number

No response

Specify the build version

10.10.7

Environment

- OS: Windows 11
- Linux Kernel: 
- Virtualization:
- Clients: Windows Jellyfin Client
- Browser: Chrome
- FFmpeg Version:
- Playback Method:
- Hardware Acceleration:
- GPU Model:
- Plugins:
- Reverse Proxy:
- Base URL:
- Networking:
- Jellyfin Data Storage:
- Media Storage:
- External Integrations:

Jellyfin logs

[23:49:28] [INF] [10] Emby.Server.Implementations.ScheduledTasks.TaskManager: Update Plugins Completed after 0 minute(s) and 0 seconds
[23:49:43] [INF] [19] Jellyfin.Server.Implementations.Users.UserManager: Authentication request for vbs has succeeded.
[23:49:43] [INF] [19] Emby.Server.Implementations.Session.SessionManager: Current/Max sessions for user vbs: 0/0
[23:49:43] [INF] [19] Emby.Server.Implementations.Session.SessionManager: Creating new access token for user eb1d4404-55e3-4cb9-9a06-8e03adfac7ee
[23:49:43] [INF] [21] Emby.Server.Implementations.HttpServer.WebSocketManager: WS 127.0.0.1 request
[23:50:06] [INF] [16] Emby.Server.Implementations.IO.LibraryMonitor: Stopping directory watching for path D:\jellylib
[23:50:06] [WRN] [21] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping
[23:50:06] [INF] [21] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: PlaylistsFolder, Name: Playlists, Path: C:\ProgramData\Jellyfin\Server\data\playlists, Id: 1071671e-7bff-a053-2e93-0debee501d2e
[23:50:06] [INF] [21] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: Folder, Name: jellylib, Path: D:\jellylib, Id: a8dd73b9-aae3-92ad-4a34-9ce18c8923e1
[23:50:06] [INF] [16] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: CollectionFolder, Name: Musik, Path: C:\ProgramData\Jellyfin\Server\root\default\Musik, Id: 8a05b025-2259-a1db-d62d-f97522638439
[23:50:06] [INF] [20] Emby.Server.Implementations.Library.LibraryManager: Validating media library
[23:50:06] [WRN] [20] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping
[23:50:06] [WRN] [20] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping
[23:50:06] [INF] [18] Emby.Server.Implementations.Library.Validators.ArtistsValidator: Deleting dead dc6b918c4942e53e6b6d0b0aa8796edf Dan MusicArtist.
[23:50:06] [INF] [18] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: MusicArtist, Name: Dan, Path: C:\ProgramData\Jellyfin\Server\metadata\artists\Dan, Id: dc6b918c-4942-e53e-6b6d-0b0aa8796edf
[23:50:06] [INF] [18] Emby.Server.Implementations.Library.Validators.ArtistsValidator: Deleting dead 69958bc30052a6a0b78d9d9a5689b4d8 Paul Kalkbrenner MusicArtist.
[23:50:06] [INF] [18] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: MusicArtist, Name: Paul Kalkbrenner, Path: C:\ProgramData\Jellyfin\Server\metadata\artists\Paul Kalkbrenner, Id: 69958bc3-0052-a6a0-b78d-9d9a5689b4d8
[23:50:06] [INF] [18] Emby.Server.Implementations.Library.Validators.ArtistsValidator: Deleting dead eeb720ca8a5ae6ea7619c596799ba2cf Paul Kalkbrenner;Pig feat. Dan MusicArtist.
[23:50:06] [INF] [18] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: MusicArtist, Name: Paul Kalkbrenner;Pig feat. Dan, Path: C:\ProgramData\Jellyfin\Server\metadata\artists\Paul Kalkbrenner;Pig feat. Dan, Id: eeb720ca-8a5a-e6ea-7619-c596799ba2cf
[23:50:06] [INF] [18] Emby.Server.Implementations.Library.Validators.ArtistsValidator: Deleting dead b85bc70880503fa288e1cef065c3a007 Pig MusicArtist.
[23:50:06] [INF] [18] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: MusicArtist, Name: Pig, Path: C:\ProgramData\Jellyfin\Server\metadata\artists\Pig, Id: b85bc708-8050-3fa2-88e1-cef065c3a007
[23:50:06] [INF] [18] Emby.Server.Implementations.ScheduledTasks.TaskManager: Scan Media Library Completed after 0 minute(s) and 0 seconds
[23:51:12] [WRN] [10] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping
[23:51:12] [INF] [20] Emby.Server.Implementations.Library.LibraryManager: Validating media library
[23:51:12] [WRN] [20] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping
[23:51:12] [WRN] [10] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping
[23:51:12] [INF] [8] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting ffprobe with args -analyzeduration 200M -probesize 1G -i file:"D:\jellylib\Paul Kalkbrenner; Pig & Dan\Böxig Leise [12in,PKM011] (2014)\01 Paul Kalkbrenner; Pig & Dan - Böxig Leise (Pig & Dan Remix).mp3" -threads 0 -v warning -print_format json -show_streams -show_format
[23:51:14] [INF] [24] Emby.Server.Implementations.ScheduledTasks.TaskManager: Scan Media Library Completed after 0 minute(s) and 2 seconds
[23:51:14] [INF] [8] Emby.Server.Implementations.IO.LibraryMonitor: Watching directory D:\jellylib

FFmpeg logs


Client / Browser logs

No response

Relevant screenshots or videos

No response

Additional information

No response

Originally created by @verybadsoldier on GitHub (Aug 10, 2025). ### Description of the bug On Jellyfin 10.10.x, when creating a music library, an artist tag containing "feat." is not split up anymore into multiple artists. I tested in on 10.10.0, 10.11.0-rc4 and on 10.10.7 on Windows and 10.10.7 on Linux. I just installed 10.9.11 for testing, and it works fine there. So, it seems to be a regression in 10.10x. I could not find it mentioned in the release notes, so I assume it is not a intended change. ### Reproduction steps 1. Create a music library 2. Add a directory containing mp3 files that have an ARTIST tag consisting of e.g. "Eminem feat. His Mother" 3. Finish the library creation 4. Login to Jellyfin and navigate to the created music library 5. Look which artists have been created in the database 6. You will see only "Eminem feat. His Mother" been created ### What is the current _bug_ behavior? Only one artist called "Eminem feat. His Mother" has been created. ### What is the expected _correct_ behavior? There should be two artists: "Eminem" and "His Mother". ### Jellyfin Server version 10.10.0+ ### Specify commit id _No response_ ### Specify unstable release number _No response_ ### Specify version number _No response_ ### Specify the build version 10.10.7 ### Environment ```markdown - OS: Windows 11 - Linux Kernel: - Virtualization: - Clients: Windows Jellyfin Client - Browser: Chrome - FFmpeg Version: - Playback Method: - Hardware Acceleration: - GPU Model: - Plugins: - Reverse Proxy: - Base URL: - Networking: - Jellyfin Data Storage: - Media Storage: - External Integrations: ``` ### Jellyfin logs ```shell [23:49:28] [INF] [10] Emby.Server.Implementations.ScheduledTasks.TaskManager: Update Plugins Completed after 0 minute(s) and 0 seconds [23:49:43] [INF] [19] Jellyfin.Server.Implementations.Users.UserManager: Authentication request for vbs has succeeded. [23:49:43] [INF] [19] Emby.Server.Implementations.Session.SessionManager: Current/Max sessions for user vbs: 0/0 [23:49:43] [INF] [19] Emby.Server.Implementations.Session.SessionManager: Creating new access token for user eb1d4404-55e3-4cb9-9a06-8e03adfac7ee [23:49:43] [INF] [21] Emby.Server.Implementations.HttpServer.WebSocketManager: WS 127.0.0.1 request [23:50:06] [INF] [16] Emby.Server.Implementations.IO.LibraryMonitor: Stopping directory watching for path D:\jellylib [23:50:06] [WRN] [21] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping [23:50:06] [INF] [21] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: PlaylistsFolder, Name: Playlists, Path: C:\ProgramData\Jellyfin\Server\data\playlists, Id: 1071671e-7bff-a053-2e93-0debee501d2e [23:50:06] [INF] [21] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: Folder, Name: jellylib, Path: D:\jellylib, Id: a8dd73b9-aae3-92ad-4a34-9ce18c8923e1 [23:50:06] [INF] [16] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: CollectionFolder, Name: Musik, Path: C:\ProgramData\Jellyfin\Server\root\default\Musik, Id: 8a05b025-2259-a1db-d62d-f97522638439 [23:50:06] [INF] [20] Emby.Server.Implementations.Library.LibraryManager: Validating media library [23:50:06] [WRN] [20] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping [23:50:06] [WRN] [20] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping [23:50:06] [INF] [18] Emby.Server.Implementations.Library.Validators.ArtistsValidator: Deleting dead dc6b918c4942e53e6b6d0b0aa8796edf Dan MusicArtist. [23:50:06] [INF] [18] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: MusicArtist, Name: Dan, Path: C:\ProgramData\Jellyfin\Server\metadata\artists\Dan, Id: dc6b918c-4942-e53e-6b6d-0b0aa8796edf [23:50:06] [INF] [18] Emby.Server.Implementations.Library.Validators.ArtistsValidator: Deleting dead 69958bc30052a6a0b78d9d9a5689b4d8 Paul Kalkbrenner MusicArtist. [23:50:06] [INF] [18] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: MusicArtist, Name: Paul Kalkbrenner, Path: C:\ProgramData\Jellyfin\Server\metadata\artists\Paul Kalkbrenner, Id: 69958bc3-0052-a6a0-b78d-9d9a5689b4d8 [23:50:06] [INF] [18] Emby.Server.Implementations.Library.Validators.ArtistsValidator: Deleting dead eeb720ca8a5ae6ea7619c596799ba2cf Paul Kalkbrenner;Pig feat. Dan MusicArtist. [23:50:06] [INF] [18] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: MusicArtist, Name: Paul Kalkbrenner;Pig feat. Dan, Path: C:\ProgramData\Jellyfin\Server\metadata\artists\Paul Kalkbrenner;Pig feat. Dan, Id: eeb720ca-8a5a-e6ea-7619-c596799ba2cf [23:50:06] [INF] [18] Emby.Server.Implementations.Library.Validators.ArtistsValidator: Deleting dead b85bc70880503fa288e1cef065c3a007 Pig MusicArtist. [23:50:06] [INF] [18] Emby.Server.Implementations.Library.LibraryManager: Removing item, Type: MusicArtist, Name: Pig, Path: C:\ProgramData\Jellyfin\Server\metadata\artists\Pig, Id: b85bc708-8050-3fa2-88e1-cef065c3a007 [23:50:06] [INF] [18] Emby.Server.Implementations.ScheduledTasks.TaskManager: Scan Media Library Completed after 0 minute(s) and 0 seconds [23:51:12] [WRN] [10] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping [23:51:12] [INF] [20] Emby.Server.Implementations.Library.LibraryManager: Validating media library [23:51:12] [WRN] [20] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping [23:51:12] [WRN] [10] MediaBrowser.Controller.Entities.BaseItem: Library folder C:\ProgramData\Jellyfin\Server\data\playlists is inaccessible or empty, skipping [23:51:12] [INF] [8] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting ffprobe with args -analyzeduration 200M -probesize 1G -i file:"D:\jellylib\Paul Kalkbrenner; Pig & Dan\Böxig Leise [12in,PKM011] (2014)\01 Paul Kalkbrenner; Pig & Dan - Böxig Leise (Pig & Dan Remix).mp3" -threads 0 -v warning -print_format json -show_streams -show_format [23:51:14] [INF] [24] Emby.Server.Implementations.ScheduledTasks.TaskManager: Scan Media Library Completed after 0 minute(s) and 2 seconds [23:51:14] [INF] [8] Emby.Server.Implementations.IO.LibraryMonitor: Watching directory D:\jellylib ``` ### FFmpeg logs ```shell ``` ### Client / Browser logs _No response_ ### Relevant screenshots or videos _No response_ ### Additional information _No response_
OVERLORD added the bug label 2026-02-07 04:44:20 +03:00
Author
Owner

@gammaandromedae commented on GitHub (Aug 14, 2025):

Can confirm this is an issue on my Docker deployment on Ubuntu 24.04. If the files' metadata is changed to "Eminem\His Mother" manually, Jellyfin picks it up as two artists for certain file types (it seems to work on FLAC files, but not mp3s, getting a character encoding issue of some sort) but you lose the "feat." context as opposed to a more general collaboration.

@gammaandromedae commented on GitHub (Aug 14, 2025): Can confirm this is an issue on my Docker deployment on Ubuntu 24.04. If the files' metadata is changed to "Eminem\\His Mother" manually, Jellyfin picks it up as two artists for certain file types (it seems to work on FLAC files, but not mp3s, getting a character encoding issue of some sort) but you lose the "feat." context as opposed to a more general collaboration.
Author
Owner

@verybadsoldier commented on GitHub (Aug 15, 2025):

I made a small adaption to 10.10.7 to bring back artist parsing behavior from 10.9.x:
https://github.com/verybadsoldier/jellyfin/tree/dev_music_artist_behavior_10.9-vbs

Not sure about all consequences this would have, but it seems to work so far.

@verybadsoldier commented on GitHub (Aug 15, 2025): I made a small adaption to 10.10.7 to bring back artist parsing behavior from 10.9.x: https://github.com/verybadsoldier/jellyfin/tree/dev_music_artist_behavior_10.9-vbs Not sure about all consequences this would have, but it seems to work so far.
Author
Owner

@gnattu commented on GitHub (Aug 17, 2025):

Unfortunately this is a "designed to break" case with our new metadata parser.
Jellyfin is moving to encourage standardized tags for multi-value metadata fields, instead of using heuristics to "guess" from a single value tag. Both the Vorbis tag (also used by FLAC) and the ID3v2.4 supports native multi-value tags, which is now the default way Jellyfin probes. For backwards compatibility, we also introduced a fallback option so that you can use a single character as a custom delimiter: https://github.com/jellyfin/jellyfin/pull/12385, but unfortunately that won't support "feat" as a separator because now the delimiter is limited to only support one single character.

@verybadsoldier What your change did was just reverting to the now deprecated fallback prober which still does heuristics based tag splitting. That one is not going to be maintained anymore and that could be wrong in the future. But if it works for you, you can keep using that one.

@gnattu commented on GitHub (Aug 17, 2025): Unfortunately this is a "designed to break" case with our new metadata parser. Jellyfin is moving to encourage standardized tags for multi-value metadata fields, instead of using heuristics to "guess" from a single value tag. Both the Vorbis tag (also used by FLAC) and the ID3v2.4 supports native multi-value tags, which is now the default way Jellyfin probes. For backwards compatibility, we also introduced a fallback option so that you can use a single character as a custom delimiter: https://github.com/jellyfin/jellyfin/pull/12385, but unfortunately that won't support "feat" as a separator because now the delimiter is limited to only support one single character. @verybadsoldier What your change did was just reverting to the now deprecated fallback prober which still does heuristics based tag splitting. That one is not going to be maintained anymore and that could be wrong in the future. But if it works for you, you can keep using that one.
Author
Owner

@MinmoTech commented on GitHub (Aug 17, 2025):

@gnattu Does "moving to" imply that multi-artist tags were already supported in 10.10.6?
As an example, I have an album with this metadata (tagged using beets, but musicbrainz picard would have given the same result):

acoustid_fingerprint: 
         acoustid_id: 
               album: side by side
         albumartist: Aiobahn +81 feat. FUWAMOCO
  albumartist_credit: Aiobahn +81 feat. FUWAMOCO
    albumartist_sort: Aiobahn +81 feat. FUWAMOCO
        albumartists: Aiobahn +81; FUWAMOCO
 albumartists_credit: Aiobahn +81; FUWAMOCO
   albumartists_sort: Aiobahn +81; FUWAMOCO
       albumdisambig: 
         albumstatus: Official
           albumtype: single
          albumtypes: single
            arranger: 
                 art: False
              artist: Aiobahn +81 feat. FUWAMOCO
       artist_credit: Aiobahn +81 feat. FUWAMOCO
         artist_sort: Aiobahn +81 feat. FUWAMOCO
             artists: Aiobahn +81; FUWAMOCO
      artists_credit: Aiobahn +81; FUWAMOCO
        artists_sort: Aiobahn +81; FUWAMOCO

Puddletag screenshot to show that it seems to indeed use multi-value fields correctly:
Image

But the Jellyfin still only picks up albumartist/artist field.

Is the "best-practice" of how to tag music for jellyfin documented somewhere?

Edit:
This setting seems to have solved it on 10.11.x, on 10.10.x it only fixes the artist, but not the albumartist:

Image
@MinmoTech commented on GitHub (Aug 17, 2025): @gnattu Does "moving to" imply that multi-artist tags were already supported in 10.10.6? As an example, I have an album with this metadata (tagged using beets, but musicbrainz picard would have given the same result): ``` acoustid_fingerprint: acoustid_id: album: side by side albumartist: Aiobahn +81 feat. FUWAMOCO albumartist_credit: Aiobahn +81 feat. FUWAMOCO albumartist_sort: Aiobahn +81 feat. FUWAMOCO albumartists: Aiobahn +81; FUWAMOCO albumartists_credit: Aiobahn +81; FUWAMOCO albumartists_sort: Aiobahn +81; FUWAMOCO albumdisambig: albumstatus: Official albumtype: single albumtypes: single arranger: art: False artist: Aiobahn +81 feat. FUWAMOCO artist_credit: Aiobahn +81 feat. FUWAMOCO artist_sort: Aiobahn +81 feat. FUWAMOCO artists: Aiobahn +81; FUWAMOCO artists_credit: Aiobahn +81; FUWAMOCO artists_sort: Aiobahn +81; FUWAMOCO ``` Puddletag screenshot to show that it seems to indeed use multi-value fields correctly: <img width="903" height="624" alt="Image" src="https://github.com/user-attachments/assets/9b3f46de-24c3-48f8-8d99-538ab3540693" /> But the Jellyfin still only picks up albumartist/artist field. Is the "best-practice" of how to tag music for jellyfin documented somewhere? Edit: This setting seems to have solved it on 10.11.x, on 10.10.x it only fixes the artist, but not the albumartist: <img width="791" height="136" alt="Image" src="https://github.com/user-attachments/assets/c9eeeaac-c143-4265-b5a6-3f453faf345b" />
Author
Owner

@verybadsoldier commented on GitHub (Aug 17, 2025):

Unfortunately this is a "designed to break" case with our new metadata parser. Jellyfin is moving to encourage standardized tags for multi-value metadata fields, instead of using heuristics to "guess" from a single value tag. Both the Vorbis tag (also used by FLAC) and the ID3v2.4 supports native multi-value tags, which is now the default way Jellyfin probes. For backwards compatibility, we also introduced a fallback option so that you can use a single character as a custom delimiter: #12385, but unfortunately that won't support "feat" as a separator because now the delimiter is limited to only support one single character.

@verybadsoldier What your change did was just reverting to the now deprecated fallback prober which still does heuristics based tag splitting. That one is not going to be maintained anymore and that could be wrong in the future. But if it works for you, you can keep using that one.

Hm ok, I was afraid it could be intentional as you said. The problem is that some people are maintaining their music collections literally since decades, and having their files tagged in a certain way, using certain tools for tagging with specific features and limitations, using a certain workflow etc. So, having to re-tag everything to comply to the new guidelines might be a big hurdle for them. For me personally, I have no instant idea how I could do that for my files in a feasible way.

Giving users the chance to keep the old behavior by customizable separators (and artists whitelist) is a good way, in my opinion. The only problem I see is, that custom separators can only be single characters currently. Would it be possible to get those separators as strings, so people could get back the splitting on "feat." for example?

@verybadsoldier commented on GitHub (Aug 17, 2025): > Unfortunately this is a "designed to break" case with our new metadata parser. Jellyfin is moving to encourage standardized tags for multi-value metadata fields, instead of using heuristics to "guess" from a single value tag. Both the Vorbis tag (also used by FLAC) and the ID3v2.4 supports native multi-value tags, which is now the default way Jellyfin probes. For backwards compatibility, we also introduced a fallback option so that you can use a single character as a custom delimiter: [#12385](https://github.com/jellyfin/jellyfin/pull/12385), but unfortunately that won't support "feat" as a separator because now the delimiter is limited to only support one single character. > > [@verybadsoldier](https://github.com/verybadsoldier) What your change did was just reverting to the now deprecated fallback prober which still does heuristics based tag splitting. That one is not going to be maintained anymore and that could be wrong in the future. But if it works for you, you can keep using that one. Hm ok, I was afraid it could be intentional as you said. The problem is that some people are maintaining their music collections literally since decades, and having their files tagged in a certain way, using certain tools for tagging with specific features and limitations, using a certain workflow etc. So, having to re-tag everything to comply to the new guidelines might be a big hurdle for them. For me personally, I have no instant idea how I could do that for my files in a feasible way. Giving users the chance to keep the old behavior by customizable separators (and artists whitelist) is a good way, in my opinion. The only problem I see is, that custom separators can only be single characters currently. Would it be possible to get those separators as strings, so people could get back the splitting on "feat." for example?
Author
Owner

@sjorge commented on GitHub (Aug 17, 2025):

So, having to re-tag everything to comply to the new guidelines might be a big hurdle for them. For me personally, I have no instant idea how I could do that for my files in a feasible way.

I struggled a lot to when migrating to jellyfin, MusicBrain Picard really helped. It can also pre-calculate album and track gain values with a plugin so jellyfin can just pick them up.

@sjorge commented on GitHub (Aug 17, 2025): > So, having to re-tag everything to comply to the new guidelines might be a big hurdle for them. For me personally, I have no instant idea how I could do that for my files in a feasible way. I struggled a lot to when migrating to jellyfin, MusicBrain Picard really helped. It can also pre-calculate album and track gain values with a plugin so jellyfin can just pick them up.
Author
Owner

@davidscarth commented on GitHub (Aug 23, 2025):

i'm looking forward to being able to scan without 100000 artists because theres a "xyz ft. so and so". if for whatever reason this gets "fixed" please make it a toggle. i really just want primary artist and dont need tracks from an album being assigned to some made up nonsense separate of the rest of an album.

@davidscarth commented on GitHub (Aug 23, 2025): i'm looking forward to being able to scan without 100000 artists because theres a "xyz ft. so and so". if for whatever reason this gets "fixed" please make it a toggle. i really just want primary artist and dont need tracks from an album being assigned to some made up nonsense separate of the rest of an album.
Author
Owner

@devleesch001 commented on GitHub (Sep 17, 2025):

Unfortunately this is a "designed to break" case with our new metadata parser. Jellyfin is moving to encourage standardized tags for multi-value metadata fields, instead of using heuristics to "guess" from a single value tag. Both the Vorbis tag (also used by FLAC) and the ID3v2.4 supports native multi-value tags, which is now the default way Jellyfin probes. For backwards compatibility, we also introduced a fallback option so that you can use a single character as a custom delimiter: #12385, but unfortunately that won't support "feat" as a separator because now the delimiter is limited to only support one single character.

@verybadsoldier What your change did was just reverting to the now deprecated fallback prober which still does heuristics based tag splitting. That one is not going to be maintained anymore and that could be wrong in the future. But if it works for you, you can keep using that one.

Can cofirme doest work for me too

But many ripped discs use this format, it may be historical but the majority of sources, even recently purchased discs still use this format, it is really necessary to be able to use a string as a separator, especially, feat. featuring.

I tend to agree with the idea that we can configure a list of strings as a sperator, the best would even be a regex, or a list of regex

@devleesch001 commented on GitHub (Sep 17, 2025): > Unfortunately this is a "designed to break" case with our new metadata parser. Jellyfin is moving to encourage standardized tags for multi-value metadata fields, instead of using heuristics to "guess" from a single value tag. Both the Vorbis tag (also used by FLAC) and the ID3v2.4 supports native multi-value tags, which is now the default way Jellyfin probes. For backwards compatibility, we also introduced a fallback option so that you can use a single character as a custom delimiter: [#12385](https://github.com/jellyfin/jellyfin/pull/12385), but unfortunately that won't support "feat" as a separator because now the delimiter is limited to only support one single character. > > [@verybadsoldier](https://github.com/verybadsoldier) What your change did was just reverting to the now deprecated fallback prober which still does heuristics based tag splitting. That one is not going to be maintained anymore and that could be wrong in the future. But if it works for you, you can keep using that one. Can cofirme doest work for me too But many ripped discs use this format, it may be historical but the majority of sources, even recently purchased discs still use this format, it is really necessary to be able to use a string as a separator, especially, `feat.` `featuring.` I tend to agree with the idea that we can configure a list of strings as a sperator, the best would even be a regex, or a list of regex
Author
Owner

@vitorfulgencio commented on GitHub (Sep 17, 2025):

Same issue here, it fills my Artist / Album artist list with mutliple entries of the same artist but featuring someone else.
Alesso Ft. Tove Lo

@vitorfulgencio commented on GitHub (Sep 17, 2025): Same issue here, it fills my Artist / Album artist list with mutliple entries of the same artist but featuring someone else. Alesso Ft. Tove Lo
Author
Owner

@MinmoTech commented on GitHub (Sep 17, 2025):

@devleesch001 @vitorfulgencio If your library is properly tagged with MusicBrainz Picard or beets, you can enable the "prefer ARTISTS tag if available" library setting, that would also fix the issue.

@MinmoTech commented on GitHub (Sep 17, 2025): @devleesch001 @vitorfulgencio If your library is properly tagged with MusicBrainz Picard or beets, you can enable the "prefer ARTISTS tag if available" library setting, that would also fix the issue.
Author
Owner

@devleesch001 commented on GitHub (Sep 17, 2025):

It doesn't seem to work for me, even after deleting all existing metadata and re-scanning the entire library, the album images are downloaded correctly, but I still have dozens of artists with a 'feat' inside.

For example:

  • Georgio feat. Doums
  • Georgio feat. Luv Resval
  • Caballero feat. Luv Resval
  • Hayce Lemsi & Volts Face Feat. Hooss
  • Lorenzo Feat. Oliver Tree

However, I'm not sure if the songs were properly tagged with MusicBrainz, the options may be enabled.

@devleesch001 commented on GitHub (Sep 17, 2025): It doesn't seem to work for me, even after deleting all existing metadata and re-scanning the entire library, the album images are downloaded correctly, but I still have dozens of artists with a 'feat' inside. For example: - Georgio feat. Doums - Georgio feat. Luv Resval - Caballero feat. Luv Resval - Hayce Lemsi & Volts Face Feat. Hooss - Lorenzo Feat. Oliver Tree However, I'm not sure if the songs were properly tagged with MusicBrainz, the options may be enabled.
Author
Owner

@devleesch001 commented on GitHub (Sep 17, 2025):

I looked in the metadata manager, the artist folders are tagged, the albums are tagged but no sound is tagged, I imagine that Jellyfin applies the delimiters based on the metadata of the files

for exemple :

Path :

Georgio > Ciel enflammé - Sacré > Unique (default metadata artist Georgio feat. Doums)

But Unique have this MusicBrainz Track Id a0c54268-e139-4c4d-bbf2-c1d56df40cb0

In view of this, there may be another bug, on the attribution of metadata ?

@devleesch001 commented on GitHub (Sep 17, 2025): I looked in the metadata manager, the artist folders are tagged, the albums are tagged but no sound is tagged, I imagine that Jellyfin applies the delimiters based on the metadata of the files for exemple : Path : `Georgio` > `Ciel enflammé - Sacré` > `Unique` (default metadata artist `Georgio feat. Doums`) - `Georgio` tracked by **MusicBrainz Artist Id** : [4020ea18-d886-483c-910f-a0e7e039c097](https://musicbrainz.org/artist/4020ea18-d886-483c-910f-a0e7e039c097) - `Ciel enflammé - Sacré` tracked **by MusicBrainz Album Id** : [ed6596d6-93cf-4082-b35e-146e7d3b63bc](https://musicbrainz.org/release/ed6596d6-93cf-4082-b35e-146e7d3b63bc) - `Unique` not tracked **MusicBrainz Track Id** is empty But `Unique` have this **MusicBrainz Track Id** [a0c54268-e139-4c4d-bbf2-c1d56df40cb0](https://musicbrainz.org/recording/a0c54268-e139-4c4d-bbf2-c1d56df40cb0) In view of this, there may be another bug, on the attribution of metadata ?
Author
Owner

@radomnoob commented on GitHub (Sep 17, 2025):

Hi, I got the same bug, But I don't know that was a bug. So to fix that, I go in the "Custom Tag Delimiter" parameter I put ";" as delimiter and now when I add an album I edit the tag with mp3tag all the "feat" "featuring" "/" "&" "ft." etc.... was automatically replace by ";". That maybe not the perfect solution but I have more than 210 albums and 520 artists, and that work.

@radomnoob commented on GitHub (Sep 17, 2025): Hi, I got the same bug, But I don't know that was a bug. So to fix that, I go in the "Custom Tag Delimiter" parameter I put ";" as delimiter and now when I add an album I edit the tag with mp3tag all the "feat" "featuring" "/" "&" "ft." etc.... was automatically replace by ";". That maybe not the perfect solution but I have more than 210 albums and 520 artists, and that work.
Author
Owner

@devleesch001 commented on GitHub (Sep 19, 2025):

@devleesch001 @vitorfulgencio If your library is properly tagged with MusicBrainz Picard or beets, you can enable the "prefer ARTISTS tag if available" library setting, that would also fix the issue.

Oh ok, I didn't understand, MusicBrainz Picard and beets was software. I use beets cli in my NAS and it's work pretty well, all my library is now fixed

@devleesch001 commented on GitHub (Sep 19, 2025): > [@devleesch001](https://github.com/devleesch001) [@vitorfulgencio](https://github.com/vitorfulgencio) If your library is properly tagged with MusicBrainz Picard or beets, you can enable the "prefer ARTISTS tag if available" library setting, that would also fix the issue. Oh ok, I didn't understand, `MusicBrainz Picard` and `beets` was software. I use beets cli in my NAS and it's work pretty well, all my library is now fixed
Author
Owner

@jellyfin-bot commented on GitHub (Jan 18, 2026):

This issue has gone 120 days without an update and will be closed within 21 days if there is no new activity. To prevent this issue from being closed, please confirm the issue has not already been fixed by providing updated examples or logs.

If you have any questions you can use one of several ways to contact us.

@jellyfin-bot commented on GitHub (Jan 18, 2026): This issue has gone 120 days without an update and will be closed within 21 days if there is no new activity. To prevent this issue from being closed, please confirm the issue has not already been fixed by providing updated examples or logs. If you have any questions you can use one of several ways to [contact us](https://jellyfin.org/contact).
Author
Owner

@verybadsoldier commented on GitHub (Jan 18, 2026):

Still an issue.

@verybadsoldier commented on GitHub (Jan 18, 2026): Still an issue.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#7236