Remove accents and special characters from names
You try to upload Annual report (versión 2) — Spain.pdf and the
form rejects it without saying why. Or it uploads, and when you download it
back from the server it is called
Annual%20report%20(versi%C3%B3n.pdf. Or you move it to a Mac and
the accented letter arrives split in two. All of that comes from the same
place: file names with accents, spaces and symbols do not travel well.
What Windows forbids
Windows accepts none of these nine characters in a file name:
\ / : * ? " < > |
It also refuses to let a name end in a space or a dot, and there is a list of
reserved names left over from the MS-DOS era that still throw errors today:
CON, PRN, AUX, NUL,
COM1 through COM9 and LPT1 through
LPT9. A file called aux.txt simply cannot be
created.
What Windows allows but will cause you grief
Accented letters. Windows accepts them, but outside Windows
things get complicated. An older web server, a management system written in the
nineties or a badly written script can turn versión into
versión.
There is also a subtler problem almost nobody knows about: an accented letter can be written two different ways that look identical on screen. Either as a single character, or as the plain letter followed by an invisible combining accent. Windows uses the first and macOS the second, which is why a file copied from a Mac sometimes refuses to show up when you search for it by name on Windows.
Spaces. In a web address they become %20, and
on the command line they force you into quotation marks. Not fatal, but
constant friction.
Em dashes and smart quotes. The — and the
“curly quotes” Word inserts automatically are not the same
characters as the hyphen and quotes on your keyboard. They are the usual
suspects when something fails and the name looks perfectly ordinary.
1. By hand, if there are few
Select, F2, type. For three files it is the fastest thing going
and you need read no further.
2. PowerShell, to strip accents in one pass
This walks the folder, decomposes each accented letter and keeps only the base letter:
Get-ChildItem | Rename-Item -NewName { [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding(1251).GetBytes($_.Name)) }
What it cannot do: it is fragile. Depending on your regional settings it can leave question marks where letters were, and some characters simply have no decomposition, so it leaves them alone. No preview, no undo.
The detail nearly every solution skips: stripping accents
works by decomposing a letter into "base letter + accent" and throwing the
accent away. With á, é, ñ or
ü that is fine. But ß, ø,
ł, æ, þ and đ are not
accented letters, they are letters in their own right, and that method either
leaves them untouched or deletes them. If you work with German, Nordic or
Polish files, that is exactly where it will fail you.
3. In batches, seeing the result first
TandaFiles has a clean up characters rule built for this:
- Open folder and pick the folder.
- Add the Clean up characters rule.
- Tick strip accents and special letters, and if you want, spaces to hyphens and remove extra spaces.
- In the characters-to-remove box, type whatever else is in the way, for
example
()[].
It turns ß into ss, æ into
ae, ø into o, ł into
l and so on for the other letters that are not simply accented
vowels, rather than letting them through. The table shows how every name will
end up as you configure it, flags in red if two files would end up with the same
name, and there is an undo button.
What a name should look like
If you want a name that works everywhere — on Windows, on a Mac, on a Linux server and inside a web address — stick to this:
- Unaccented letters, numbers, hyphens and underscores.
- All lowercase, because Linux distinguishes case and Windows does not, and that difference causes odd collisions.
- The date at the front as
2026-06-14, if order matters. - No spaces.
So Annual report (versión 2) — Spain.pdf becomes
2026-06-14_annual-report-v2-spain.pdf. Less pleasant to read, but
it will not fail on you anywhere.