Hello,
I am writing to raise a design issue with Mp3tag’s filename handling that has become increasingly problematic in modern usage.
At present, Mp3tag has no global option to enforce safe, ASCII-only filenames or to automatically sanitise Unicode and illegal characters when filenames are created or updated. Instead, users are expected to anticipate every problematic character in advance and manually encode replacement logic into Tag → Filename format strings using chained $replace() calls.
This approach does not scale and is fundamentally brittle.
Unicode punctuation, symbols such as ×, smart quotes, language-specific characters, and other non-ASCII glyphs routinely appear in tags sourced from streaming services, Bandcamp, Discogs, and user submissions. Requiring users to foresee all of these cases is unrealistic, especially when Windows compatibility, DJ software, archival workflows, and cross-platform transfers are involved.
While $validate() removes Windows-illegal characters, it does not address non-ASCII characters, and there is currently no built-in function or preference to enforce ASCII-only filenames, nor a simple “normalise to safe filename” option.
In practical terms, this means:
• Filenames can silently break downstream tools despite appearing valid in Mp3tag
• Users must repeatedly refine ad hoc replacement logic
• The burden of filename safety is placed entirely on the user rather than the application
What is missing is a simple, global, opt-in mechanism such as:
• “Enforce ASCII-only filenames”
• “Automatically normalise Unicode punctuation to ASCII”
• Or a single function that safely transliterates or strips non-ASCII characters without manual enumeration
This is not an edge case. It is now the default reality of modern metadata.
Mp3tag is otherwise an excellent and careful tool, which makes this omission more conspicuous. Filename safety should not depend on the user knowing in advance which characters might appear next month, next year, or in another language.
I am raising this not as a support question, but as a feature gap that directly affects reliability and long-term archival correctness.
Thank you for taking the time to read this. I hope you will consider addressing this at the application level rather than leaving it to increasingly fragile user-side workarounds.
Regards,
Fezz