For scp, rsync, SSH and URLs, the safe choice is the POSIX portable filename set: A-Z a-z 0-9 . _ -. Paste a name below and this profile keeps those characters and turns every space, symbol or accent into an underscore, so the name never needs quoting or escaping on a server.
Only A-Z, a-z, 0-9, dot, underscore and hyphen survive. This is the POSIX portable filename character set.
Spaces, parentheses, symbols and accented letters are replaced with a single underscore, and runs are collapsed so you never get a double.
Portable names need no quoting or backslash-escaping in the shell, so scp, rsync and wildcards just work.
Download this exact setup as a ready-made Filename-safe (SSH / shell-safe) profile. Give it a global hotkey in the Windows app and any name you copy is cleaned for this target the instant you paste, so a Windows machine can prepare files for a Mac, a Linux box or a server over SSH. Same engine as above, entirely offline.
Stick to the POSIX portable filename set: uppercase and lowercase letters, digits, and the three punctuation marks dot ., underscore _ and hyphen - (not as the first character). Names built only from those never need quoting over scp, rsync or SSH.
The shell splits arguments on spaces and treats characters like * ? [ ] ( ) & ; | < > $ as syntax, so an unquoted messy name is misread as several arguments or a pattern. Replacing them with underscores removes the ambiguity.
It is the set defined by POSIX as safe on any conforming system: A-Z a-z 0-9 . _ -, with the hyphen not used as the first character. Filenames restricted to it are the most portable across servers, tools and archives.
It helps. Linux servers are case-sensitive while Windows is not, so mixing cases can cause collisions when files move between them. Lowercasing is optional here; flip on the lowercase option in the tool if you want it enforced.
Cleaning for a different system? Use the tabs above, or head back to the Windows filename cleaner or the full tool on the home page.