fsymbols
›Samlinger›Typographic›Variation Selectors

Variation Selectors

Variation selectors are invisible Unicode characters that choose how the character before them is drawn: VS16 turns into the colour emoji , VS15 turns it back into text , VS1–VS3 pick the registered forms of CJK compatibility ideographs and maths signs such as , and VS17–VS256 select exact glyph variants of Han characters. All 258 selectors with their own pages are below, named one by one; the emoji pair is in the ready-to-copy combos.

Variation selector 16 and variation selector 15: the emoji switch

Hundreds of old symbols lived in Unicode long before emoji: Heavy Black Heart, White Smiling Face, Airplane, Black Telephone, Copyright Sign. When phones started drawing them as colour pictures, Unicode needed a way to say which look you meant without encoding every symbol twice. The answer, defined in Unicode 6.1 (2012), was a pair of invisible characters placed straight after the symbol: Variation Selector-16, U+FE0F, asks for the emoji presentation (colour picture), and Variation Selector-15, U+FE0E, asks for the text presentation (a monochrome glyph in the font of the surrounding text). So is two characters, U2764 UFE0F, and is U2764 UFE0E.

The pairing is not free-form. Unicode keeps a list, emoji-variation-sequences.txt, of the characters that may take the switch; in Unicode 18.0 it holds 371 base characters, each with a VS15 and a VS16 sequence, 742 sequences in all. A character that is not on the list ignores both selectors. Each listed character also has a default: are text-default, so without VS16 many apps show them small and black, while or are emoji-default and need VS15 to become text. Emoji keyboards add VS16 for you when you tap a text-default symbol, which is why a heart copied from a chat usually carries a hidden UFE0F.

Support is uneven and that is the whole reason people search for these two characters. VS16 is honoured almost everywhere; VS15 is ignored by many apps and fonts, which show the colour emoji regardless. Neither selector has a page of its own on this site, because a selector alone has nothing to show. Copy them from the combos below: the bare UFE0F to glue after a symbol, or ready pairs such as and , and .

What a variation selector is and how it works

A variation selector is a combining mark with no shape of its own (general category Mn, nonspacing mark). It attaches to the character before it and names one of that character's standardized glyph forms; if the font or the system knows the registered sequence, it draws that form, and if not, the selector is simply ignored and the base character appears as usual. Unicode calls such characters default ignorable: software that does not understand them must display nothing, never a box. Copy any cell above into a text field and the cursor moves, but nothing is visible.

There are 260 of them. VS1–VS16 were added in Unicode 3.2 in 2002, in a sixteen-slot block of the Basic Multilingual Plane; the Variation Selectors Supplement, VS17–VS256 , followed a year later in Unicode 4.0, when it became clear that East Asian character variants would need far more than sixteen. The four Mongolian Free Variation Selectors (U180B–U180D and U180F) belong to the same Unicode property and do the same job inside the Mongolian script. VS15 and VS16 are the only two with no page here; the other 258 are the members of this collection.

Only registered sequences count. The generic selectors VS1–VS14 are used through StandardizedVariants.txt, which in Unicode 18.0 lists 1,437 sequences; VS1 alone carries 1,078 of them, VS2 154, VS3 54, and VS8–VS14 are not yet used for anything. VS17–VS256 are reserved for the Ideographic Variation Database, a separate registry described below. A selector after a character it was never registered with changes nothing, which is also why pasting VS1 after an ordinary Latin letter does nothing at all.

VS1, VS2 and VS3: CJK compatibility ideographs, maths and other standardized variants

The biggest single use is a rescue operation for Chinese, Japanese and Korean. Unicode holds 1,002 CJK compatibility ideographs, duplicate code points kept for older national standards that distinguished glyph forms Unicode had unified. Normalization (NFC or NFD) silently folds each one into its ordinary unified character, so a text that depended on the distinct form lost it the moment it passed through a database or a web form. Each of the 1,002 now has a standardized variation sequence with VS1, VS2 or VS3 after the unified character; normalization leaves the sequence alone, and the intended form survives. The Chinese Characters and Japanese Characters collections show the characters themselves; this page holds the selectors that keep their forms.

Mathematics is the other classic customer. Thirty-odd signs have a VS1 form that textbooks need to distinguish: and with a vertical stroke, and with the stroke through the lower part, with serifs, and with a white rim, with a long diagonal, and drawn with a "lazy S", and the digit zero 0︀ with a short diagonal stroke so it cannot be mistaken for the letter O. The script capitals 𝒜 ℬ 𝒞 used in maths also take VS1 for a chancery and VS2 for a roundhand style. Whether you see the difference depends entirely on the font: STIX Two and Cambria Math know most of these; a phone's default font usually does not.

Smaller groups fill the rest of the register: Myanmar letters with a VS1 "dotted form" (က︀ ဂ︀ င︀) used in Shan and other languages of Myanmar, Phags-pa letters in reversed shaping, the curly quotation marks ‘ ’ “ ” with fullwidth and Sibe forms for Manchu and Mongolian typesetting, and Egyptian hieroglyphs whose rotated and mirrored forms use VS1 through VS7, the only sequences so far to reach beyond VS3. None of these are decorations: each pairs a character with a form that some writing community really needs to tell apart.

Mongolian free variation selectors and ideographic variation sequences (VS17–VS256)

Traditional Mongolian is written top to bottom and most letters change shape by position, like Arabic, but some letters have more forms than the position alone can predict. The Free Variation Selectors FVS1, FVS2 and FVS3 (Unicode 3.0, 1999) and FVS4 (Unicode 14.0, 2021) are placed after a letter to force a particular form: Mongolian Letter A followed by FVS1 takes its second form, after FVS2 its third, after FVS3 its fourth. Unicode 18.0 registers 117 such sequences. They are the tools of Mongolian typists and font makers in Inner Mongolia and Mongolia, not something a casual user pastes; the Traditional Mongolian Script collection shows the letters they act on.

The 240 selectors of the Supplement serve the Ideographic Variation Database (IVD), a registry Unicode runs for Han characters. A Han character plus one of VS17–VS256 is an ideographic variation sequence that names one exact glyph in a registered collection. The register of 2026-08-03 lists six collections: Adobe-Japan1 (14,684 sequences), Hanyo-Denshi (13,045) and Moji_Joho (11,392), the two Japanese government inventories used so that a person's name in a family or resident register keeps its precise written form, plus CAAPH (198), MSARG (154, the Macao government) and KRName (36, Korean personal-name forms). Together they come to about 39,500 sequences, all built from these 240 invisible characters.

Seeing an ideographic variation sequence needs a font that carries the collection: IPAmj Mincho for the Japanese government sets, and the Source Han and Noto CJK families for Adobe-Japan1. Without one you see the base character, which is the designed fallback. Unicode also has a visible cousin, the Ideographic Variation Indicator , which is placed before a character to say "a variant of this one, not encoded"; it is a symbol, not a selector, and it changes nothing about the next glyph.

How to type, find and remove variation selectors

No keyboard has a key for them. Copy a selector from the grid, or a finished pair from the combos. In Microsoft Word type FE0F and press AltX to turn it into the character; in HTML write ️ straight after the symbol; in JavaScript and JSON "\u2764\uFE0F"; in Python "\u2764\ufe0f" and "\U000E0100" for VS17; in CSS content "\2764\FE0F". For a Mongolian form use U180B–U180D and U180F after the letter.

Developers meet variation selectors as surprises: "❤️".length is 2 in JavaScript, two visually identical hearts fail an equality test, and a lookup table keyed on emoji misses the version with UFE0F. Compare after stripping or adding the selector consistently: in JavaScript s.replace(/\p{Variation_Selector}/gu, "") removes all 260 (VS1–VS256 and the Mongolian four) in one go, and in Python a character class of \ufe00-\ufe0f and \U000e0100-\U000e01ef does the same. Do not strip them from CJK text that relies on VS1–VS3 or on ideographic variation sequences, or from Mongolian: there the selector is part of the spelling.

Because they are invisible and 256 of them give exactly one byte of choice each, variation selectors are also a hiding place. In February 2025 the developer Paul Butler showed that any data can be smuggled inside a single emoji by appending a selector per byte, and the payload survives copying between most apps. Moderators and anyone cleaning user input should treat a long run of UFE00–UFE0F or UE0100–UE01EF the way they treat zero-width spaces. The related blanks and zero-width characters, Hangul Filler ㅤ, Braille blank , zero-width space and joiner, are gathered in Invisible Character & Blank Text.

Symboler

258

Klikk på et symbol for å kopiere det og åpne siden for det.

Variation selectors VS1–VS14 (U+FE00–U+FE0D)

Invisible on their own: each one asks for a particular glyph form of the character before it. VS1, VS2 and VS3 carry almost every registered variant (CJK compatibility ideographs, maths signs, script letters). VS15 and VS16, the text and emoji switch, have no page of their own: copy them from the combos below.

Mongolian free variation selectors FVS1–FVS4 (U+180B–U+180D, U+180F)

The same idea for the traditional Mongolian script: placed after a letter, they choose which of its written forms appears. FVS4 arrived in Unicode 14.0 (2021).

Variation Selectors Supplement VS17–VS256 (U+E0100–U+E01EF)

The 240 selectors for ideographic variation sequences: a Han character followed by one of these shows a registered glyph variant, for example the exact form of a name in a Japanese family register. Ten per row; the row label gives the first selector in it.

How to use them

6 situationsKlikk for å kopiere
Switching an emoji to text style
Copy or from the combos, or paste the bare VS15 UFE0E right after an emoji; where the app honours it, the colour picture becomes a plain glyph.
Forcing the colour emoji
Text-default symbols such as show small and black on many systems; add VS16 UFE0F after them to get .
Japanese and Chinese names in official forms
A name glyph that must keep its exact form is written as the character plus one of VS17–VS256 from the Hanyo-Denshi, Moji_Joho or Adobe-Japan1 registry; ask for a font such as IPAmj Mincho to see it.
Mathematical typesetting
Append VS1 UFE00 to or 0 to request the alternative form a textbook distinguishes; it shows in STIX Two and Cambria Math.
Traditional Mongolian typing
Place FVS1, FVS2, FVS3 or FVS4 after a letter to force the written form the word needs when the automatic positional shaping picks the wrong one.
Developers and moderators
Normalise emoji by stripping or adding UFE0F consistently before comparing or counting, and watch for long runs of selectors after one emoji: that is hidden data.

Variation Selectors combos

15
Red heart emoji: U2764 followed by VS16 UFE0F
The same heart as plain text: followed by VS15 UFE0E
Smiling face emoji: VS16
Smiling face as a text symbol: VS15
Airplane emoji: VS16 (text by default without it)
Telephone emoji: VS16
Heavy check mark emoji: VS16
Copyright as an emoji: VS16
Keycap 1: digit, VS16, then the combining keycap U20E3
Rainbow flag: white flag VS16 ZWJ rainbow
Heart on fire: VS16 sits inside the ZWJ sequence
Bare VS16 UFE0F (invisible): paste it right after any symbol to ask for emoji style
Bare VS15 UFE0E (invisible): paste it after an emoji to ask for text style
Maths variant: VS1 shows the form with a vertical stroke
Digit zero VS1: the short-diagonal-stroke zero, a standardized variant

Greit å vite

  • Every colour you have ever sent is two characters: the 1993 dingbat Heavy Black Heart U2764 and the invisible Variation Selector-16, which only arrived in Unicode 3.2 in 2002 and was given its emoji job in 2012.
  • VS8 to VS14 have existed since 2002 and have never been assigned a single sequence; the Egyptian hieroglyph rotation forms, which go up to VS7, are the only use so far beyond VS3.
  • In Unicode 18.0 one selector, VS1, carries 1,078 of the 1,437 standardized variation sequences, because it was chosen for all but a handful of the 1,002 CJK compatibility ideographs.
  • The Ideographic Variation Database holds about 39,500 registered sequences, and the Adobe-Japan1 collection alone (14,684) has more entries than the whole set of emoji.
  • With 256 selectors to choose from, each one appended to an emoji encodes exactly one byte: in 2025 that was demonstrated as a way to hide a whole message inside a single .

Vanlige spørsmål

8

What is variation selector 16?

Variation Selector-16, UFE0F, is an invisible Unicode character placed after a symbol to ask for its emoji presentation, the colour picture. U2764 alone is a text heart; followed by UFE0F is the red heart emoji . It only works after one of the 371 characters Unicode lists as having both styles.

How do I copy and paste variation selector 16?

Tap the bare VS16 entry in the combos above: it copies the single invisible character UFE0F. Paste it immediately after the symbol you want in emoji style, with nothing in between. For a ready-made pair, copy , or directly.

What is variation selector 15 ?

VS15 is the opposite switch: placed after an emoji it asks for the text presentation, a plain monochrome glyph, so U263A UFE0E is . Many apps and fonts ignore VS15 and show the colour emoji anyway, so test it where you plan to use it.

Why does my emoji show up as black and white?

The symbol is probably text-default ( and many others) and was sent without VS16, so the app draws it in the text font. Add UFE0F after it, or copy the emoji-style pair from this page; on the other side, a phone that lacks the colour font shows text no matter what.

How do I remove variation selectors from a string?

In JavaScript use s.replace(/\p{Variation_Selector}/gu, ""), which removes VS1–VS256 and the four Mongolian selectors; in Python substitute the ranges UFE00–UFE0F and UE0100–UE01EF with nothing. Only do this for emoji comparison: in Chinese, Japanese and Mongolian text the selectors carry meaning.

What are variation selectors 17 to 256 used for?

They form ideographic variation sequences: a Han character followed by one of VS17–VS256 selects an exact registered glyph from the Ideographic Variation Database, for example the precise form of a name in a Japanese register. They do nothing after any other kind of character.

Are variation selectors invisible characters?

Yes: they are zero-width combining marks that software is told to draw as nothing. They are not useful as a blank name, though, because they have no width; for that use the Hangul Filler ㅤ or Braille blank from the Invisible Character & Blank Text collection.

What is the difference between a variation selector and a zero-width joiner?

A variation selector changes how one character is drawn; the zero-width joiner U200D glues several emoji into one picture, as in or . The two often appear together: the rainbow flag is white flag VS16 ZWJ rainbow.

Flere samlinger

12