How emoji removal works
The pass is one regex: /[\u{1F300}-\u{1FAFF}\u{2600}-\u{27BF}\u{1F000}-\u{1F2FF}\u{FE00}-\u{FE0F}]/gu. The four ranges cover the standard emoji blocks. The u flag enables Unicode-aware matching, so codepoints above U+FFFF (which are stored as UTF-16 surrogate pairs) are matched correctly as single characters. Each match is removed in one pass.
Variation selectors (U+FE00 to U+FE0F) are included because they often follow emoji codepoints to switch between emoji-style and text-style rendering of the same base character. Stripping the selector along with the base ensures no orphan selectors remain. Skin-tone modifiers (U+1F3FB to U+1F3FF) sit in the U+1F300 to U+1FAFF range, so they go with the emoji.
Compound emoji built with zero-width joiners (such as family sequences) lose their components in this pass, but the connecting ZWJ characters survive because they sit at U+200D, outside the targeted ranges. To clean those up too, follow with remove zero-width. Output is computed in your browser on every keystroke, no upload involved.
How to use remove emojis from text
- 1Paste text containing emojis into the input panel on the left.
- 2Read the result on the right with every emoji stripped.
- 3Confirm letters, digits, and punctuation around the emojis survived.
- 4Click Copy to take the emoji-free text.
- 5Pair with remove zero-width if compound emoji left ZWJ artifacts.
Keyboard shortcuts
Drive TextResult without touching the mouse.
| Shortcut | Action |
|---|---|
| Ctrl F | Open the find & replace panel inside the input Plus |
| Ctrl Z | Undo the last input change |
| Ctrl Shift Z | Redo |
| Ctrl Shift Enter | Toggle fullscreen focus on the editor Plus |
| Esc | Close find & replace, or exit fullscreen |
| Ctrl K | Open the command palette to jump to any tool Plus |
| Ctrl S | Save current workflow draft Plus |
| Ctrl P | Run a saved workflow Plus |
What this tool actually does
Targets the standard emoji ranges
Four codepoint ranges cover the modern emoji set: U+1F300 to U+1FAFF (most modern emoji), U+2600 to U+27BF (older symbols, weather, dingbats), U+1F000 to U+1F2FF (cards, mahjong, enclosed marks), and U+FE00 to U+FE0F (variation selectors).
Handles surrogate pairs correctly
The u flag on the regex enables Unicode-aware matching. Codepoints above U+FFFF (stored as two UTF-16 code units) are matched as single characters, so the pass does not leave orphan surrogates that would corrupt the output.
Skin-tone modifiers go with the emoji
Skin-tone modifiers (U+1F3FB through U+1F3FF) sit inside the U+1F300 to U+1FAFF range, so they are stripped along with the base emoji. A "thumbs up with medium skin tone" disappears entirely rather than leaving a stray modifier.
Letters, digits, accents, punctuation survive
Anything outside the four targeted ranges passes through. ASCII text, accented Latin letters, CJK ideographs, Cyrillic, Greek, Hebrew, Arabic, and standard punctuation all stay. Use remove non-ASCII for a wholesale flatten to ASCII.
ZWJ joiners may remain on compound emoji
Family-style emoji are built using zero-width joiners between component emoji. The components are stripped here, but the joiner characters at U+200D survive because they sit outside the targeted ranges. Run remove zero-width after to clean those up too.
Worked example
Each emoji is replaced with an empty string; the surrounding spaces and punctuation are kept. Run remove extra spaces if double spaces need tidying.
Great work! ๐๐๐ Meeting ๐ at 3pm in room ๐ข 2A.
Great work! Meeting at 3pm in room 2A.
Settings reference
| Behaviour | Effect on output |
|---|---|
| Modern emoji (U+1F300 to U+1FAFF) | Stripped. Faces, objects, food, animals, flags, gestures. |
| Symbols and dingbats (U+2600 to U+27BF) | Stripped. Older weather, religious, and decorative symbols. |
| Cards and enclosed marks (U+1F000 to U+1F2FF) | Stripped. Mahjong tiles, dominos, playing cards, enclosed alphanumerics. |
| Variation selectors (U+FE00 to U+FE0F) | Stripped. Includes the emoji-vs-text presentation selector. |
| Skin-tone modifiers (U+1F3FB to U+1F3FF) | Stripped along with their base emoji (same range). |
| Zero-width joiners (U+200D) in compound emoji | Pass through. Run remove zero-width after to remove them. |
| Letters, digits, punctuation, whitespace | Pass through unchanged. |
| Surrounding double spaces | Stay as-is. Run remove extra spaces for cleanup. |
FAQ
Will it remove text-style symbols like ยฉ or โข?
What about compound emoji like family sequences?
Are skin-tone modifiers handled?
What if my text has double spaces after removal?
"hello ๐ world" leaves "hello world" with two spaces. Run remove extra spaces after to collapse those down to a single space.