# Tags special character cleanup help

**URL:** <https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551>\
**Category:** Support\
**Created:** [September 28, 2021, 4:30pm UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551 "2021-09-28T16:30:05Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![asamirid](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/e5b9ba/32.png) [@asamirid](https://community.mp3tag.de/u/asamirid)\
**Post date:** [September 28, 2021, 4:30pm UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/1 "2021-09-28T16:30:05Z")

</div>

Hello there,

i wanna do some title cleanup and normalization

please help me to go from

Title: !(Fairuz) == - + (Adesh Kan Finas) COVER by Talia

to

Title: Fairuz \_ Adesh Kan Finas \_ COVER by Talia

i need to create one action to remove all the unneeded characters "=, +, -, (, ), !," and there is more other characters in the other files tags.

can i make one role to remove all the spam clunky characters and cleanup all the TAGS

p.s. i tried to read the help topic but wasn't detailed enough.

thank you ✅✅

---

<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:** [September 28, 2021, 4:54pm UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/2 "2021-09-28T16:54:10Z")

</div>

> [@asamirid](#):
>
> Title: !(Fairuz) == - + (Adesh Kan Finas) COVER by Talia

I am pretty sure that even following the given example it will become an extremely difficult task to really treat only the special characters correctly.  
E.g. you have 2 pairs of parenthesis - one apparently should be remove, the other one replaced with underscores. Does this always apply? How do you treat files where there is just one pair?  
Then: the hyphen is fairly often at least part of English texts - should this really be removed?

Anyway: for each character that you do not like, create an action of the type "Replace" for TITLE. You can join all the replace actions in a single action group so that you get all the specified characters replaced with just one call of the action group.  
I do not think that there is a pre-defined set of characters that you would call "special".

> [@asamirid](#):
>
> and cleanup all the TAGS

I would never attempt to blindly replace all those characters in the whole tag. E.g. in TRACK the `/` should not be replaced as it serves as separator.

I just scanned through a couple of files and found:  
E=MC² by Big Audio Dynamite - replacing the = would make a strange title.  
Alone + Easy Target by the Foo Fighters ...  
Beats + Pieces by Coldcut  
Crows + Locusts by Brooke Fraser  
Help! by the Beatles  
Groups like P!nk or Sash!  
Crash! Boom! Bang! by Roxette  
... and parenthesis all over the place.  
and many more.

I would definitely filter for each character first and then decide which file should be treated.

---

<div class="post-metadata">

**Author:** ![asamirid](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/e5b9ba/32.png) [@asamirid](https://community.mp3tag.de/u/asamirid)\
**Post date:** [September 28, 2021, 9:08pm UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/3 "2021-09-28T21:08:19Z")

</div>

> [@ohrenkino](#):
>
> Anyway: for each character that you do not like, create an action of the type "Replace" for TITLE

i wanna do one replace action for all the special characters in the title, making a role action for each character is very unpractical toward,

here is case

action: replace  
field: TITLE  
characters "= or + or , or ( or , or ) or , or ! or ,"  
replace with "\_"

how can i format this action as the given examples doesn't help toward this ‼ ⁉

---

<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:** [September 28, 2021, 10:08pm UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/4 "2021-09-28T22:08:19Z")

</div>

> [@asamirid](#):
>
> replace action for all the special characters in the title

The following characters are not special, they are valid and often used in the tag TITLE.

> [@asamirid](#):
>
> characters "= or + or , or ( or , or ) or , or ! or ,"

Even if you find some regular expression or other syntax: Such an action would be irreversible!  
You can never change it back and it would destroy every TITLE with valid occurences of your characters.  
@ohrenkino already has listed several examples where this action would fail dramatically.

I highly suggest not to do that!

---

<div class="post-metadata">

**Author:** ![asamirid](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/e5b9ba/32.png) [@asamirid](https://community.mp3tag.de/u/asamirid)\
**Post date:** [September 29, 2021, 4:14am UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/5 "2021-09-29T04:14:10Z")

</div>

> [@LyricsLover](#):
>
> The following characters are not special

i know, lets call it the rubbish unwanted characters.

> [@LyricsLover](#):
>
> You can never change it back and it would destroy every TITLE with valid occurences of your characters.

iam aware of that and ready to any unexpected consequences.

but i still need the help to create my action with one simple role, either with regex or with replace or any other method.

what is the proper syntax to create this role ⁉

if found "A" or "B" or "C"  
replace any with "D"

is this possible ??

thank you ✅✅

---

<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:** [September 29, 2021, 4:33am UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/6 "2021-09-29T04:33:28Z")

</div>

> [@asamirid](#):
>
> but i still need the help to create my action with one simple role

Create an action Group.  
Add an action of the type "Replace" for every character that you want to replace and for every field in which you want to replace that.  
Then call that action group.  
More on actions and action groups can be found in the [help](https://docs.mp3tag.de/actions).

---

<div class="post-metadata">

**Author:** ![asamirid](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/e5b9ba/32.png) [@asamirid](https://community.mp3tag.de/u/asamirid)\
**Post date:** [September 29, 2021, 4:54am UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/7 "2021-09-29T04:54:23Z")

</div>

> [@ohrenkino](#):
>
> Create an action Group.  
> Add an action of the type "Replace" for every character that you want to replace and for every field in which you want to replace that.  
> Then call that action group.  
> More on actions and action groups can be found in the [help](https://docs.mp3tag.de/actions).

this is not helpful in my case, i want to create something like this

**$replace(%title%,?,,`, ,.,,^,,'',)**

but i can't understand the syntax as it's not in the help page, can you explain it to me, and how to set it as an action 👀

---

<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:** [September 29, 2021, 4:56am UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/8 "2021-09-29T04:56:26Z")

</div>

Scripting function create a string as a result.  
So you can use them anywhere where a format string is required.  
To test scripting function, use Converter\>Tag-Tag which has a preview.  
Use the help for further information on scripting functions.

---

<div class="post-metadata">

**Author:** ![asamirid](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/e5b9ba/32.png) [@asamirid](https://community.mp3tag.de/u/asamirid)\
**Post date:** [September 29, 2021, 5:05am UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/9 "2021-09-29T05:05:27Z")

</div>

you still didn't explain the building syntax o this string and how to add to it

**$replace(%title%,?,,`, ,.,,^,,'',)**

and again the help page doesn't have enough samples 😕😕

---

<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:** [September 29, 2021, 5:15am UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/10 "2021-09-29T05:15:26Z")

</div>

This is the text from the help:  
**Replace**

Command: **$replace(string,from,to)** or **$replace(string,from1,to1,from2,to2,...)**  
Example: `$replace(%artist% - %album% - %track% - %title%,_,-)`  
This example replaces all underscores with dashes. You can provide additional pairs of from/to as parameters.

Where in the explanation do you get stuck?

I strongly suggest that you use Converter\>Tag-Tag to test your expression first. Try with a single pair first, then add others and see if the expression still returns a valid result.

---

<div class="post-metadata">

**Author:** ![asamirid](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/e5b9ba/32.png) [@asamirid](https://community.mp3tag.de/u/asamirid)\
**Post date:** [September 29, 2021, 5:59am UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/11 "2021-09-29T05:59:11Z")

</div>

> [@ohrenkino](#):
>
> Where in the explanation do you get stuck?

ok, now iam getting closer, but 2 issues i wanna understand

![image_2021-09-29_075005](https://community.mp3tag.de/uploads/default/original/2X/7/739beb317c6294a3e9f0f1824c68fc96e3ccfced.png)

first if i select the field title in the upper selection as in the pic, why i add "%ARTIST% - %ALBUM% - %TITLE%" in the "format string" field ?? can i add all the needed fields in up in the "field placeholder itself" ??

second and more important, how can i remove these "(" ")" characters as it's part of command itself, but it's also everywhere in the tags fields and i want to remove them ??

any ideas ??

---

<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:** [September 29, 2021, 6:06am UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/12 "2021-09-29T06:06:11Z")

</div>

> [@asamirid](#):
>
> how can i remove these "(" ")" characters as it's part of command itself

Again, see the help:

## Characters with special functionality

| `[...]` | The contents of brackets are displayed only if at least one of the placeholders used inside the brackets has been found. |
| --- | --- |
| `'` | Outputs raw text without parsing. This will output the contained string and ignore all reserved characters. If you want to output this character, please use `''`. |
| `[]$%` | You have to put a single quote around these reserved characters if you want to use them unparsed. |
| `,()` | These characters must only be escaped when they are inside a scripting function. |

> [@asamirid](#):
>
> why i add "%ARTIST% - %ALBUM% - %TITLE%" in the "format string" field ??

Indeed. You only enter the fields that you really want to treat. In this case it is most likely just %title%.  
But as you can use the scripting functions also for format strings like in Converter\>Tag-Filename where more than just one field may be in need of such a treatment, it is also possible to set more field variables and text constants.

---

<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:** [February 9, 2026, 12:29pm UTC](https://community.mp3tag.de/t/tags-special-character-cleanup-help/54551/13 "2026-02-09T12:29:26Z")

</div>


