Skip to content
TextLab

Free special character remover

Remove special characters, keeping what you actually need

Reduce a value to letters, digits and spaces so a form, a filename or an import will accept it — free, with no signup and no length limit. Every category has its own switch, because “special” means something different to a web form than it does to a filesystem: accented letters can be folded to plain ones, kept as they are or deleted, while emoji, currency signs, maths signs, other alphabets and control codes each stay or go on your say-so. The table underneath groups everything it removed with samples, so you can see what the other system was choking on.

  • 100% free
  • No signup
  • café → cafe or café
  • Emoji removed whole
  • Every removal itemised
0characters removedsorted into 0 groups · 0% of the text survived
What happens to accented letters
Keep these too

Type them one after another with nothing between. Filenames usually need the underscore, the hyphen and the dot.

0
Characters in
0
Characters kept
0
Characters dropped
0
Words remaining

Exactly what was taken out

Paste something and every dropped character is grouped here with samples, so you can see what a system was choking on.

How to remove special characters from text

Three steps, starting with the one decision that changes what the words mean.

  1. Paste the value something keeps rejecting

    A filename, a column of product names, a form field, an import that fails on row 340. Drop it in the top box, or hit ⌘V — Ctrl+V on Windows — without clicking into the box first. The header reports how many characters were dropped and what percentage of the text survived, which is the quickest way to tell whether the problem is one stray character or a systematic encoding mess.

  2. Decide what happens to accented letters first

    This is the choice that changes the meaning of the result. Turning é into e keeps every word readable and is what web addresses, filenames and older databases expect. Leaving them exactly as they are treats an accented letter as the letter it is, and removes only symbols. Deleting the letter outright is destructive and occasionally demanded by systems built before Unicode existed.

  3. Add back whatever your target actually accepts

    Digits, spaces, line breaks, other alphabets, everyday punctuation, currency, maths signs and emoji each have their own switch, and the free-text field spares any additional characters you type into it — filenames usually need the underscore, the hyphen and the dot. The table at the bottom groups every character that was removed and shows samples, so you can see exactly what a system was choking on.

Technical specifications

Kept by defaultLatin letters, digits, spaces, tabs, line breaks and letters from every other alphabet
Removed by defaultPunctuation, currency signs, maths and comparison signs, other symbols, emoji, control characters and the widthless invisibles
Accent handlingThree modes: fold é to e, leave accented letters alone, or delete them entirely. Folding splits the letter from its mark and discards the mark, and it touches Latin script only — Cyrillic, Greek, Hebrew and Korean pass through whole
Letters that cannot be decomposed25 mapped by hand because Unicode stores them whole: ø→o, ß→ss, æ→ae, œ→oe, ł→l, đ→d, ð→d, þ→th, ħ→h, ŋ→ng, ŧ→t and their capitals
Emoji handlingRecognised as complete sequences — pictographs, skin tones, regional-indicator flag halves, keycaps, variation selectors and the joiners between them all go or stay together
Your own exceptionsA free-text field of characters to spare, checked before every other rule; _-. is the usual set for filenames
ReportingEvery removed character grouped into up to twelve categories, each with a count and up to six distinct samples
Price and processingFree, no account, and every character is examined inside this tab

Frequently asked questions

What counts as a special character?

Whatever the system rejecting your text says counts, which is why this page asks rather than assumes. A web form usually means anything that is not a letter, a digit or a space. A filename means a specific handful — the slash, the colon, the question mark and a few others that the operating system reserves. An older database means anything outside the first 128 characters, which includes every accented letter. A spreadsheet import often means only the invisible control codes. The defaults here keep letters, digits, spaces, line breaks and other alphabets, and everything else has a switch.

Why is ø still there after I asked for accents to be stripped?

Because ø has no accent to strip — it is a letter in its own right, not an o wearing something. Stripping accents works by splitting a letter into its base and its mark and throwing the mark away, which handles é, ñ, ü and about 500 others. But ø, ß, æ, ł, đ and þ are stored as single indivisible characters, so the split finds nothing and they come through untouched. This page carries a table of the 25 letters in that position and maps them by hand: ø becomes o, ß becomes ss, æ becomes ae, so Ærøskøbing comes out as AEroskobing rather than unchanged.

Will it remove emoji properly, or leave pieces behind?

Whole emoji go, including the parts you cannot see. A single emoji is often several characters glued together: a family picture is four separate figures with three invisible joiners holding them in place, and choosing a skin tone quietly appends a second character behind the one you picked. Removing only the visible pieces leaves the joiners behind as invisible junk, which is how text ends up with characters in it that nothing can account for. Every piece is recognised as belonging to the emoji and removed together, and if you switch emoji to be kept, the joiners are kept too so the family does not split into four separate people.

How do I clean up a filename?

Turn accents to plain letters, leave digits and spaces on, and type an underscore, a hyphen and a dot into the spare-these field so the extension survives. That leaves you a name that will move between Windows, macOS and Linux without an argument, since the characters those systems reserve are all symbols or punctuation. If you want the spaces gone as well, untick spaces — or use a slug instead, which is the same idea with hyphens as the separator.

Does it delete Russian, Greek or Chinese text?

Only if you tell it to. Letters from other alphabets are kept by default, on the grounds that a letter is a letter — Привет and 日本語 are words, not symbols, and removing them silently would be a nasty surprise for anyone cleaning a multilingual list. Untick that box when your destination genuinely accepts Latin letters only, which is the case for some older systems and most web addresses.

What are control characters and why would my text have any?

They are the leftovers of 1960s teleprinter conventions — null, bell, form feed, vertical tab — and they are always removed here because nothing you write by hand contains one. They arrive in exports from old databases, in files that have been through a broken encoding conversion, and in anything copied out of a terminal. They usually render as a small box or as nothing at all, and they are a common cause of an import failing on a row that looks perfectly ordinary.

Why did my price column lose its currency signs?

Because currency is a switch of its own and it is off by default, since most systems asking for special characters to be removed do not want a euro sign either. Tick the currency box and $, €, £, ¥ and the rest survive. The maths box is separate and covers +, =, <, >, %, ° and the times and division signs, which are classified as symbols too and so are removed by the same default.

Special to whom, exactly

There is no such category as a special character. There are only characters some particular system will not take, and the systems disagree wildly about which. A filesystem objects to about nine specific marks and is perfectly happy with an emoji in a filename. A web form validating a name usually rejects everything that is not a letter or a space, accents included, which is why people called Müller and O'Brien spend their lives fighting registration pages. A database created before Unicode was widespread breaks on anything past the first 128 characters. A CSV import cares about three characters — the comma, the quote and the line break — and nothing else. A print workflow falls over on a glyph the font does not contain. Since the definitions do not overlap, a single strip-everything button is guaranteed to be wrong for most people, and the switches above exist so you can describe the destination rather than the source.

Accented letters deserve their own decision because it is the one that changes meaning rather than just tidiness. Turning café into cafe keeps the word readable and searchable and is exactly what a web address wants; deleting the letter to give caf does not. Folding works by pulling a letter apart into a base and a floating accent and discarding the accent, which handles the several hundred combinations built that way — but a stubborn group of Latin letters is stored whole, with no accent to separate. The Danish ø is not an o with a stroke as far as Unicode is concerned; nor is the German ß, the Polish ł, the Icelandic þ or the Croatian đ. Left to the standard mechanism they survive untouched and your supposedly plain output still contains characters the target rejects, so this page maps 25 of them by hand: Ærøskøbing comes out as AEroskobing. That is the same transliteration step a slug generator performs before it hyphenates a headline for a URL.

Emoji are the modern version of the same trap: one thing on screen, several things in the file. Delete only what is visible and the connective tissue stays behind as invisible debris, so a string you have just cleaned is longer than it looks and still fails the validation that sent you here. Treating each sequence as a unit is the only way to get a length that matches what you can count with your eyes. The boundary with its neighbour page is worth naming: this one works on symbols, pictures and letters, while removing punctuation works on the marks between words and leaves currency and maths signs alone. Between them they cover everything that is not a letter, a digit or a space — from opposite directions.

The value you paste is examined locally

Every character is classified by JavaScript running in this tab, so the customer names, order numbers or file listings you paste are never sent anywhere and never written down. The switches you set are not remembered either, which is deliberate: reload the page and it starts from the defaults with an empty box. Nothing here needs a server, so the tool keeps working offline once the page has loaded.