Remove Special Characters
Cut everything back to letters and digits, to letters plus basic punctuation, or to plain ASCII — and say which, because “special character” means something different every time.
Runs 100% in your browser•Nothing is uploaded to a server•Instant results
Options
Also clean up
Each of these runs the same code as its own page. The full set, all switched on at once, is the text cleaner.
Input
Before and after
“Special character” depends entirely on where the text is going
There is no single set of special characters, which is why this page makes you choose one rather than guessing. A filename cannot contain / \ : * ? " < > |. A CSV field breaks on the delimiter and the quote character. A legacy database column that is still Latin-1 chokes on anything above U+00FF. A form validator might accept nothing but letters, digits and spaces. Those are four different answers, so the keep setting is the first control on the page.
Letters, digits and spaces is the strictest option and the one most people mean. It keeps letters in every script — é, ü, α, 你 all survive, because they are letters — and removes every symbol, bracket, mark and separator. Also basic punctuation adds back the handful of marks that make text readable rather than decorative, which is usually the right choice for a title or a description field. Plain ASCII is the option for a system that cannot cope with anything else: accented letters are folded to their unaccented forms first so café becomes cafe rather than caf, and whatever is left outside the printable ASCII range is dropped.
Control characters go in every mode, without asking. They are invisible, they are almost never intentional in pasted text, and they are the usual cause of a file that imports two rows short or a string that compares unequal to an identical-looking one. Vertical tabs, form feeds, the delete character and the C0 range all come out; the newline is the one exception, because line structure is not a special character.
The folding checkbox only changes the ASCII mode, and it is the difference between a useful result and a mangled one. With it on, “Café Müller” becomes “Cafe Muller”. With it off, the accented letters are simply outside ASCII and get deleted, leaving “Caf Mller”. If accents are all you want gone and the rest of the text should stay, remove accents does that on its own.
A filename copied out of a spreadsheet
Q3_report~final*v2 — Café Müller.csv
Plain ASCII, folding accents: Q3_reportfinalv2 Cafe Muller.csv (underscores and dots are ASCII, so they survive; the tilde, asterisk and em dash do not)
Special Characters questions
What actually counts as a special character here?
Whatever falls outside the set you pick. In the strictest mode the survivors are Unicode letters, Unicode digits and whitespace; everything else — symbols, currency signs, brackets, quotation marks, box-drawing characters, arrows, dingbats and control characters — is removed. That is a deliberately mechanical definition, because every informal one turns out to mean something different depending on where the text is going.
Will this make my text safe to use as a filename?
It will remove the characters that break filenames, but it is not the tool built for that job. A filename also wants a length limit, a separator instead of runs of spaces, and consistent lower case, which is what the slugify tool does in one pass. Use this page when you need the text itself cleaned rather than converted into an identifier.
Why are my accented letters still there?
Because é and ü are letters, and the first two modes keep letters. Only the plain ASCII mode touches them, and even then it folds rather than deletes when the folding option is on, so café comes back as cafe. If accents are the only thing you want gone, the remove accents page does exactly that and leaves the rest of the punctuation alone.