← Guides

Variation selectors: the second invisible carrier

U+FE00-FE0F and the supplement block ride invisibly on ordinary letters. A quieter hiding place than zero-width characters.

Hidden characters · 1 min read

Variation selectors are Unicode's mechanism for saying "render the preceding character this particular way". U+FE0F is the best known — it is the selector that turns a monochrome symbol into a colour emoji.

There are 16 in the basic block (U+FE00-FE0F) and 240 more in the supplement (U+E0100-U+E01EF). That is 256 invisible modifiers.

Why they make a good hiding place

Attach a variation selector to a character that has no defined variant form — an ordinary letter like a — and nothing happens visually. The selector is simply ignored for rendering. But it is still there in the data.

With 256 available selectors you get a full byte of hidden information per visible character. A 200-word paragraph can carry a payload of a couple of hundred bytes with no visible change whatsoever.

They are also quieter than zero-width characters in a specific way: a sanitiser that strips U+200B and U+FEFF frequently leaves U+FE0E and U+FE0F alone, precisely because they are needed for emoji. The legitimate use protects the illegitimate one.

The emoji complication

This is the reason careless cleanup causes damage. U+FE0F is load-bearing in emoji presentation. Strip every variation selector unconditionally and some emoji will change appearance or degrade to their text form.

So the honest position on this category is: removal is safe in prose, and needs care around emoji. A tool should tell you which it found rather than silently deciding for you.

Detection

Same requirement as tag characters: iterate by codepoint. The supplement block sits above U+FFFF, so index-based iteration miscounts it.

Detection itself is trivial once you iterate correctly — it is a set membership check. There is no guessing involved, which is why a character-level scan gives you exact counts rather than a probability.

Run a scan and any variation selectors show as a VS chip at the exact position they occupy.

Related: zero-width characters · Unicode tag characters

Check your own text for every marker described here. Free, instant, and it never leaves your browser.

Run a free scan

Related