This page finds U+FE00–FE0F VARIATION SELECTORS, the invisible characters that switch emoji between text and emoji style. The sample below has two hearts that are not equal. Everything runs in your browser — nothing is uploaded.
An invisible character that asks the previous character to render in emoji style (full colour). Its sibling U+FE0E (VS15) forces plain text style. ❤ is U+2764; ❤️ is U+2764 + U+FE0F. Same symbol to your eye, different strings to every program.
Emoji keyboards and pickers attach VS16 to older symbols (hearts, arrows, ✔, ☎, digits in keycap sequences). Copy an emoji from one app and type "the same" one in another, and one of them probably carries a selector the other doesn't.
Equality and deduplication: "❤" === "❤️" is false, so tag systems, reaction counters and database keys treat identical-looking emoji as different values. Length checks count it (.length 2, not 1), truncation can slice between base and selector, and search for ❤ misses ❤️. Hashtags and usernames that allow emoji inherit all of this.
Honest caveat: stripping VS16 can change how the emoji renders — ❤️ may fall back to a plain dark ❤ in some contexts. For display text, that's usually acceptable; for storage keys and comparisons it's exactly what you want (or better, normalize on write). The x-ray above shows each selector (VS15/VS16) so you can decide; the "invisible characters" rule removes them.
Guides for the common cleanup jobs — what the source puts into your text, exactly what it breaks, and the tool preloaded with a demonstration:
AI-generated text · Text copied from Word / Google Docs · Text copied from a PDF · Pasted code that won’t run · CSV & spreadsheet data · Invisible watermarks · Many files at once (batch)
Dedicated pages for the usual suspects — what each one is, where it sneaks in from, the exact errors it causes, and how to find it in your editor:
Zero-width space (U+200B) · Non-breaking space (U+00A0) · Byte order mark (BOM) (U+FEFF) · Soft hyphen (U+00AD) · Smart quotes · Em dash (U+2014) · Narrow no-break space (U+202F) · Ideographic space (U+3000) · Zero-width joiner (U+200D) · Zero-width non-joiner (U+200C) · Word joiner (U+2060) · Right-to-left override (U+202E) · Left-to-right mark (U+200E) · Line separator (U+2028) · Variation selector-16 (U+FE0F) · Object replacement character (U+FFFC) · Hangul filler (U+3164) · Braille pattern blank (U+2800) · Ligatures · Minus sign (U+2212)
Страницы на русском — те же инструменты с переведёнными правилами и примерами под задачу:
Невидимые символы в тексте · Убрать невидимые символы · Почистить текст нейросети · Неразрывные пробелы в числах · Текст из Word · Код не запускается