Beets: The music geek’s media organizer
Mood
supportive
Sentiment
positive
Category
other
Key topics
Music Organization
Media Management
Command-Line Tools
The HN community discusses Beets, a command-line music organizer, with many users sharing their experiences and tips for using the tool, while others discuss its limitations and potential alternatives.
Snapshot generated from the HN discussion
Discussion Activity
Very active discussionFirst comment
1h
Peak period
108
Day 1
Avg / period
24
Based on 120 loaded comments
Key moments
- 01Story posted
Nov 10, 2025 at 1:29 AM EST
15 days ago
Step 01 - 02First comment
Nov 10, 2025 at 2:56 AM EST
1h after posting
Step 02 - 03Peak activity
108 comments in Day 1
Hottest window of the conversation
Step 03 - 04Latest activity
Nov 15, 2025 at 7:56 AM EST
10 days ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
There is a webpage on beets website where they list all the functions and explain what it does. Very useful when you go back after half a year and can't remember how it works.
I like having a small number of broad genres - Rock, Hip-Hop, Jazz etc - but the tagging comes up with hundreds of distinct genres :(
[0] https://beets.readthedocs.io/en/stable/plugins/lastgenre.htm...
Limiting to one genre I don't think will fix it - what I want is to define the allowable values for genre, and then limit to one.
It's probably better with the limit one though!
Be sure to enable canonical so it converts the specific genres into their parent genre.
The other thing I've never quite got right is how to deal with classical music and popular music with multiple pressings. A lot of the tagging structure seems oriented around popular music with just one pressing. But I have like 10 different recordings of The Planets and several versions of Red Hot Chili Pepper's Californication, for example.
My current workflow is download, unzip and manually tag (mainly genres, sometimes badly named artists/albums) with MusicBee (which gives me autocomplete for genres so I can reuse existing ones), and then copy the files to the server for Navidrome to pick them up.
Throwing this out here to see if beets would actually work well with what I want after all.
I'm in the midst of a major music library overhaul and would not know how I'd ever get it done without Beets. For example, it's clearing out embedded images, fetching new hi-res artwork and verifying FLAC integrity, as I go through artist by artist.
I think I started all this fussiness exactly because back in the old days when you synced to CDDB, you'd get somebody else's useless record label classification for a reissue or international release that obscured the original label, which in certain genres of music is quite important to be able to better categorize the music for auto playlists. Original year is also critical for auto playlists where you're looking for tunes around a certain era. I also have a vague memory of old CDJs or Serato or some damn thing not displaying the name I wanted so having to shuffle stuff around to Composer or Album Artist or something to make it work, and now here I am with custom-tagged all the things.
My problem is I was considering replacing all my 320k MP3s with FLACs, which I have for all my Bandcamp purchases and most of my CD rips (although not from Beatport and other online stores)... but I realized it was going to be absolute hell to try and match the untagged files that I downloaded and put straight into cloud storage with the tagged files I already have in the library. It would need some kind of heuristics to fuzzy match the files with what's already there, then retag them with my preferred tags from the MP3, then move the file into the same location the MP3 is, then move the MusicBee proprietary metadata (play count, add date etc) across, then delete the MP3. I keep thinking there has to be a program or a plugin for this, but seems like not, so for now I've just given up and decided that 320k is good enough, actually, which makes me wonder why I'm keeping all these FLACs around in the first place. Not like I'm starting the Library of Alexandria here, I just like music.
Sometime last year, I actually redownloaded all my BC files, and reripped all my CDs (had to re-do genres, but that was fine, I wanted cleaner genres anyway). It’s simply archival. Lossless means you can convert it to whatever file you might want in the future without loss of quality.
This made extra sense for my CD rips, because many of those were from the early 2000s and I made questionable quality descisions ;)
That said, I wouldn't mind going back and retagging my genres in particular because one of the annoying things is that over the years my perception of the genre of certain tracks has changed, so it might be easiest to just roll back to ID3v1 "we got both kinds: house and techno" genres for the broad category and then cram subgenre keywords into the comment field instead... but it's been so long since I used CDJs that maybe all these hacks to maintain compatibility with different players are moot now. I saw that the latest and greatest DJ equipment just hooks up direct to online streaming services so I wouldn't be surprised if it also had a feature to sync everything to MusicBrainz as soon as you plug in a USB, which makes all the fussing around with legacy tags kind of pointless for a casual who mostly just listens or mixes at home.
I stream FLAC at home because I already have it there but I can't say it's "better" than 320 MP3s.
I did a re-rip project during Covid because so many of my rips were 128 bit MP3 from back when storage costs drove all CD ripping decisions.
Edit:typos
I can relate to the problem of revising genre or energy ratings over time. I've gone with custom genre tags for ages, ie "dub/house/techno" or "funk/disco/edits" with a sprinkling of extra qualifiers in the comment field and do bulk updates from MP3Tag/Foobar2k. The extras only really help when preparing "crates" for export to USB for outside use, or when just playing off the entire collection at home. I'm fast, but still not much time to read the comment fields when browsing on the players, much less input any words with the scroll wheel.
I keep every purchase around in FLAC, and the part I might realistically play out stays in AIFF, for minimum fiddling of tags (ie stars map a bit differently between Traktor and Rekordbox) - because of course Rekordbox will warn you you're exporting files you can't play anywhere, but won't do anything to transcode them.
Lossless whenever possible because I just want to give the sound quality as much of a chance as I can when recording sets, especially if they might get posted online and getting lossy-transcoded multiple times. I've tried the mp3 of mp3 thing, and you do hear it at home (out at a gig, most of the time, probably not).
I don't suffer from track bulimia, so the numbers work out - and disk space has gotten a lot cheaper in the last 20 years.
Legacy tags: luckily not an issue for me, I only care about multiple (usually metal) subgenres and that my players show/filter them.
As others say, there is an issue with compounding losses when you transcode mp3 to vorbis or opus, but I've never needed to do that -- and when I export, it's to move the files to lower-quality devices anyway.
Personally I don't get it as for me, there is a clear difference not only between mp3 vs. CD, but even between different bitrates beyond that. Maybe I'm not typical as I've been usually listening to stuff through studio monitors and also usually through a recording interface which handles 192kHz and >24-bit.
Definitely I noticed on certain systems you aren't going to notice a difference as the system itself is the bottleneck (i.e, bluetooth). In my experience though if you use the right driver, so ASIO or WASAPI in Windows (or anything in Mac and Linux nowadays), I can tell the difference instantly on recordings I know well.
Most music did not get released in ultra HD but some things are available in 96kHz and beyond. I recommend checking out Radiohead, Bob Marley, or Pink Floyd in ultra-HD ( >= 48kHz, >= 24-bit) as there have been releases. I have found Bob Marley - Legend in 192kHz 24-bit and it sounds incredible. You can hear each individual member of the percussion section.
[0] https://en.wikipedia.org/wiki/Nyquist-Shannon_sampling_theor...
- buy album on Bandcamp
- download zip
- beet import {zip file name}
And beets extracts the zip, matches the album to musicbrainz, updates any metadata, and drops the files into the directory structure that I like (naming the files how I like them, too).
Very rarely an album will need some more attention, in which case I use Picard to fix it before using beets to import it.
beet import "Iron Maiden.zip" -S 4500ad36-5f92-4e4c-bb24-3a9a57faf550Sometimes there’s just weirdness though - for example recently I bought an album and the band included all the tracks from their previous album as bonus tracks. So I used Picard to split them into the 2 “proper” albums.
It lets you set up fully or partially automated import pipelines with a nice web UI to manage any manual steps needed.
Importing is usually as simple as dropping a zip in a folder and the rest is managed automatically.
I'm still not totally sure I got all the certainty thresholds right, I still sometimes get unexpected behavior when using Beets this way, so I agree that the non-interactive experience is lacking.
This isn't necessarily a fault with beets, really, but a model mismatch. The model of beets is very, very strongly tied to associating each imported item to one well-known, commercial release. While it's possible to stray from that, it takes tons of time and experimentation to cram some things into its model.
Purchased, popular albums are a breeze; they import nicely and make sense. I struggled differing amounts with:
* brand new indie label releases (bandcamp)
* commercial albums variants missing from musicbrainz/discogs
* non-commercial albums (self-released CDRs)
* fan-recorded concerts
* fan-recorded festivals (a special case, a true nightmare)
* fan edits/remixes of commercial releases
* playlists & mix tapes
* mixed media releases
Each was eventually possible, but sometimes it took hours to figure out how to import a specific folder. Worse, after doing one festival it didn't necessarily make it easier to do the next festival. Even if I get to 100% imported, additional imports will still take thought.
This isn't an argument against it, I still think it's a fantastic tool. Just understand that the farther you stray from collecting commercial releases, the more of a struggle it is.
> * brand new indie label releases (bandcamp)
> * commercial albums variants missing from musicbrainz/discogs
This is a great opportunity to fill in those blanks for those services :) I didn't have much to contribute to MB but did have a few albums to add.
Those should be on MusicBrainz. There's even a bootleg release type for fan recordings/illegal copies, and official style guides for live bootlegs.
https://musicbrainz.org/doc/Style/Specific_types_of_releases...
I think if you read through the MusicBrainz about page, it makes a lot more sense:
>As an encyclopedia and as a community, MusicBrainz exists only to collect as much information about music as we can. We do not discriminate or prefer one "type" of music over another, and we try to collect information about as many different types of music as possible. Whether it is published or unpublished, popular or fringe, western or non-western, human or non-human — we want it all in MusicBrainz.
I guess my point is that I like having a directory of music (organized by artist/album) and make the discovery applications I use do the work of finding and playing the music I want.
I've long enjoyed extracted audio from eg Glastonbury sets. I've only got a few that I particularly enjoyed and where the specific track was on youtube - is it that sort of thing? Is there a community of such reprobates?
https://musicbrainz.org/search?query=glastonbury&type=event&...
There is no canonical metadata for a fan recording of a concert or DIY CD-R, so you lose out on nothing by importing the files as they are today.
Once you're over the hump of the first import, beets is a fabulous tool for ingesting new music. It's well worth it.
I do think it's a pretty fair complaint that it really feels like the software is fighting against you when you first encounter something absent from the musicbrainz database (especially if it's something fundamentally unsuited to be added to the database), but I'm not sure if there's an easy solution other than telling people "just hit the `import with existing metadata' button, it's totally fine" when they complain about it.
Thanks for saving me time, I guess? I just maintain very spartan id3 tags on my music, artist, album, song name, track id, and that's about it.
What more would beets give me? How would it improve my experience?
> * commercial albums variants missing from musicbrainz/discogs
I fixed those two by adding the missing releases to the database beets uses as its data source (musicbrainz.org), and importing the album in Beets afterwards. I still get notifications for edits to entries I contributed over a decade ago!
I have found that adding things to Musicbrainz is actually pretty easy (and if you are so inclined like me, pretty rewarding and fun).
Streaming releases (and Bandcamp) you simply drop the release URL into Harmony[1] and it does most of the work for you.
Musicbrainz can represent nearly everything musically related and its all freely licensed, a very cool thing to exist.
Most (non-destructive) edits are auto-applied, whilst the rest go through a 7 day voting period (they are still applied by default unless someone votes against). The barrier to entry is very low.
I find myself needing to create releases for ~10% of the albums I tag, and Harmony is a game-changer for that.
-"frankenstein" musical soundtracks where I've assembled my favorite version of each song from all the various published recordings. Sometimes I've even edited pieces of different recordings together into a hybrid track. -a soundboard recording of my friend's high school talent show performance -Music I've personally recorded from video games or other random sources -Songs where I've edited out parts I don't like (such as overly-long drum solos) leaving just the parts I do.
I've organized these things in a way that makes sense for me, not for the world.
This is like a bookshelf that can only store books with an ISBN that can be classified in the Dewey decimal system. Too bad about your family photo scrapbooks or your personal sketchbooks!
There is value for me in having a central database for this data, for example to find misspellings of the same name. But the fear of having 20 years of custom data entry destroyed by an overzealous tool makes me very hesitant to even try a solution like this.
What I think they're doing (and what I've done) is add music that wasn't already in the global database to it. For example, a promotional CD, or releases from a small publisher, etc.
In these cases, you're not adding personal metadata or mixtapes.
That said, definitely do self organization if it works for you. Most of your examples seem like they're suitable for custom playlists.
The -C option to avoid copying files and the -W option to prevent writing tags (or set it in the config file)
It will still attempt to match and store the results in its DB for later writing to files, or moving, or querying.
For the data to be most useful, you will need a client that connect to Beets to get the data though, Im not sure how prevelant those are. You can use the web-ui plugin though.
This is the best summary of beets. It's wildly flexible and configurable.
It is tagged not only by genre, crates, some songs belong into more than one crate.
Also by mood, which I tag with colours.
And how much I like the song, which is by stars.
I tried Beets and it was very underwhelming in comparison =)
Mixxx is best used with a DJ console, however for me it is also easily used as a player that automatically picks a song from some selected crates in Auto DJ mode.
So I'm in the mood for Salsa, I put that crate as the AutoDJ source.
Later I can change it to progressive rock, or 90's disco, and it will randomly pick songs from the selected crate or crates.
I can also do DJ things, like looping some sections or mashup some songs.
- beets can't delete transcoded files which have been deleted at source.
- beets can't re transcode existing transcoded files when the source has been modified.
- It's impossible to preserve the original directory structure when transcoding because it strips all path separators for "security".
I use a Bash script I've been maintaining for a number of years instead.
Not at all saying this to dismiss your criticism though; absolutely would be great to have better OOTB options. Just putting it out for anyone who wants a workaround :).
Do we assign a "genre" to an artist? Album? Song?
The band R.E.M.: "College Rock"? "New Wave"? "Alternative"?
(Wow, don't even get me started on all the ways you can further slice up "alternative" into "shoe-gaze", "twee", etc. It's, ha ha, naval gazing for the music intelligentsia.)
R.E.M.'s "Don't Go Back to Rockville"? "Country"?
I think "live" and "soundtrack" might be the only two interesting "genres".
More seriously, there’s no reason you can’t assign more than one genre to a song, or say that “it’s a mix of A and B”. You can extend the concept to albums and artists just as easily.
I’m not familiar with R.E.M., but on rateyourmusic.com they’re marked as alternative rock, jangle pop, pop rock, indie rock, neo-psychedelia, and folk rock. “Don’t go back to Rockville” is marked as Jangle pop, and the “Reckoning” album overall is mostly Jangle pop with some influences from post-punk and Paisley Underground.
You may not agree with these categorizations, but it’s a crowd-sourced website so you can go vote for different genres. You may also disagree with the existence of all of these genres, some of which I’ve never heard of myself (but as I said, I haven’t listened much to R.E.M. in general), but my point is more that if you’re familiar with them then you kind of know what to expect from the song.
I’d never heard “don’t go back to rockville”, but just from these genres you named to make your point, I already knew what it would approximately sound like. And indeed listening to it confirmed that.
Yeah, that is kind of making my point. Others perhaps enjoy creative pigeon-holing.
'naval gazing for music intelligentsia' did a pitchfork writer run over your mom?
Genre: Yes
- The CUE maps the audio in a "CD-native" way, like each track can have 1 or more indices, which enables things like pregaps. When you split FLACs into discrete tracks you need to figure out how to project that onto files, do you put the pregaps at the end of previous tracks? At the beginning of next tracks? In short, with a CUE you can emulate the CD experience more accurately.
- If you are seeding a torrent, you need to keep the original data intact.
I'm not sure it's well supported anywhere however. Maybe foobar2000?
Edit: I pulled up the RFC[1] for FLAC, and it seems like this is a use case they had in mind for the embedded cuesheet:
> A cuesheet metadata block can be used either [...] or to provide a mechanism to store locations of interest within a FLAC file.
[0]: https://www.discogs.com/release/6057232
[1]: https://www.rfc-editor.org/rfc/rfc9639.html#name-cuesheet
I've been wanting to build my own Plex alternative for a while now. I've tried all the other tools out there, but Plex is definitely the least bad tool that let me enjoy my music without subscribing to Spotify and others.
I've already spent hours trying to figure out all the things that are required to make this new system. And it's unbelievably complicated. From parsing metadata to converting music, to understanding how deep and complex tagging work for music (yeah, it doesn't sound like it at first, but it truly is infinitely complex), I'm overwhelmed by how hard it would be to build a tool that compete with a combination of beets/iTunes.
I ask because I'm working on a new music app for iOS which has pluggable sources, and so my bias is that most of the issues preventing me from easily enjoying my music library are actually on the client side.
I can install Plex, all my movies, tv-shows, anime and music is there.
Then I can drop Plexamp on my phone, log in with my Plex account and all my music is right there and if I rate a song on my phone, it's updated on Plex and vice versa.
Plexamp is quite good as a standalone app, but as close to greatness as it is, it's a React Native app (better than a Flutter app, but still) that doesn't play well with the iOS ecosystem — no widgets, virtually no Siri/App Intents support, no Apple Music integration, etc.
I also decided that it shouldn't matter where my music "lives", and so it supports any local, self-hosted, or cloud-based source. (These are working today: https://imgur.com/szrkeIJ)
Is there any software that can use this to break up the single mp3 into the numerous individual song tracks ? And insert metadata ? And perhaps also fingerprint each track to match it to a specific version of the song ?
So this might be a task for A.I. - to automate it with sufficient precision.
I also loved that you could set up separate "libraries", so I could have metal and classical arranged by album, and EDM as a bunch of single tracks that are organised into playlists. Only downside is that it's Windows software.
It's more for adding tags before you add them to your collection. You can setup shortcuts to often used tags. Of course it can also rename and move files based on tags.
I then can auto create playlists based on those tags (with a different program)
Different strokes for different folks, that's not to say that Navidrome and Beets aren't amazing pieces of kit.
So if I start on Guzzlemug I'll get some Blood Incantation, but maybe also some Pink Floyd.
It would be nice if a beets background worker could be kicked off when new music is detected to avoid the sequential nature of the commandline and see all the waiting tagging actions at once. This[0] is supposed to do that but it appears deprecated in favor of something else[1].
That being said, the "beets way" works pretty well past the import stage, so I haven't felt the need to move off it for local music.
"An Apology and a Brief Interlude
I would like to sincerely apologize that the autotagger in beets is so fussy. It asks you a lot of complicated questions, insecurely asking that you verify nearly every assumption it makes. This means importing and correcting the tags for a large library can be an endless, tedious process. I’m sorry for this.
Maybe it will help to think of it as a tradeoff. By carefully examining every album you own, you get to become more familiar with your library, its extent, its variation, and its quirks. People used to spend hours lovingly sorting and resorting their shelves of LPs. In the iTunes age, many of us toss our music into a heap and forget about it. This is great for some people. But there’s value in intimate, complete familiarity with your collection. So instead of a chore, try thinking of correcting tags as quality time with your music collection. That’s what I do."
I was momentarily flummoxed by the error message. I pretty quickly realized I had mistakenly commented out all the lines in the import section of the config file. But for a nontechnical person the error message might be a bit hard to interpret. Maybe consider a more beginner friendly message with hints on how to correct the problem?
1 more comments available on Hacker News
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.