I'm using "beets" to organize my mp3s. One album I bought from Amazon as mp3s is incorrectly marked as NOT a compilation when indeed it IS a compilation. I organize my files differently based on whether or not an album is a compilation. No matter what I attempt to do to these mp3s, the changes I apply to the ID3 tags do not stick.

For example:

mp3info -d ../amazon_album/*  # This WIPES the tags
mp3info ../amazon_album/01-01 - Track 1.mp3 
../amazon_album/01-01 - Track 1.mp3 does not have an ID3 1.x tag.

But then when I open the file in any media player, ALL of the information is still there!

So then I tried:

mp3info -a "LOL" ../amazon_album/*
mp3info  ../amazon_album/01-01 - Track 1.mp3
File: ../amazon_album/01-01 - Track 1.mp3
Title:                                  Track: 
Artist:  LOL
Album:                                  Year:  
Comment:                                Genre:  [255]

Yet, in any media player, it still retains all of the original information. Because of this, I'm not able to change the album to a "Compilation" which means I can't organize it in Beets the way I want.

I've confirmed that it's not a file permissions issue. Am I doing something wrong? Is there another way to accomplish this in Linux? Or is there a way I can "trick" beets into treating it as a compilation (so that it uses my compilation path)?

5 Answers 5


To strip id3 tags from an mp3 file you can use the tool id3convert. It has a switch called "strip", -s or --strip.

-s --strip Strip the tags instead of rendering (default=off)


NOTE: Includes both id3v1 & id3v2 tags


$ id3info a.mp3 

*** Tag information for a.mp3
=== TIT2 (Title/songname/content description): Feist - I Feel It All
=== COMM (Comments): (ID3v1 Comment)[XXX]: Music video by Feist performin
*** mp3 info
MPEG2/layer III
Bitrate: 8KBps
Frequency: 22KHz


$ id3convert -s a.mp3 
Converting a.mp3: attempting v1 and v2, stripped v1


$ id3info a.mp3 

*** Tag information for a.mp3
*** mp3 info
MPEG2/layer III
Bitrate: 8KBps
Frequency: 22KHz



Another tool that has the advantage of existing in Ubuntu repositories is eyeD3. Here is the command:

eyeD3 --remove-all music.mp3
  • eyeD3 is the best.
    – BabyBoy
    Commented Apr 18, 2022 at 19:21

mp3info only edits the ID3v1 tags, you need to use a program like eyeD3 or id3v2 that supports ID3v2

More comfortable is to use MusicBrainz Picard to tag your MP3 files (uses the mutagen library underneath).

Since mp3info only supports ID3v1, it cannot delete/wipe the ID3v2 info embedded in the MP3 streams.

  • Both beets and Picard use the mutagen library to tag the files and data from the MusicBrainz.org website, so changing from beets to Picard will not help all that much. The part about ID3v1 is correct, of course.
    – Wieland
    Commented Dec 15, 2013 at 13:17
  • Select Options->Options and then Tags in Picard and you can select to write the ID3v1 tag (not sure if that is on by default). That will get rid of the old ID3v1 info for sure.
    – Zelda
    Commented Dec 15, 2013 at 13:45
  • There is a flag in Beets which allows you to disable autotagging for an import. In another case of the same problem I describe, I was able to solve it by changing the ID3v1 tags, then re-importing it with auto-tagging from MusicBrainz disabled. This preserved my changes and allowed me to import the album as I wanted to. I guess the difference between that case and this case is ID3v2 (which I didn't know about until this post). Gonna try some stuff like eyeD3 and id3v2 now to get rid of those tags in this Amazon album. Commented Dec 16, 2013 at 1:45
id3v2 -D foo.mp3
  • On a Mac, install with: brew install id3v2
  • On Arch Linux, install with: sudo pacman -S id3v2

Zelda's answer provides the correct answer to my question. Turns out I was actually asking the wrong question, so I thought I'd add this answer for the future Googler who stumbles upon this.

Even if I wiped the tags clean (both ID3v1 and ID3v2) and then re-entered them all manually --- beets just would not import it as a compilation.

Determined, I busted out the beets source code and found my problem --- it appears that if one name pops up X number of times as the song artist, it takes it upon itself to declare it not a compilation. At least, that's what I gathered from this code snippet in importer.py:

if task.choice_flag == action.ASIS:
    # Taking metadata "as-is". Guess whether this album is VA.
    plur_artist, freq = util.plurality([i.artist for i in task.items])
    if freq == len(task.items) or (freq > 1 and
            float(freq) / len(task.items) >= SINGLE_ARTIST_THRESH):
        # Single-artist album.
        changes['albumartist'] = plur_artist
        changes['comp'] = False
        # VA.
        changes['albumartist'] = VARIOUS_ARTISTS
        changes['comp'] = True

I didn't read enough of the code to find out anymore details, because as soon as I read that section, I tried removing the name of the prevailing artist, and voila! Beets imported it as a compilation.

This isn't a great solution for me though, because I personally consider an album a compilation even if there is even one other artist on the disc (and it's not a "featuring"). All I can do is eliminate the name of the prevailing artist, import it, and then manually modify the artist of those files to restore the correct artist.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .