U+FE00..U+FE0F, U+E0100..U+E01EF
VARIATION SELECTOR

Selects a glyph variant. Required for emoji presentation and CJK variants.

Codepoint
U+FE00..U+FE0F, U+E0100..U+E01EF
Short
VS
Group
variation-selector
Class
context-dependent
Default
removed
Replaced by
removed, no substitute
Codepoints
256

What it is

Invisible characters that pick between two shapes of the character before them. The best-known pair chooses whether a symbol is drawn as flat black-and-white text or as a colour emoji.

Where it comes from

From emoji keyboards, and from CJK text where a selector picks the regionally correct form of an ideograph.

When it belongs

Whenever the shape actually matters, which is most of the time they appear. TraceFree holds back inside emoji sequences and in text containing ideographs.

Outside those contexts a variation selector has nothing to select, and the same block has been used to hide data inside a single visible character.

What TraceFree does with it

PresetAction
conservativeasked about
defaultremoved
report-onlyasked about
strictremoved

Context guards can only ever make a cleanup gentler, never sharper. A rule saying “always remove” does not override them.

How to remove it

In TraceFree, turn on the clipboard watcher and copy the text — the finding appears with a before-and-after comparison of the affected lines. For files, a watched folder does the same, keeping a backup copy alongside.

How to write it

This page never prints the character itself, only ways of writing it. A page about invisible characters that contained invisible characters would be unreviewable — and that is the problem the program exists to solve.

NotationValue
UnicodeU+FE00
Rust\u{FE00}
JavaScript, Python\uFE00
HTML︀ ︀
Regex (PCRE, Rust)\x{FE00}