Menu

Remove Special Characters from Text

Paste your text to delete symbols, emoji and punctuation while keeping letters, digits, spaces and line breaks. Type any characters you want to keep, such as @ or

0 words 0 characters 0 lines

Continue with this text: Remove punctuationRemove emojisRemove extra spaces

Your text stays in your browser: nothing is uploaded or stored on a server.

How to use it

  1. Paste or type your text in the Your text box, or click Open file to load a .txt, .csv or similar plain-text file. Click Example to see a sample.
  2. Check the Characters to keep box. It starts with .,-'’ (period, comma, hyphen, straight apostrophe and curly apostrophe). Add or delete characters to suit your text.
  3. Leave Keep accented letters (é, ñ, ü) ticked to keep letters as they are, or untick it to turn them into plain A–Z.
  4. The Result box updates as you type. Click Copy or Download .txt, or Use as input to clean the text again with other settings.

What the tool keeps and removes

The tool works one character at a time and keeps a character if any of these is true:

  • it is in the Characters to keep box;
  • it is whitespace: a space, tab, line break or non-breaking space;
  • it is a basic Latin letter (A–Z, a–z) or digit (0–9).

Every other letter or number from Unicode, such as é, ñ, ß, Ø, Я, 東 or ½, is kept too; with Keep accented letters unticked, those that have a plain A–Z or 0–9 form are converted to it (see below). Everything else is removed: punctuation not in your keep list, symbols, currency signs, the underscore, emoji, arrows, stars, check marks, trademark and copyright signs, and zero-width characters such as the zero-width space, the soft hyphen and the byte order mark (U+FEFF).

The sample text shows the default settings at work:

Before: Order #4521 – "Café Olé" ★★★★☆ (paid €12.50) ✔︎ @anna_b
After:  Order 4521  Café Olé  paid 12.50  annab

The period in 12.50 survives because it is in the keep list; #, –, the quotes, the stars, the parentheses, €, the check mark, @ and _ go. Note the double spaces where the dash and stars stood: the tool never adds or removes spaces, so the extra spaces remover is the usual next step.

Emoji go completely, including skin-tone modifiers and flags. In a keycap emoji such as 1️⃣ only the digit is a letter or number, so #1️⃣ becomes 1.

The Characters to keep box

Each character you type is kept on its own; there is no need for commas or spaces between them, and the order does not matter. Typing a letter or digit changes nothing, because those are always kept.

Text Keep box Result
Hello, World! It's 50% off — today only!!! .,-'’ (default) Hello, World It's 50 off today only
Hello, World! It's 50% off — today only!!! empty Hello World Its 50 off today only
[email protected] .,-'’ (default) anna.bnewsexample.com
[email protected] .-@+ [email protected]
+1 (555) 010-2345 +()- +1 (555) 010-2345
#hashtag @mention #@ #hashtag @mention
Price: $1,299.00 (incl. 20% VAT) .,-'’ (default) Price 1,299.00 incl. 20 VAT

Two characters catch people out. The underscore is a symbol, not a letter, so first_name becomes firstname unless you add _. And the curly apostrophe ’ is the same character as the closing single quote: the default list keeps it so Don’t stays as it is, but that also means ‘x’ becomes x’. Curly double quotes “ ” are removed unless you add them.

Keep accented letters

With the option ticked, accented and other non-English letters stay exactly as typed. Unticked, each letter or number that has a plain A–Z or 0–9 form is reduced to it, the same way the accent remover does it; a few letters that have no accent to strip are spelled out, and ligatures and superscripts become ordinary characters:

Before After (option unticked, empty keep box)
résumé resume
Ñandú Nandu
Straße, Øresund, Łódź, Ærø Strasse Oresund Lodz AEro
İstanbul Istanbul
file (ligature from a PDF) file
x² ½ ① ⅓ µ x2 ½ 1 ⅓ µ

Letters and numbers with no plain form are left as they are, not removed: 東京 2026年 привет comes out unchanged, and so do ½ and µ. A letter you type in the keep box is always kept, so with é in the box, café stays café even with the option off.

When people need it

  • Usernames, file names and IDs. Systems that accept only letters and digits reject Q3 report (final).docx; with . in the keep box it becomes Q3 report final.docx, and with an empty box the extension dot goes too (Q3 report finaldocx). For web addresses, the slug generator also lowercases and adds hyphens.
  • Phone numbers and codes. Keep + only to turn +1 (555) 010-2345 into +1 555 0102345, then remove the spaces if you need digits only.
  • CSV and spreadsheet columns. Keep , (and @. for email columns) so the columns survive while stray symbols from a CRM export go. Rows stay on their own lines.
  • Text from social posts. Strip emoji, decorative stars and arrows before pasting a caption into a report or a word cloud. To remove only the emoji and keep punctuation, use the emoji remover.
  • Text for analysis. Before counting words or comparing lists, removing symbols means sale!!! and sale match.

Special characters vs punctuation and symbols

Three tools on this site remove different sets. The punctuation remover removes only punctuation marks (periods, commas, quotes, dashes, brackets) and keeps symbols such as $, %, € and emoji. The emoji remover removes only emoji. This tool removes both, plus every other symbol, unless you list it in the keep box. Pick the narrowest tool that does the job so you do not lose characters you need.

Doing the same in code

If you need this inside a script, a regular expression with a negated class does the basic job. These lines were run on the sample text above (without the stars and check mark):

import re
re.sub(r'[^A-Za-z0-9\s]', '', s)   # 'Order 4521  Caf Ol paid 1250 annab'
re.sub(r'[^\w\s]', '', s)          # 'Order 4521  Café Olé paid 1250 anna_b'
s.replace(/[^A-Za-z0-9\s]/g, '')       // 'Order 4521  Caf Ol paid 1250 annab'
s.replace(/[^\p{L}\p{N}\s]/gu, '')    // 'Order 4521  Café Olé paid 1250 annab'

The plain A-Za-z class cuts accented letters in half (Café becomes Caf), and Python’s \w keeps the underscore. To keep extra characters, add them inside the brackets, for example [^\p{L}\p{N}\s.@].

Questions

What counts as a special character?

Anything that is not a letter, a digit or whitespace. That includes punctuation, symbols such as

How do I keep some characters, like @ or the period in email addresses?

Type them in the Characters to keep box, with no separators, for example .@-+. Each character you type is kept wherever it appears. The box starts with .,-'’ so sentences, hyphenated words and contractions stay readable; clear it to remove those as well.

Are apostrophes kept in words like "don’t"?

Yes. The default keep list contains both the straight apostrophe (') and the curly one (’) that Word, Google Docs and phones insert, so Don't and Don’t both stay. Because ’ is also the closing single quote, ‘x’ becomes x’; delete ’ from the box if you want those gone.

Why are there double spaces in the result?

The tool removes characters but does not touch the spaces around them, so "Olé" ★★★ (paid" leaves two spaces where the stars were. Run the result through Remove extra spaces to collapse them.

Does it remove formatting such as bold, fonts and links?

The result box holds plain text only, so anything you copy from it has no bold, fonts, colors or links. If formatting is all you want to lose and the symbols should stay, see how to paste without formatting instead.

Can I clean a column from Excel or Google Sheets?

Yes. Copy the column, paste it here and copy the result back. Line breaks are kept, so each cell stays on its own line and the rows still line up.

Is my text uploaded anywhere?

No. The cleaning runs in your browser and nothing is sent to a server.