[Bug]: Title in Chapters show file name instead of track title from id3 tag (only for OGG files?) #2002

Closed
opened 2026-04-25 00:02:16 +02:00 by adam · 8 comments
Owner

Originally created by @tbleiker on GitHub (May 22, 2024).

What happened?

I scanned a library with some audiobooks. Then I started to tidy up track titles (with beets). On rescan, most of the albums show the title from the id3 tag (e.g under Chapters). However, for some (only ogg files?) the filename is shown. As far as I can tell, that happens if one of the track title (of an album) has a special character in it (e.g. ":" or "?"). Strangely, for some ogg files with the same special characters in it, the id3 tag is used.

What did you expect to happen?

The track title from the id3 tag should be shown.

Steps to reproduce the issue

  1. Scan library with ogg files (filename and track title in id3 tag without special characters)
  2. Change track title id3 tag (with beets)
  3. Re-scan library...

Audiobookshelf version

v2.9.0

How are you running audiobookshelf?

Docker

What OS is your Audiobookshelf server hosted from?

Linux

If the issue is being seen in the UI, what browsers are you seeing the problem on?

None

Logs

No response

Additional Notes

I can provide example files if needed.

Originally created by @tbleiker on GitHub (May 22, 2024). ### What happened? I scanned a library with some audiobooks. Then I started to tidy up track titles (with beets). On rescan, most of the albums show the title from the id3 tag (e.g under Chapters). However, for some (only ogg files?) the filename is shown. As far as I can tell, that happens if one of the track title (of an album) has a special character in it (e.g. ":" or "?"). Strangely, for some ogg files with the same special characters in it, the id3 tag is used. ### What did you expect to happen? The track title from the id3 tag should be shown. ### Steps to reproduce the issue 1. Scan library with ogg files (filename and track title in id3 tag without special characters) 2. Change track title id3 tag (with beets) 3. Re-scan library... ### Audiobookshelf version v2.9.0 ### How are you running audiobookshelf? Docker ### What OS is your Audiobookshelf server hosted from? Linux ### If the issue is being seen in the UI, what browsers are you seeing the problem on? None ### Logs _No response_ ### Additional Notes I can provide example files if needed.
adam added the bug label 2026-04-25 00:02:16 +02:00
adam closed this issue 2026-04-25 00:02:16 +02:00
Author
Owner

@advplyr commented on GitHub (May 22, 2024):

Can you share the ffprobe output for one of the files?

@advplyr commented on GitHub (May 22, 2024): Can you share the ffprobe output for one of the files?
Author
Owner

@tbleiker commented on GitHub (May 22, 2024):

Here the output of a ogg file which is shown correctly:

[ogg @ 0x5fece1c0fe00] 95884 bytes of comment header remain
Input #0, ogg, from '01 Lars bring eus hei!.ogg':
  Duration: 00:42:06.13, start: 0.000000, bitrate: 303 kb/s
  Stream #0:0(German): Audio: vorbis, 44100 Hz, stereo, fltp, 320 kb/s
    Metadata:
      ALBUM           : Lars, bring eus hei!
      TSOA            : Chliine Isbär - Lars, bring eus hei!
      ALBUM ARTIST    : Hans de Beer
      album_artist    : Hans de Beer
      ARTIST          : Hans de Beer
      COMMENT         : Dieses Jahr ist es ungewöhnlich warm. Lars, der kleine Eisbär, trifft auf ein Forscher-boot und zwei Eisbärkinder, die von den Forschern gerettet wurden. Zusammen mit seinem neuen Freund, Fredi, dem Dackel, hilft er den Eisbärkindern. Eine abenteuerli
      COMPILATION     : 0
      COMPOSER        : Karin Glanzmann
      DATE            : 2012
      YEAR            : 2012
      disc            : 0
      DISCTOTAL       : 0
      DISCC           : 0
      TOTALDISCS      : 0
      ENCODEDBY       : K3bOggVorbisEncoderPlugin
      ENCODER         : K3bOggVorbisEncoderPlugin
      GENRE           : Kinder-Hörbucher/Tiere
      LANGUAGE        : German
      ORIGINALDATE    : 0000
      R128_ALBUM_GAIN : 0
      R128_TRACK_GAIN : 0
      REPLAYGAIN_ALBUM_GAIN: 0.00 dB
      REPLAYGAIN_ALBUM_PEAK: 0.000000
      REPLAYGAIN_TRACK_GAIN: 0.00 dB
      REPLAYGAIN_TRACK_PEAK: 0.000000
      MVNM            : Chliine Isbär
      TIT3            : Chliine Isbär
      TITLE           : Lars bring eus hei!
      track           : 1
      TRACKTOTAL      : 2
      TRACKC          : 2
      TOTALTRACKS     : 2
    Side data:
      replaygain: track gain - 0.000000, track peak - unknown, album gain - 0.000000, album peak - unknown,

And here of one where the filename is shown as track title:

[ogg @ 0x5b1863f86e00] 8130 bytes of comment header remain
Input #0, ogg, from '20 Lied_ Lied für Bobo.ogg':
  Duration: 00:03:00.53, start: 0.000000, bitrate: 324 kb/s
  Stream #0:0(German): Audio: vorbis, 44100 Hz, stereo, fltp, 320 kb/s
    Metadata:
      ALBUM           : Großer Sommerspaß
      TSOA            : Bobo Siebenschläfer - Großer Sommerspaß
      ALBUM ARTIST    : Markus Osterwalder
      album_artist    : Markus Osterwalder
      ARTIST          : Markus Osterwalder
      ASIN            : B07F6GVK3Z
      CATALOGNUMBER   : B07F6GVK3Z
      COMMENT         : Bei warmen Temperaturen lässt Bobo es sich im Sonnenschein gut gehen. In neun fröhlichen Geschichten faulenzt er am Strand, picknickt im Park und erlebt Aufregendes auf dem Jahrmarkt und im Zoo. Bei so vielen Erlebnissen schläft er am Ende jedes Tages 
      COMPILATION     : 0
      COMPOSER        : Kathrin Gerken
      DATE            : 2018-07-03
      YEAR            : 2018
      disc            : 1
      DISCTOTAL       : 1
      DISCC           : 1
      TOTALDISCS      : 1
      ENCODEDBY       : K3bOggVorbisEncoderPlugin
      ENCODER         : K3bOggVorbisEncoderPlugin
      GENRE           : Kinder-Hörbücher
      LABEL           : Jumbo Neue Medien & Verlag GmbH
      PUBLISHER       : Jumbo Neue Medien & Verlag GmbH
      LANGUAGE        : German
      ORIGINALDATE    : 2018-07-03
      R128_ALBUM_GAIN : 0
      R128_TRACK_GAIN : 0
      REPLAYGAIN_ALBUM_GAIN: 0.00 dB
      REPLAYGAIN_ALBUM_PEAK: 0.000000
      REPLAYGAIN_TRACK_GAIN: 0.00 dB
      REPLAYGAIN_TRACK_PEAK: 0.000000
      MVNM            : Bobo Siebenschläfer
      TIT3            : Bobo Siebenschläfer
      TITLE           : Lied: Lied für Bobo
      track           : 20
      TRACKTOTAL      : 20
      TRACKC          : 20
      TOTALTRACKS     : 20
    Side data:
      replaygain: track gain - 0.000000, track peak - unknown, album gain - 0.000000, album peak - unknown,

EDIT: Interestingly, the filename is shown for all tracks of an album, not just the ones with special characters in it. And once the filename is shown, it keeps showing the filename, even if I set the track title to its origin name.

@tbleiker commented on GitHub (May 22, 2024): Here the output of a ogg file which is shown **correctly**: ``` [ogg @ 0x5fece1c0fe00] 95884 bytes of comment header remain Input #0, ogg, from '01 Lars bring eus hei!.ogg': Duration: 00:42:06.13, start: 0.000000, bitrate: 303 kb/s Stream #0:0(German): Audio: vorbis, 44100 Hz, stereo, fltp, 320 kb/s Metadata: ALBUM : Lars, bring eus hei! TSOA : Chliine Isbär - Lars, bring eus hei! ALBUM ARTIST : Hans de Beer album_artist : Hans de Beer ARTIST : Hans de Beer COMMENT : Dieses Jahr ist es ungewöhnlich warm. Lars, der kleine Eisbär, trifft auf ein Forscher-boot und zwei Eisbärkinder, die von den Forschern gerettet wurden. Zusammen mit seinem neuen Freund, Fredi, dem Dackel, hilft er den Eisbärkindern. Eine abenteuerli COMPILATION : 0 COMPOSER : Karin Glanzmann DATE : 2012 YEAR : 2012 disc : 0 DISCTOTAL : 0 DISCC : 0 TOTALDISCS : 0 ENCODEDBY : K3bOggVorbisEncoderPlugin ENCODER : K3bOggVorbisEncoderPlugin GENRE : Kinder-Hörbucher/Tiere LANGUAGE : German ORIGINALDATE : 0000 R128_ALBUM_GAIN : 0 R128_TRACK_GAIN : 0 REPLAYGAIN_ALBUM_GAIN: 0.00 dB REPLAYGAIN_ALBUM_PEAK: 0.000000 REPLAYGAIN_TRACK_GAIN: 0.00 dB REPLAYGAIN_TRACK_PEAK: 0.000000 MVNM : Chliine Isbär TIT3 : Chliine Isbär TITLE : Lars bring eus hei! track : 1 TRACKTOTAL : 2 TRACKC : 2 TOTALTRACKS : 2 Side data: replaygain: track gain - 0.000000, track peak - unknown, album gain - 0.000000, album peak - unknown, ``` And here of one where the **filename** is shown as track title: ``` [ogg @ 0x5b1863f86e00] 8130 bytes of comment header remain Input #0, ogg, from '20 Lied_ Lied für Bobo.ogg': Duration: 00:03:00.53, start: 0.000000, bitrate: 324 kb/s Stream #0:0(German): Audio: vorbis, 44100 Hz, stereo, fltp, 320 kb/s Metadata: ALBUM : Großer Sommerspaß TSOA : Bobo Siebenschläfer - Großer Sommerspaß ALBUM ARTIST : Markus Osterwalder album_artist : Markus Osterwalder ARTIST : Markus Osterwalder ASIN : B07F6GVK3Z CATALOGNUMBER : B07F6GVK3Z COMMENT : Bei warmen Temperaturen lässt Bobo es sich im Sonnenschein gut gehen. In neun fröhlichen Geschichten faulenzt er am Strand, picknickt im Park und erlebt Aufregendes auf dem Jahrmarkt und im Zoo. Bei so vielen Erlebnissen schläft er am Ende jedes Tages COMPILATION : 0 COMPOSER : Kathrin Gerken DATE : 2018-07-03 YEAR : 2018 disc : 1 DISCTOTAL : 1 DISCC : 1 TOTALDISCS : 1 ENCODEDBY : K3bOggVorbisEncoderPlugin ENCODER : K3bOggVorbisEncoderPlugin GENRE : Kinder-Hörbücher LABEL : Jumbo Neue Medien & Verlag GmbH PUBLISHER : Jumbo Neue Medien & Verlag GmbH LANGUAGE : German ORIGINALDATE : 2018-07-03 R128_ALBUM_GAIN : 0 R128_TRACK_GAIN : 0 REPLAYGAIN_ALBUM_GAIN: 0.00 dB REPLAYGAIN_ALBUM_PEAK: 0.000000 REPLAYGAIN_TRACK_GAIN: 0.00 dB REPLAYGAIN_TRACK_PEAK: 0.000000 MVNM : Bobo Siebenschläfer TIT3 : Bobo Siebenschläfer TITLE : Lied: Lied für Bobo track : 20 TRACKTOTAL : 20 TRACKC : 20 TOTALTRACKS : 20 Side data: replaygain: track gain - 0.000000, track peak - unknown, album gain - 0.000000, album peak - unknown, ``` EDIT: Interestingly, the filename is shown for all tracks of an album, not just the ones with special characters in it. And once the filename is shown, it keeps showing the filename, even if I set the track title to its origin name.
Author
Owner

@advplyr commented on GitHub (May 22, 2024):

The chapters are only set on the initial scan. If you are changing things after the initial scan then it is not going to update the chapters.
This is to account for if you have manually made updates the scanner shouldn't overwrite your changes.

There is a feature request in for force re-scanning chapters but for now you can do this by pressing "Edit Chapters" then "Remove All" (or delete all can't remember). Once all the chapters are removed from the book you can press edit on the book and "Re-Scan" to pull in fresh chapters.

Let me know if that was the issue

@advplyr commented on GitHub (May 22, 2024): The chapters are only set on the initial scan. If you are changing things after the initial scan then it is not going to update the chapters. This is to account for if you have manually made updates the scanner shouldn't overwrite your changes. There is a feature request in for force re-scanning chapters but for now you can do this by pressing "Edit Chapters" then "Remove All" (or delete all can't remember). Once all the chapters are removed from the book you can press edit on the book and "Re-Scan" to pull in fresh chapters. Let me know if that was the issue
Author
Owner

@tbleiker commented on GitHub (May 22, 2024):

Thx for your quick reply! This did not work. The filename is shown instead of the track title from the id3 tags:

grafik

EDIT: However, it works for the other ogg file:

grafik

@tbleiker commented on GitHub (May 22, 2024): Thx for your quick reply! This did not work. The filename is shown instead of the track title from the id3 tags: ![grafik](https://github.com/advplyr/audiobookshelf/assets/5357861/9de34ce5-b0c9-44f1-9465-9f8816a8f315) EDIT: However, it works for the other ogg file: ![grafik](https://github.com/advplyr/audiobookshelf/assets/5357861/39883d7f-137a-46da-8b42-0e5a6d8c6af5)
Author
Owner

@advplyr commented on GitHub (May 22, 2024):

You'll have to send me the file to reproduce it. Either via email or discord.

@advplyr commented on GitHub (May 22, 2024): You'll have to send me the file to reproduce it. Either via email or discord.
Author
Owner

@tbleiker commented on GitHub (May 22, 2024):

What's your name on discord?

@tbleiker commented on GitHub (May 22, 2024): What's your name on discord?
Author
Owner

@tbleiker commented on GitHub (May 22, 2024):

I just realized that I have the same "problem" with mp3...

@tbleiker commented on GitHub (May 22, 2024): I just realized that I have the same "problem" with mp3...
Author
Owner

@tbleiker commented on GitHub (May 23, 2024):

Well @advplyr solved the mystery after a short exchange on discord.

The issue is that multiple audio files have the same ID3 tag title. It may make sense to loosen up the criteria. Currently this is what determines whether we use the filename or the ID3 tag title

// In some cases the ID3 title tag for each file is the chapter title, the criteria to determine if this will be used
// 1. Every audio file has an ID3 title tag set
// 2. None of the title tags are the same as the book title
// 3. Every ID3 title tag is unique
const metaTagTitlesFound = [...new Set(audioFiles.map((af) => af.metaTags?.tagTitle).filter((tagTitle) => !!tagTitle && tagTitle !== bookTitle))]
const useMetaTagAsTitle = metaTagTitlesFound.length === audioFiles.length

Note the 3rd item in the criteria "Every ID3 title tag is unique"

@tbleiker commented on GitHub (May 23, 2024): Well @advplyr solved the mystery after a short exchange on discord. > The issue is that multiple audio files have the same ID3 tag title. It may make sense to loosen up the criteria. Currently this is what determines whether we use the filename or the ID3 tag title ```js // In some cases the ID3 title tag for each file is the chapter title, the criteria to determine if this will be used // 1. Every audio file has an ID3 title tag set // 2. None of the title tags are the same as the book title // 3. Every ID3 title tag is unique const metaTagTitlesFound = [...new Set(audioFiles.map((af) => af.metaTags?.tagTitle).filter((tagTitle) => !!tagTitle && tagTitle !== bookTitle))] const useMetaTagAsTitle = metaTagTitlesFound.length === audioFiles.length ``` > Note the 3rd item in the criteria "Every ID3 title tag is unique"
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#2002