# Remove language token from UNSYNCEDLYRICS

**URL:** <https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527>\
**Category:** Support\
**Created:** [July 11, 2023, 10:57pm UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527 "2023-07-11T22:57:10Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rainout](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/r/bc79bd/32.png) [@Rainout](https://community.mp3tag.de/u/Rainout)\
**Post date:** [July 11, 2023, 10:57pm UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/1 "2023-07-11T22:57:10Z")

</div>

Sorry for the necro-bump, but I had the same problem and found the solution:

1. You need to use Actions (quick): replace with regular expresion (instead of just "Replace")

2. All characters are "literal" except `.|*?+(){}[]^$`. These characters are literals when preceded by a `\`. So you need to add a \ before any | so it can be replaced

Then you just replace any `eng\|\|` with "" (just blank) and its done, no more language token.

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [July 12, 2023, 6:08am UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/2 "2023-07-12T06:08:35Z")

</div>

> [@Rainout](#):
>
> Then you just replace any `eng\|\|` with "" (just blank)

If you want to replace a string constant (in your case `eng||`) with nothing, then a plain "Replace" is sufficient which means that you do not have to escape any special characters.

The data in the field UNSYNCEDLYRICS will get an invalid format for ID3V2.3 tags which may lead to the effect that players refuse to display that field - so I wonder why anyone should do it.

---

<div class="post-metadata">

**Author:** ![poster](https://community.mp3tag.de/user_avatar/community.mp3tag.de/poster/32/4881_2.png) [@poster](https://community.mp3tag.de/u/poster)\
**Post date:** [July 12, 2023, 6:45am UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/3 "2023-07-12T06:45:51Z")

</div>

> [@ohrenkino](#):
>
> The data in the field UNSYNCEDLYRICS will get an invalid format for ID3V2.3 tags which may lead to the effect that players refuse to display that field - so I wonder why anyone should do it.

That won't happen because MP3Tag prevents that. If the language token is replaced with "Nothing" in an action (it doesn't matter whether with Replace or Repace with a regular expression), Mp3Tag resets the language token. In this case and the language token defined in  
`File->Options->Tags->Advanced`  
is taken.

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [July 12, 2023, 6:49am UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/4 "2023-07-12T06:49:24Z")

</div>

You are right.  
So it looks even more like a questionable undertaking.

---

<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:** [July 12, 2023, 7:05am UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/5 "2023-07-12T07:05:21Z")

</div>

If someone want to replace the "wrong" language token in the UNSYNCEDLYRICS with "unknown", you can use `xxx||` and set the language identifier to `xxx` and the description to an empty string.

---

<div class="post-metadata">

**Author:** ![poster](https://community.mp3tag.de/user_avatar/community.mp3tag.de/poster/32/4881_2.png) [@poster](https://community.mp3tag.de/u/poster)\
**Post date:** [July 12, 2023, 7:46am UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/6 "2023-07-12T07:46:36Z")

</div>

There is a little misleading behaviour in the converter with it's previews.  
The previews of a formatstring in Tag-\>Tag like `$replace(%unsyncedlyrics%,eng||,)` have no language token, but as result of the convertion you will see the language token defined in the options again.

---

<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:** [July 12, 2023, 8:00am UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/7 "2023-07-12T08:00:14Z")

</div>

The instant preview does not show the `eng||` language token and a description anymore, you are right.

 ![image](https://community.mp3tag.de/uploads/default/original/2X/1/11bc69ab04d3cd6d436c8829726a955190185d0d.png)

Update 10.55 Uhr: As @poster correctly recognised, this is not true:  
~~The preview in a text editor (after pressing the Preview-Button in Mp3tag) shows the result as it will be written into the tag - including the forced `eng||`~~

As you wrote above

> [@poster](#):
>
> the language token defined in  
> `File->Options->Tags->Advanced`

this forced language token can be set in the Mp3tag Options:  
 ![image](https://community.mp3tag.de/uploads/default/original/2X/6/65d882616106183b352f6cc7d2609a7aa2366ad3.png)

---

<div class="post-metadata">

**Author:** ![poster](https://community.mp3tag.de/user_avatar/community.mp3tag.de/poster/32/4881_2.png) [@poster](https://community.mp3tag.de/u/poster)\
**Post date:** [July 12, 2023, 8:41am UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/8 "2023-07-12T08:41:28Z")

</div>

> [@LyricsLover](#):
>
> The preview in a text editor (after pressing the Preview-Button in Mp3tag) shows the result as it will be written into the tag - including the forced `eng||`

Hm, not here. Perhaps you had a look at the original text in the preview and not the resulting text?

---

<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:** [July 12, 2023, 8:54am UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/9 "2023-07-12T08:54:29Z")

</div>

To be sure I entered ZZZ as language code in the options and tried it again.  
**You are right (again)!**

The preview in a text editor also does NOT show the forced ZZZ language, it shows that `eng||` will be removed, after the `->`.  
So both previews - the instant one and the one after pressing Preview - does not show the content eventually written into the UNSYNCEDLYRICS tag.  
(In my test case `ZZZ||` will be written before the Lyrics text itself).

---

<div class="post-metadata">

**Author:** ![Rainout](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/r/bc79bd/32.png) [@Rainout](https://community.mp3tag.de/u/Rainout)\
**Post date:** [July 31, 2023, 3:42pm UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/10 "2023-07-31T15:42:42Z")

</div>

Plain "Replace" wasnt working with the same parameters, I don't know why.  
Also foobar2000 (Windows) and Musicolet (Android) display the eng|| string on the lyrics, making the first verses the last (because it invalidates the timestamps), and none of those have any problem with the missing lang string, I wonder if this is caused because all my songs are formatted in OPUS.

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [July 31, 2023, 3:49pm UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/11 "2023-07-31T15:49:11Z")

</div>

> [@Rainout](#):
>
> my songs are formatted in OPUS

You may have noticed that in this thread, the language token was attributed solely to ID3V2.3 tags as othwise it would be an

> [@ohrenkino](#):
>
> invalid format for ID3V2.3 tags

You are right that OPUS does not need the token.

The miracle that a plain replace action does not work either needs more explanations or can be ignored as you found a complicated but working way.  
But for everyone else I would still recommend the plain replace action as a text constant is supposed to be replaced with another one - so there is no pattern that needs to be described by a regular expression.

---

<div class="post-metadata">

**Author:** ![system](https://community.mp3tag.de/uploads/default/original/2X/c/ce7035d426cb755a7916793326d23b465222a407.png) [@system](https://community.mp3tag.de/u/system)\
**Post date:** [August 30, 2023, 3:49pm UTC](https://community.mp3tag.de/t/remove-language-token-from-unsyncedlyrics/61527/12 "2023-08-30T15:49:48Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
