Hello everyone!
I have been having a hard time finding a solution to my problem of sorting music from both Youtube music and Bandcamp. I have tried Picard and while it is good I have had problems with it. For example it has made songs shorter (they now end to soon.). So far the only solution I have found is to use Picard and manually review every song I own, and since I have thousands of songs It would take quite long.
I’m using Jellyfin with Finamp to play my music, and sometimes add lyrics via the Jellyfin app when they are missing.
How have you people solved this or similar issues? Does someone have a automated setup that works well?
I vibecoded my own youtube downloader that does metadata completion via deezer’s api. Before that I was using Jellyfin + Finamp, tried Picard but it a) required downloading something onto my pc b) felt clunky and took ages to complete runs. Fixed it by using a bash script for managing metadata. Now my own platform does it.
beets.io, with a a good chunk imported as is
picard was pita, beets takes some getting used to but can run on a potato and eat tb’s of music at a time
I don’t
Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:
Fewer Letters More Letters NAS Network-Attached Storage Plex Brand of media server package SMB Server Message Block protocol for file and printer sharing; Windows-native
3 acronyms in this thread; the most compressed thread commented on today has 6 acronyms.
[Thread #127 for this comm, first seen 13th Oct 2026, 19:40] [FAQ] [Full list] [Contact] [Source code]
Are you saying Picard is trimming your songs? Because I ditto many other commenters; Picard has never trimmed any of my songs.
My flow back when I used to self-host was (1) get the songs -> (2) tag the songs with Picard, which also renames the files automatically -> (3) place appropriately in my Navidrome server. I know people like to automate acquisition with various arr projects, but I liked curating my library manually.
- Obtain flac cd-ripped originals
- Convert to 256bit center-weighted opus
- Use Picard to tag music, save to artist - album/song file & folder pattern
- Sync to my subsonic-compatible server
In thousands of songs, I’ve never noticed Picard doing anything to the length of the files. I tend to manually review every album by running it through Picard and letting it handle the renaming and tagging. That structure used to be Artist/Year Album/Song. I’ve been less strict about naming the songs themselves. It’s always at least track - Title, but sometimes Artist - Album - Disc # - is prepended. Eventually I ran into a situation where I had multiple versions of a release/album with different enough content to warrant keeping both, so now I throw a release ID number (if is exists) after the album name, and inside brackets, for the directory name.
It’s a very flat structure by design, so I’m never quibbling about where I sourced something or what particular genre it is when I’m looking for it. That dramatically reduces the likelihood of duplicates too. Real metadata is better left to tags, since that’s mostly what any player will see anyway.
If I’m having trouble getting Picard to recognize something it always because: musicbrainz.org is missing the release, doesn’t have acoustic ID, or Picard preferred the album track when I’m trying to rename and tag a single or EP. Adding the release info and acoustic ID to musicbrainz is easy and I can usually use the info before the release is even reviewed, but often in trying to add the release I’ll find the correct one and now I can help fill out the data about it.
I treat musicbrainz.org as MY metadata database. If a release is missing or has problems, I do the work to make it better. It’s good digital citizenship and learning about their rules for releases helps me manage my server better.
Different angle on this, and it may or may not fit your setup, but it changed things for me.
I’ve been accumulating audio since the early 2000s. Twenty-some years of ripped CDs, vinyl rips from release groups, random downloads. Several thousand albums. At some point I accepted that tags were never going to be consistent across that pile, because the sources never agreed on anything in the first place: a 1979 vinyl rip tagged by whoever released it, a CD rip from 2004, and a modern FLAC have nothing in common metadata-wise, and no tagger reconciles that without me babysitting it.
So I stopped trying to fix the tags and leaned on the folder structure instead. My tree already carried everything I cared about: genre at the top, then artist, then Artist - Year - Album, with subfolders for live, compilations and singles. That structure took years to build and it’s reliable in a way my tags never were.
I run Velvet (mStream fork) as the server for it. It serves the library by folder structure rather than by tag database, so there’s nothing to scan, nothing to match, nothing to get wrong. And I vibe-coded Sharesonic, an Android client for it, because I wanted to browse my library the way it’s actually organized and share a track, a playlist or an entire folder as a public link without exporting anything. Personal project, it’s on GitHub if anyone wants it.
To be clear about what this does and doesn’t solve: it doesn’t repair your files. If Picard truncated audio on you, that’s a real problem and it needs fixing at the file level, not at the player level. Worth checking whether the audio itself is actually shorter or whether it’s just the duration metadata disagreeing with the stream, because both look identical from the player side and only one of them is destructive.
The trade-off is real. You lose cross-cutting queries: no “everything from 1977 across all artists”, no proper album artist handling for compilations. If that matters, stay on Jellyfin and keep grinding through Picard. If you mostly navigate by “I want to hear that specific album”, folders are faster than any tag database.
I’m working on a script that checks my files, dir structure, and audio metadata for issues. For basic problems that can be fixed with a command, the script outputs a suggested command in a csv. I’ve cleaned up many issues with the script so far…
Been thinking of sharing it but it’s still very much a WIP.
I group my albums by artist, and I sort them by artist, then year of release, then album name.
Each song in the album is sorted by track number.Music/Albums/Pink Floyd/Pink Floyd (1973) - The Dark Side of the Moon/06 Pink Floyd - Money.flacI also make sure all tags are set correctly so that they get sorted correctly in programs like Jellyfin and Finamp
I use a manual approach for my music:
First, I use Musicbrainz Picard to tag my music according to their database. Most of the time, “lookup” just works, bacuse the source files are already pre-tagged sufficiently, sometimes I need to “analyze” the files, which is slower, but works with whatever “lookup” didn’t catch.
Then I use kid3 to manually clean up my tags, like fixing Genres. I also use its renaming function to keep the filenames uniform - Artist/YYYY - Album/## - Title.ext
After that, the files get normalized using replaygain/mp3gain.
Only then will the files get moved to my NAS, where every device will be able to access them, and overnight my phone will automatically grab any newly added music and copy it to the phones SD card.
Yeah, at some point, I told Picard to just re-sort everything and that was not a good idea. Some songs got renamed or put under a different artist, because I guess, the actual song is not in the MusicBrainz database.
I do have a backup that I should restore actually, but yeah, difficult to notice such changes and especially to know how much damage was done.I did also figure, I should just add the unknown songs into MusicBrainz, but boy, I added one album and that took more than half an hour…
Definitely leaning more and more towards that unsorted life…
Some songs got renamed or put under a different artist, because I guess, the actual song is not in the MusicBrainz database
How did you manage that? If picard can’t find a song, it won’t put it in the rightmost view and it won’t be processed.
I don’t let Picard move my files, only tag and rename them, because (last time I tried) I couldn’t easily see where it was going to move the files to verify if it’s correct. I run Lidarr pretty much exclusively to sort everything correctly lol.
beets with a whole bunch of custom scripts. I tried using picard but found it to be completely useless, it rarely finds a match and when it does it decides it belongs to multiple album editions rather than just 1.
If you find it does that, like:
Album1 7/12 tracks
Album2 1/15 tracks
Album3 4/21 tracks
I just click and drag Album2 and Album3 into Album1
I use Picard, I never had a issue of it changing the actual file, just adding mp3 tags and cover images. I didn’t even know it could mess with the length of the song, maybe check your settings? Most issues I’ve had with Picard have been connection issues, but that usually gets fixed with clicking the refresh thingy.
Anyway, I spent like a week doing 4-8 hours of “work” per day to get my existing music library tags and filenames sorted with Picard. Since then, all new music that gets added to the PC is put into a temp folder, ran through Picard and only then moved into the music library folder.
For the file tags I use the defaults that Picard comes with, I also have a plugin that adds additional musician information into the song. Picard also changes the directory and filenames into /Artist Name/Album Year - Album Name/01. Title.flac, so for example /Björk/1993 - Debut/01. Human Behaviour.flac
Recently I started adding lyrics as .lrc files, but that looks like its going to be more work than its worth. If I wanted all songs to have lyrics files, I’d have to go through most of my non-English language songs manually, the apps seem to have some issues with that. Also, for stuff like Kent, who have 2 albums in Swedish and English, the apps don’t seem to understand that and insist on using the English lyrics for the Swedish versions.
from the sounds of it it’s not changing the actual file, just changing the duration tag which is then being read by whichever wonky app OP is using. Why does picard change the duration tag rather than just rely on the file? who knows.
I just started properly tagging new music at some point and now my library is largely tagged correctly.
For tagging I use kid3, great KDE application for that.
I also sort my music into a folder layout like this to know where I got it from and potentially upgrade the quality.
MusicRaw - Artist1 - Bandcamp - Album1 - Tidal - Album2 - Album3 - Youtube - ytrip album - Artist2 - Album1 (not moved to a separate source) - Tidal - Album2 - Album3 - ytrip albumI then have a script to loudness-normalize (come fight me) all music and write it to another subfolder.
A second script takes those normalized files and symlinks them into a structure like this:Music - Artist1 - Album1 - Album2 - Album3 - ytrip album - Artist2 - Album1 - Album2 - ytrip albumI tried switching to Picard, but for somewhat obvious reasons it doesn’t support my insane structure.
Why not use ReplayGain tags to capture the normalisation information and let your player adjust non-destructively? Of course I don’t care if you do it by actually re-normalising – they’re your files. Just curious!
Depending on what device/software/etc. you use, your player might not be able to read that normalization info. For that reason alone, I still use mp3gain to actually modify my files, I don’t have to worry about whether or not the player will use the replaygain info, or not.
That feature didn’t exist when I started and I haven’t bothered to change it yet. Since this also needs support on all clients, it’s somewhat less portable than my solution.
Edit: Reason 2 I’m not sure how different clients handle the dynamic adjustments
Thanks for the KDE application recommendations!







