# MP3: Remove Lyrics3 tags

**URL:** <https://community.mp3tag.de/t/mp3-remove-lyrics3-tags/46783>\
**Category:** Off-Topic\
**Created:** [October 18, 2019, 12:39pm UTC](https://community.mp3tag.de/t/mp3-remove-lyrics3-tags/46783 "2019-10-18T12:39:51Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Moonbase](https://community.mp3tag.de/user_avatar/community.mp3tag.de/moonbase/32/207_2.png) [@Moonbase](https://community.mp3tag.de/u/Moonbase)\
**Post date:** [October 18, 2019, 12:39pm UTC](https://community.mp3tag.de/t/mp3-remove-lyrics3-tags/46783/1 "2019-10-18T12:39:51Z")

</div>

Removing the (nowadays more or less obsolete) **Lyrics3 tags** from MP3 files still seems an issue in 2019.

Although they can be cleanly removed using Mp3tag by setting your tagging options correctly, removing all tags and immediately doing an Undo, this can be a little scary for some, especially if you have real large libraries (mine is about 150,000 tracks in total). (Personally, I never had problems with this method, kudos to Florian for a great software!)

This is why I wrote a little Python tool to remove _Lyrics3_ and _Lyrics3v2_ tags from MP3 files, called **rmlyrics3**. It also has a "dry-run" option so you can check before actually modifying your valuable files.

The little tool is free and open source software and available on GitHub:

> **[Moonbase59/rmlyrics3](https://github.com/Moonbase59/rmlyrics3)**
>
> A Lyrics3 tag remover for MP3 files, written in Python. - Moonbase59/rmlyrics3

For those interested, there’s also some more technical documentation there.

---

<div class="post-metadata">

**Author:** ![Moonbase](https://community.mp3tag.de/user_avatar/community.mp3tag.de/moonbase/32/207_2.png) [@Moonbase](https://community.mp3tag.de/u/Moonbase)\
**Post date:** [October 19, 2019, 11:33am UTC](https://community.mp3tag.de/t/mp3-remove-lyrics3-tags/46783/2 "2019-10-19T11:33:08Z")

</div>

@LyricsLover asked if an executable (.exe) Windows version could be made, for Windows systems that have no preinstalled Python.

The wish has been granted! 🙂  
In the [repository’s](https://github.com/Moonbase59/rmlyrics3) `dist/` folder, there is now a `rmlyrics3.exe` executable that should run on _Windows 7_ and above.

---

<div class="post-metadata">

**Author:** ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)\
**Post date:** [October 19, 2019, 11:50am UTC](https://community.mp3tag.de/t/mp3-remove-lyrics3-tags/46783/3 "2019-10-19T11:50:33Z")

</div>

Thank you very much for the windows version @Moonbase.  
Just my 2 cents:  
Could you add some statistics at the end of the execution? Something like "123 files checked, 0 lyricsv3 removed, 2 files corrupt" or something similar? Maybe as additional option?  
_(This version doesn't show actually if the tool has nothing to do or just not found any file)_

---

<div class="post-metadata">

**Author:** ![Moonbase](https://community.mp3tag.de/user_avatar/community.mp3tag.de/moonbase/32/207_2.png) [@Moonbase](https://community.mp3tag.de/u/Moonbase)\
**Post date:** [October 19, 2019, 1:56pm UTC](https://community.mp3tag.de/t/mp3-remove-lyrics3-tags/46783/4 "2019-10-19T13:56:47Z")

</div>

You’re welcome.

1. You might want to update the exe, I just added a shell glob simulation for Windows, so things like "\*.mp3" without the "-r" recursive option work.

2. Hmmmm, I wouldn’t really like to, the Linux way would be to simply "rmlyrics3 something something\_else | wc -l" to get the number of files changed. Typically, Linux also outputs nothing if nothing happened. Let me think about it … maybe an option …

In any case (as mentioned on the page), you should write rmlyrics3’s output to a text file, so you could check which files were modified in case something goes wrong … also easier to look for the "WARNING: " messages for corrupt files in a text file. I _did_ mention "no guarantees" and "have a backup", right? 😉

---

<div class="post-metadata">

**Author:** ![Moonbase](https://community.mp3tag.de/user_avatar/community.mp3tag.de/moonbase/32/207_2.png) [@Moonbase](https://community.mp3tag.de/u/Moonbase)\
**Post date:** [October 19, 2019, 2:56pm UTC](https://community.mp3tag.de/t/mp3-remove-lyrics3-tags/46783/5 "2019-10-19T14:56:19Z")

</div>

Well, I’m not unreasonable … new `-s` (`--stats`) option added.  
Happy testing! 🙂

---

<div class="post-metadata">

**Author:** ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)\
**Post date:** [October 19, 2019, 4:50pm UTC](https://community.mp3tag.de/t/mp3-remove-lyrics3-tags/46783/6 "2019-10-19T16:50:29Z")

</div>

Much better, thanks @Moonbase for the super fast addition!

There seems to be something broken with` -r` (recursive).  
Neither `rmlyrics3.exe -r -s *.mp3` nor `rmlyrics3.exe -s *.mp3` scans all current and all subdirs on Windows 10.  
If I use some nested directories:  
`C:\Temp\Dir1\Subdir1\subsubDir1\subsubsubDir1\1.mp3`  
or  
`C:\Temp\A\A R I Z O N A\ASYLUM\2019\01 - Let Me Know.mp3`  
and start rmlyrics3.exe from `C:\Temp` this subdirectories will not be scanned (what your new -s confirms). Only the \*.mp3 on `C:\Temp` will be analyzed.

But wait....  
If I use the unusual window syntax:  
`rmlyrics3.exe -r -s *.mp3 .`  
(with a space and dot at the end of the command to say "actual directory", it seems to work and returns _220 files checked, 0 files modified, 0 files are corrupt_

---

<div class="post-metadata">

**Author:** ![Moonbase](https://community.mp3tag.de/user_avatar/community.mp3tag.de/moonbase/32/207_2.png) [@Moonbase](https://community.mp3tag.de/u/Moonbase)\
**Post date:** [October 19, 2019, 7:03pm UTC](https://community.mp3tag.de/t/mp3-remove-lyrics3-tags/46783/7 "2019-10-19T19:03:35Z")

</div>

That’s intentional. You’d typically specify one (or more) _single_ directories like

```bash
rmlyrics3 "C:\Temp\Newfiiles\*.mp3"

```

(which would only scan exactly the specified files in this directory and _not_ in any subdirectories)

–or–  
something like "all my new files (recursively)"

```bash
rmlyrics3 -r "C:\Temp\Newfiles" "C:\Folder with blanks\More MP3s"

```

(which would scan `C:\Temp` and the other one and _all their subdirectories_ for MP3 files).

That said, a single dot `.` denotes "this directory" (the one I’m in) and would work like `*.mp3`.

"path" arguments in general follow the Linux shell globbing rules.

If you said (without quotation marks):

```bash
rmlyrics3 C:\Temp\A\A R I Z O N A\ASYLUM\2019\01 - Let Me Know.mp3

```

the program would actually try to scan the files

```auto
C:\Temp\A\A
R
I
Z
O
N
A\ASYLUM\2019\01
-
Let
Me
Know.mp3

```

You need quotation marks around the file name(s) in this case (as is normal in Windows for other software, too):

```auto
rmlyrics3 "C:\Temp\A\A R I Z O N A\ASYLUM\2019\01 - Let Me Know.mp3"

```

Just remember it _doesn’t split_ file paths, so you’d specify folder paths just using the folder name (no "\*.mp3" appended!). `rmlyrics3` automatically scans for `*.mp3` internally (case-insensitive, so `*.MP3` is also okay on Windows).

In your first example above (scanning the current directory), you’d either use:

```bash
rmlyrics3 -r -s .

```

(scans _this_ directory and _all subfolders_), or:

```bash
rmlyrics3 -s *.mp3

```

(scans all MP3s in _this_ directory and _no subfolders_).

Good luck!
