To remove special characters from Google Sheets cells without writing REGEXREPLACE or SUBSTITUTE formulas, paste the cell text into the Special Characters Remover, choose whether to strip Unicode symbols only or symbols plus punctuation, and read back the exact cleaned output alongside a verified removal count. This works in any browser tab, processes up to one million UTF-16 code units locally, and keeps letters, decimal digits, combining marks, separators, and whitespace untouched. Because the matching rules come from standardized P and S Unicode General_Category values rather than a hand-maintained list of ASCII glyphs, the cleanup also covers connector punctuation such as underscore, currency signs, math operators, arrows, copyright marks, many emoji, and the punctuation used by non-Latin writing systems. For Google Sheets readers who do not want to debug regex escape characters or chain multiple SUBSTITUTE calls together, the browser tool offers an auditable alternative whose rules you can read directly in the Unicode standard.

Why Reach for a Browser Tool When Google Sheets Has Find and Replace?
Google Sheets ships with Find and Replace (Ctrl+H) and powerful regex formulas such as REGEXREPLACE, REGEXMATCH, and SUBSTITUTE, so a reader landing on this page has good reason to wonder why a browser tool is worth opening at all. The honest answer is that each Sheets-native method has a sharp edge when the goal is removing special characters specifically. Find and Replace only matches what you can type, and many special characters, including zero-width joiners, supplementary-plane emoji, mathematical operators, and currency signs from non-Latin locales, cannot be entered reliably through the search box. Regex formulas require escaping regex metacharacters, writing a character class like [^\w\s], and accepting that \w in Google Sheets regex covers only ASCII letters and digits unless you configure RE2 flags. SUBSTITUTE works character by character and becomes unwieldy the moment your list of unwanted symbols grows past three entries.
The Special Characters Remover sidesteps these traps by matching against standardized Unicode General_Category values, which are maintained by the Unicode Consortium rather than typed by hand. A standard list covers more characters than any one keyboard, and the same rules behave consistently across operating systems and Sheets versions. The result panel shows the exact cleaned text alongside a count of removed code points, so you can verify what changed without rebuilding a formula to count it yourself.
Clean Up a Google Sheets Cell in 3 Steps
Opening the tool in a browser tab, pasting the contents of one cell or a column of cells, picking the cleanup mode, and copying the cleaned output back into your sheet takes three explicit steps:
- Copy the cell or range from Google Sheets and paste it into the input box on the Special Characters Remover page.
- Choose "Symbols and punctuation" to remove both Unicode S symbols and P punctuation, or "Symbols only" to keep commas, periods, apostrophes, and other punctuation while stripping currency signs, math operators, arrows, and emoji.
- Click Remove characters and read the cleaned output. The panel below the result shows the exact number of code points removed; copy the cleaned output and paste it back into Sheets as values.
After step three, paste back into Sheets with Ctrl+Shift+V to paste as values only and avoid pulling in any unintended formatting from the browser. If a removal count of zero appears, the input had no matched code points, which is itself useful information: it confirms the input contained no code points in the Unicode categories matched by the selected mode. A worked example makes the two settings concrete. The string Hi, $5! contains seven Unicode code points. In symbols-only mode the dollar sign (Sc, currency symbol) is removed, leaving Hi, 5! with six code points and a removal count of one. In broad mode the comma (Po, other punctuation) and exclamation mark (Po) join the dollar sign in the removal set, leaving Hi 5 with four code points and a removal count of three.
What the Special Characters Remover Actually Matches
The tool matches two standardized Unicode General_Category groups, defined in Unicode Technical Report #44, and applies them through JavaScript Unicode property escapes under the Unicode flag. Selecting "Symbols only" activates the S category; selecting "Symbols and punctuation" adds the P category. Neither mode tries to guess from how a glyph looks, which is the main reason it catches characters that ad hoc lists miss.
| Mode | Unicode categories matched | What it removes |
|---|---|---|
| Symbols only | S (Sc, Sk, Sm, So) | Currency signs, modifier symbols, math operators, other symbols |
| Symbols and punctuation | P + S (Pc, Pd, Pe, Pf, Pi, Po, Ps, Sc, Sk, Sm, So) | All of the above plus connector punctuation, dashes, brackets, quotes, commas, and periods |
The dollar sign in $5 belongs to Sc, a subcategory of S, so it is removed in either mode. The underscore in foo_bar belongs to Pc, a subcategory of P, so it stays in symbols-only mode and is removed in broad mode. CJK punctuation marks such as 、 and 。 belong to Po and follow the same P-rule. The mode toggle, not a per-character checkbox, is the only switch the tool exposes, which keeps the behavior predictable.
What Stays and What Gets Stripped
Everything outside the selected categories stays exactly as it was typed. The cleanup is purely subtractive: matched code points are deleted, and the tool deliberately does not insert replacement spaces, trim existing whitespace, or reflow line breaks. This matters for Sheets readers who care about the difference between the visible width of an emoji and the width of an empty cell, or between two adjacent numbers that originally had a comma between them and now touch each other.
| Property | Example | Behavior |
|---|---|---|
| Letters (L) | A, z, é (composed or decomposed) | Preserved |
| Decimal digits (Nd) | 0–9, Arabic-Indic digits | Preserved |
| Other numbers (No, NL) | Roman numerals, vulgar fractions | Preserved |
| Combining marks (M) | Combining acute accent U+0301 above a base letter | Preserved, base letter unchanged |
| Whitespace and separators (Z, s*) | Space, tab, line break | Preserved (never trimmed or collapsed) |
| Unicode P, symbols-only mode | , . ! ? : ; " ' - _ | Preserved |
| Unicode S, both modes | $ € + → © 🎉 | Removed |
| Unicode P, broad mode | , . ! ? : ; " ' - _ | Removed |
Note that "combining marks" means characters like the combining acute accent (U+0301) that sit above a base letter. A character represented as e followed by U+0301 stays joined in the output because both code points are outside P and S, and the tool never reorders or normalizes text. The single visible accented é that most users type is a single precomposed code point (U+00E9) and is preserved by the same rule.
Reading the Removal Count and Knowing When to Stop
The number that appears next to Removed is the count of matched Unicode code points, not UTF-16 code units. The distinction matters the moment your data contains emoji or supplementary-plane characters. A single emoji such as 🎉 is one supplementary-plane code point in Unicode, but JavaScript stores it as two UTF-16 code units because of surrogate pairs. The count reports the Unicode view (one), not the storage view (two), which is the more useful figure when reasoning about how many symbols your data actually contained.
Multi-code-point emoji sequences, including flags, skin-tone families, and keycap sequences, are more complex. The tool removes matched symbol code points but does not sanitize the sequence as a whole, because formatting code points such as joiners and variation selectors fall outside P and S and may remain. Treat the result as "every symbol code point is gone," not as "every emoji cluster is gone." For the cluster view, an emoji-aware tool is the right choice.
The exact input cap is one million UTF-16 code units; one additional unit is rejected before replacement and no partial output is produced. Empty input is rejected. Editing the input or switching modes clears the old result immediately, so the panel never shows stale output from a previous mode. For a Google Sheets column of typical product titles, addresses, or names, the cap is essentially never the binding constraint, but for a million-row sheet concatenated into one string it can be.
When This Tool Is the Wrong Choice for Google Sheets Data
The Special Characters Remover is a controlled plain-text cleaner, not a security sanitizer. It is the wrong tool for preparing cell values that will be concatenated into SQL, HTML, shell commands, URLs, filenames, usernames, or authentication tokens. Safe handling in those contexts depends on a destination-specific allowlist that knows the exact grammar of the receiving system, plus escaping rules that the cleanup cannot infer. Deleting characters labelled "special" is a presentation step, not a validation step.
The cleanup also does not preserve meaning. Removing a comma can change a number from "1,000" to "1000". Removing a currency symbol can change a sentence's meaning. Removing an emoji can change accessibility pronunciation when a screen reader relies on the symbol's spoken name. Always review the result panel against the original before publishing, and treat the tool as one stage in a multi-stage pipeline rather than as a final step. For cell-by-cell cleanup where you must keep working inside Sheets, a REGEXREPLACE formula is more convenient, but it requires a character class you write and maintain yourself, which is exactly the trap the browser tool is designed to avoid.
If you're weighing options, Repeat Text in Excel Cells Without the Fill Handle covers this in detail.