Feel like tagging your music? You might as well buy fresh.

If you happen to have been born before the digital revolution, and you were old enough to listen to music back then, you probably own a sizable collection of music tracks that have not originated from cloud stores. This means that when you play these songs or tracks in a typical media player, they often show up without any fancy art or tags.

I happen to belong to this camp, and I thought it could be a nice idea to tidy up the multi-decade collection. But how does one go about arranging and properly cataloging songs ripped and transcoded from old, dusty CDs into a spotless digital library?

Listen to my heart beets

As always, Linux to the rescue. In fact, in general, Linux is often a very good choice when you need to dabble in file conversions, editing, tagging, and such. You also get a loads of command line tools, so you can easily script and automate your tasks, another bonus. In this particular case, the search pixies took me over to Beets and Picard. The former is labeled as the music geek’s media organizer, or even more aptly, quoting, the media library management system for obsessive-compulsive music geeks. Hello! The latter is a cross-platform music tagger, with a nice frontend, despite being written in Python, and an even nicer name. It also uses the MusicBrainz database to help you guess and find the right tags for your songs. To be fair, beets does the same thing, from the command line.


I decided to start with the command line tool. It is indeed a geeky product, because you need to use a hidden configuration file and populate it with desired presets. You can also set them all during runtime using environment variables. In general, beets will let you configure the music library, the location for your database, whether to import cover art, how to format file names, whether to treat albums and singles differently, and more.

Following man pages and online help, I quickly discovered that the expected format for the configuration file has been deprecated. Rather than using a text file with declarative blocks similar to Samba, the new version uses the YAML format, deeply buried inside the .config sub-directory. This is very poorly documented, so you may end up importing music once, not really pay attention where the new configuration is stored, and then wonder why Beets ignores changes to the default beetsconfig file. For instance, the old school style:

directory: /home/roger/Test
library: /home/roger/beets/library.blb


# Automatically migrated from legacy .beetsconfig.

directory: /home/roger/Test
library: /home/roger/beets/library.blb

Plus, the new version ignores blocks, as well as tabs. However, assuming you are savvy enough to handle the hurdles of bad documentation, which is kind of a paradox for a program supposedly designed for OCD geeks, you might eventually make progress.

I successfully converted roughly 100 songs in about 1 hour of work, so it’s hardly fully automated and plug ‘n’ play as you may be led to believe. Moreover, I did not have any cover art, and all the files were sorted in a very annoying manner: Non-Album/Artist/Song. Trying to change the singleton declaration did not work for me.

Beets config file, old format

Beets configuration in the old format. The documentation is wonky.

Beets working

Using beets on the command line.

I used the following configuration and bits and pieces thereof, without any success. I tried to edit the program itself and change the Singleton macro definition, again without much success. This caused much frustration with the aforementioned OCD demons.

directory: /home/roger/Test
library: /home/roger/beets/library.blb
path_format: $artist - $title
import_art: yes

default: $genre/$albumartist/$album/$track $title
singleton: $artist - $title
comp: $genre/$album/$track $title
albumtype_soundtrack: Soundtracks/$album/$track $title

Picard, Make It So!

Captain Jean Luc Picard of the MP3 Library. Installed, fired up, got confused. The interface is a little weird. Once you load files or directories, they will show in the left pane. Then, for each selected item, or bulks, you need to hit the Lookup button. The program will consult its online library and try to find the best match for each entry. You can then view the ‘before’ and ‘after’ tags results in the bottom pane, the optional art, and save the results if you’re happy.

I tried the functionality, and when you work with a small handful of files, it is quite easy and manageable. Once you go bulk, it becomes horrible. In my case, for most of the classical music, which is just labeled Track 01, Track 09 and such, Picard found nothing. Which means you need to go back to something like beets, run it from the command line, perform a manual string search for artist and title, select the best option from the result, and apply changes. Not scalable. Not effortless.

Picard, before tagging

Load the files and folders you need, hit Lookup.

Picard, after lookup

Suggestions are offered in the right pane.

Picard, selected the right option

Manually choose the correct track.

I also tried adding cover art, which did not quite work. If you consult the options, plugins, in a sub-GUI with a badly designed vertical division of the sidebar and the main panel, cover art has its own category, but no matter which files I tried and saved the tags, the cover art was not offered in any way, shape or form, embedded or otherwise.

Cover art options.

You can tweak the cover art settings, but you won’t get any art.

I then tried manually downloading the fanart.tv plugin, and this turned out to be an extremely nerdy, convoluted exercise without satisfactory results. First, you grab the plugin, but you also need the API key. This means registering online. After that, there’s the plugin installation. I tried placing the plugin into the plugins directory manually, without success. Using the options menu inside Picard, and trying to install the plugin this way, I learned that the downloaded version is actually incompatible with the tagger software.

Picard, plugins options & install

Install new plugins.

fanart.tv plugin is incompatible

At the very least, Picard was doing what it was supposed to be doing, and that was adding the relevant information to my tracks. You can inspect the altered files using a program like eyeD, which lets you see the ID3 info embedded in songs. But my quest was far from over, and I was rather disappointed.


I believe there’s a big, big gap in how the MP3 tagging works. It reminds me of my attempt to create the ultimate media experience with Raspberry Pi and associated software. The detection of movie and series titles is quite bad. And if you want to make any changes, you need a PhD in regex. Likewise here, with the music tagging, there’s a lot of extra manual effort required before you can make it work, if at all.

In my humble opinion, the song names should be used as the primary search criteria rather than any tags info, because, let’s face it, if there were tags there in the first place, no one would need the software, now would they. Use any which delimiter to break words into individual search strings, search them all, cross reference the results. Slower but simpler. More accurate. Or something. Better than what I’ve seen so far. Because so far, there isn’t anything to indicate these programs use smart search algorithms based on artist and title.

Anyhow, three or four hours into the tagging adventure, with only about a hundred songs as a sample pool, I had most of them tagged but cataloged in a bad way, or untagged but sorted beautifully. Beets and Picard work, but never quite fully. The automation is there, but not really working. Plugins and functionality are missing. All in all, given the time and energy needed to create the perfect music library, you might as well buy everything new and save yourselves the trouble. Dedoimedo out.

Cover image: memegenerator.net.

  • StructureDr

    Puddletag is a good alternative – I have had better luck with it than Picard.

  • Tim Van Buren

    I know that you prefer to use OS solutions, but if you just want to get it done, may I suggest Foobar2000? It has a nifty sort-of-scripting method for batch processing audio files. I have used it to rename and tag hundreds of files for a media related website I was working on. Love your articles, by the way…

  • Dave McKay

    EasyTAG works for me.

  • http://btylerburton.com b.tyler.burton

    I personally dove headfirst into beets as I had a 150GB library that had some duplicates which beets promised to weed out. One week of tagging later my library was 250GB, all the filenames were screwed, folders mapped incorrectly, etc. I learned the hard way that auto-tagging is a pipe dream and you’re really best curating things manually.