NICKNAMES Updated November 12, 2026

How Fancy Text Works: The Unicode Behind Stylish Nicknames

01 YOUR NAME OR KEYWORD
02 NICKNAME RESULTS
🔥 Total: 277 names generated Click on a nickname to copy

Fancy text works because every styled letter is a separate Unicode character, not a font: 𝓡 is U+1D4E1 MATHEMATICAL BOLD SCRIPT CAPITAL R, not plain R. Your phone draws it with whichever installed font contains it, in Instagram, TikTok or any text box. Unicode 18.0, released 16 September 2026, defines 172,808 characters.

How does fancy text work?

Fancy text is plain text made of unusual characters. A fancy text generator swaps each letter you type for a look-alike character that Unicode already defines — a mathematical script letter, a fullwidth letter, a circled letter — and the result stays styled wherever it is pasted because the style lives in the characters themselves.

Three words explain almost everything on this page, and they are easy to mix up:

  • A code point is the number Unicode assigns to one character, written U+ followed by hexadecimal digits. U+0052 is LATIN CAPITAL LETTER R; U+1D4E1 is MATHEMATICAL BOLD SCRIPT CAPITAL R.
  • A glyph is the drawing of a character: the actual curves you see. One code point can have thousands of glyphs, one in every font that supports it.
  • A font is a file that maps code points to glyphs. It decides how 𝓡 looks, but it cannot turn R into 𝓡 — that change has to happen in the text.

That is the whole trick behind a stylish nickname. Bold on a website is formatting applied to ordinary letters; bold in a display name is a different set of letters. The Unicode data file even says so: in UnicodeData.txt, published by the Unicode Character Database, U+1D4E1 carries the decomposition tag <font> 0052, which means “a font variant of R, kept as its own character”.

One letter A, six different Unicode characters: name and decomposition tag from UnicodeData.txt (Unicode 18.0), sizes measured in code on 16 September 2026
Shown Code point Unicode name Tag UTF-16 units UTF-8 bytes NFKC gives What it is
A U+0041 Latin Capital Letter A (none) 1 1 A the ordinary letter
𝐀 U+1D400 Mathematical Bold Capital A <font> 2 4 A maths bold
𝓐 U+1D4D0 Mathematical Bold Script Capital A <font> 2 4 A maths bold script
A U+FF21 Fullwidth Latin Capital Letter A <wide> 1 3 A fullwidth, from East Asian typing
Ⓐ U+24B6 Circled Latin Capital Letter A <circle> 1 3 A circled
ᴀ U+1D00 Latin Letter Small Capital A (none) 1 3 ᴀ phonetic small capital

The tag column is the reason fancy text can be undone. Characters tagged <font>, <wide> or <circle> are declared variants of a plain letter, so compatibility normalisation (explained below) folds them back to A. The small capital ᴀ has no tag: Unicode treats it as a letter in its own right, which is why it survives.

What does a fancy text generator actually do?

A fancy text generator is a lookup table. For most styles the styled alphabet sits in one continuous run of code points, so the tool adds a fixed offset to each letter’s position: bold script capitals start at U+1D4D0, so R, the 18th letter, becomes U+1D4D0 + 17 = U+1D4E1. Fullwidth letters are simpler still — every ASCII letter plus 0xFEE0.

How a generator builds “Riya” by offset: start of each styled alphabet and the code points it produces (checked in code, 16 September 2026)
Style Capital A starts at Small a starts at Result Code points
Bold script U+1D4D0 U+1D4EA 𝓡𝓲𝔂𝓪 U+1D4E1 U+1D4F2 U+1D502 U+1D4EA
Fullwidth U+FF21 U+FF41 Riya U+FF32 U+FF49 U+FF59 U+FF41
Circled U+24B6 U+24D0 Ⓡⓘⓨⓐ U+24C7 U+24D8 U+24E8 U+24D0
Maths bold U+1D400 U+1D41A 𝐑𝐢𝐲𝐚 U+1D411 U+1D422 U+1D432 U+1D41A

Some alphabets have holes where a letter was already encoded elsewhere, so a good generator patches them from other blocks. The nickname font style library maps all 21 SnapNick styles to their blocks, gaps and character cost, so this page stays on the mechanism rather than repeating that table.

Try it: build a stylish name one Unicode layer at a time

A decorated name is built in layers, and each layer adds characters you may not see. Copy any stage below and paste it into a notes app; the table shows what each layer adds, measured with two independent grapheme splitters that returned identical counts.

Six layers of one stylish name: graphemes, code points, UTF-16 units and UTF-8 bytes (Node.js Intl.Segmenter and Python regex, 16 September 2026)
# Layer Text What was added Graphemes Code points UTF-16 UTF-8 bytes
1 Plain letters Riya four Basic Latin letters 4 4 4 4
2 Styled letters 𝓡𝓲𝔂𝓪 four maths letters from outside the BMP 4 4 8 16
3 + combining marks 𝓡͜͡𝓲𝔂𝓪 U+035C and U+0361, stacked on 𝓡 4 6 10 20
4 + frame symbols ꧁𝓡͜͡𝓲𝔂𝓪꧂ U+A9C1 and U+A9C2, Javanese punctuation 6 8 12 26
5 + emoji with FE0F ꧁𝓡͜͡𝓲𝔂𝓪꧂❤️ U+2764 heart + U+FE0F emoji selector 7 10 14 32
6 + ZWJ sequence ꧁𝓡͜͡𝓲𝔂𝓪꧂❤️‍🔥 U+200D joiner + U+1F525 fire 7 12 17 39

Two things stand out. The name looks four letters long in layer 2 but already costs 8 UTF-16 units, because each maths letter lives outside the Basic Multilingual Plane. And in layer 6 the heart and fire merge into one picture, so seven visible characters are really twelve code points.

Want the individual building blocks? Each button below copies a single combining mark or joiner on its own. Paste it straight after a letter and it attaches to that letter; pasted alone, most apps show it on a dotted circle.

What is inside real stylish names?

Most decorated names use more than styled letters. We ran every one of the 11,223 unique strings in the SnapNick item library (names, symbols, kaomoji and emoji combos, as filtered on 16 September 2026) through Python’s unicodedata module and the regex module’s grapheme splitter. 61.0% contain a character outside the Basic Multilingual Plane, and in 33.1% the visible character count differs from the code point count.

Unicode features found in 11,223 decorated strings from the SnapNick library (measured 16 September 2026)
Feature Strings Share
At least one character outside the BMP (2 UTF-16 units each) 6,841 61.0%
Visible characters ≠ code points 3,711 33.1%
Changed by NFKC normalisation 3,356 29.9%
A combining mark (variation selectors not counted) 1,906 17.0%
Variation selector-16 (U+FE0F) 1,052 9.4%
Maths alphanumeric letters (U+1D400–U+1D7FF) 984 8.8%
Two or more marks stacked on one base 781 7.0%
Variation selector-15 (U+FE0E) 475 4.2%
Zero width joiner (U+200D) 263 2.3%
Fullwidth letters or punctuation 81 0.7%
A bidi control such as U+200E 57 0.5%
Changed by NFC normalisation 23 0.2%

The most common combining marks were not the famous ◌͜ and ◌͡ from the Lenny face. They were two Tibetan vowel signs, U+0F80 and U+0F72, found 371 and 369 times, usually typed together as ◌ྀི under an emoji to add a small sparkle. The longest single visible character we found stacks 21 code points on one Thai letter.

Why does fancy text survive copy and paste?

Fancy text survives copy and paste because the clipboard carries characters, and the styling is part of the characters. Formatting such as bold or italic applied in an editor is stored separately from the text, so a plain-text box like a profile name field drops it on paste — but 𝐑𝐢𝐲𝐚 is four different letters, so nothing is lost.

Try it with the pair below. Paste plain Riya into a document, make it bold, then copy that bold word into a WhatsApp or Instagram name field: the bold disappears. Paste 𝐑𝐢𝐲𝐚 instead and it stays bold, because the characters are all that needs to travel.

The same property explains the limits. Fancy text only works where a field accepts any Unicode letter. Usernames and handles usually accept a short list — TikTok usernames, for example, allow letters, numbers, underscores and periods, per TikTok Support — so styled letters belong in the display name instead.

What is font fallback, and why do some letters come from a different font?

Font fallback is the process a phone or browser uses when the main font has no glyph for a character: it walks down a list of other installed fonts until one does. A stylish name is often drawn by three or four fonts at once, and if no installed font has the character, you see an empty box instead.

We measured this with fontconfig on a Linux test server holding 2,211 font faces. For each code point in the layer-6 name we counted the faces that contain it and asked the system which font it would pick:

Font faces that contain each character of ꧁𝓡͜͡𝓲𝔂𝓪꧂❤️‍🔥, and the font chosen, on a server with 2,211 faces (fontconfig, 16 September 2026)
Characters Code points Faces with a glyph Font chosen
𝓡 𝓲 𝔂 𝓪 U+1D4E1 and three more 4 Noto Sans Math
R i y a (plain, for comparison) U+0052 and three more 373 DejaVu Sans
꧁ ꧂ U+A9C1, U+A9C2 4 Noto Sans Javanese
͜ ͡ (marks) U+035C, U+0361 214 and 233 DejaVu Sans
❤ with FE0F U+2764, U+FE0F 28 and 23 DejaVu Sans
Zero width joiner U+200D 1,467 DejaVu Sans
🔥 fire U+1F525 0 none — shown as a box
Font fallback for a stylish name: DejaVu Sans, Noto Sans Math and Noto Sans Javanese each draw part of it, and no font has the fire emoji
One decorated name needed three fonts on our test server, and the fire emoji found no font at all.

A server is not a phone, but the pattern carries over. Android and iOS ship far larger fallback lists than a bare Linux machine, which is why the same name usually shows in full on a recent phone. The risk sits with rare blocks and brand-new characters: an older device may simply have no font for them. It also explains why a decorated name can look uneven — the maths letters and the Javanese brackets were designed by different people for different fonts.

If one symbol in a name keeps turning into a box, swap that symbol rather than the whole name. The nickname symbols collection lists the Unicode version each common symbol was added in, which is a quick way to spot the risky ones.

How do combining marks stack on a letter?

A combining mark is a character with no space of its own that attaches to the character before it. Unicode gives each mark a general category (Mn for non-spacing, Me for enclosing) and a combining class number that tells the renderer where it sits, which is how ◌͜ and ◌͡ can pile onto one letter without moving the next one.

Marks used in decorated names, with general category and canonical combining class from UnicodeData.txt (Unicode 18.0)
Shown Code point Unicode name Category Combining class Behaviour
◌͜ U+035C Combining Double Breve Below Mn 233 combining, non-spacing
◌͡ U+0361 Combining Double Inverted Breve Mn 234 combining, non-spacing
◌᷍ U+1DCD Combining Double Circumflex Above Mn 234 combining, non-spacing
◌̫ U+032B Combining Inverted Double Arch Below Mn 220 combining, non-spacing
◌̥ U+0325 Combining Ring Below Mn 220 combining, non-spacing
◌⃝ U+20DD Combining Enclosing Circle Me 0 combining, enclosing
◌ི U+0F72 Tibetan Vowel Sign I Mn 130 combining, non-spacing
꧁ U+A9C1 Javanese Left Rerenggan Po 0 not a mark — stands alone

Three details matter for names. Double marks such as U+035C, U+0361 and U+1DCD are drawn across two letters, which is how R͜͡i gets its arc. Combining class 233 sits below and 234 above, so the order you type them in does not change the result after canonical ordering. And ꧁ and ꧂ are not marks at all: they are Javanese punctuation (category Po), each a full character with its own width.

Whether stacks look right depends on the font’s mark-positioning data. When the chosen font has no anchor for a mark on that particular base letter, the renderer guesses a position, so a mark can drift or collide in one app and sit neatly in another — the character is the same, only the drawing differs.

Kaomoji built on combining marks

Every kaomoji below uses at least one combining mark for its mouth, nose or tears. Copy one and count it: each looks shorter than it is.

Symbols inside enclosing marks

Enclosing marks draw a circle (U+20DD), diamond (U+20DF) or triangle (U+20E4) around the character before them. Fonts rarely size the frame to fit an emoji, so the outline often looks off-centre — a rendering choice, not a broken copy.

The last item, ͙͘͡★, shows the opposite case: its three marks come before the star, with no base character to sit on, so Unicode counts them as a separate cluster and many apps draw them on their own.

What does the variation selector FE0F do to a symbol?

U+FE0F, VARIATION SELECTOR-16, asks for the colourful emoji version of the character right before it, and U+FE0E, VARIATION SELECTOR-15, asks for the plain text version. They only work on characters listed in emoji-variation-sequences.txt: Unicode 18.0 lists 371 such characters, and adding FE0F to anything else changes nothing.

Variation selectors on four symbols: whether the base is in emoji-variation-sequences.txt (Unicode 18.0) and what it costs
Shown Sequence Has emoji/text styles Code points UTF-16 Effect
❤ U+2764 yes 1 1 no selector: the app decides
❤︎ U+2764 U+FE0E yes 2 2 text style requested
❤️ U+2764 U+FE0F yes 2 2 emoji style requested
⭐ U+2B50 yes 1 1 already emoji by default
⭐︎ U+2B50 U+FE0E yes 2 2 text style requested
♡ U+2661 no 1 1 no emoji version exists
♡️ U+2661 U+FE0F no 2 2 FE0F ignored: ♡ is not in the list
∞︎ U+221E U+FE0E no 2 2 FE0E ignored: ∞ is not in the list

In names this has two practical effects. First, a heart copied without FE0F may appear as a small black ❤ in one app and a red emoji in another, because each app picks its own default. Second, FE0F is an extra character: 9.4% of the strings in our library carry one, and some carry it where it does nothing. The symbols below come in both flavours so you can compare them side by side; ∞︎ and ◆︎ carry a selector that does nothing, and ☀︎︎ carries FE0E twice, where only the first belongs to a defined sequence.

How do emoji ZWJ sequences join two emoji into one?

An emoji ZWJ sequence is two or more emoji glued together with U+200D ZERO WIDTH JOINER, which a supporting font draws as one new picture. ❤️‍🔥 heart on fire is ❤ + FE0F + ZWJ + 🔥. The file emoji-zwj-sequences.txt for Emoji 18.0 lists 1,614 recommended sequences that vendors are expected to support.

ZWJ sequences: listed in emoji-zwj-sequences.txt (Emoji 18.0) or not, and how they count (measured 16 September 2026)
Shown Name Code points Recommended Graphemes UTF-16 UTF-8 bytes Look without support
❤️‍🔥 heart on fire U+2764 U+FE0F U+200D U+1F525 yes 1 5 13 ❤️ 🔥
🐻‍❄️ polar bear U+1F43B U+200D U+2744 U+FE0F yes 1 5 13 🐻 ❄️
🍄‍🟫 brown mushroom U+1F344 U+200D U+1F7EB yes 1 5 11 🍄 🟫
⛓️‍💥 broken chain U+26D3 U+FE0F U+200D U+1F4A5 yes 1 5 13 ⛓️ 💥
🐱‍👤 ninja cat (not in the list) U+1F431 U+200D U+1F464 no 1 5 11 🐱 👤
🦄‍🪽 unicorn + wing (not in the list) U+1F984 U+200D U+1FABD no 1 5 11 🦄 🪽
🔗‍💥 link + collision (not in the list) U+1F517 U+200D U+1F4A5 no 1 5 11 🔗 💥

The last three rows are the interesting ones. A device that does not know a sequence draws the parts side by side, yet text counters still treat the whole thing as one character, because the grapheme rules in Unicode Standard Annex #29 join any emoji + ZWJ + emoji pair whether or not a picture exists (rule GB11). So 🦄‍🪽 may show as two emoji and still count as one. Emoji rules themselves are defined in Unicode Technical Standard #51.

These ZWJ combos come from the SnapNick library. A few mix a sequence with marks or symbols, and one — the headphones in brackets — has a joiner that joins nothing, so it has no visible effect.

Why do apps count the characters in a stylish name differently?

Apps count characters differently because “character” can mean four units: grapheme clusters (what you see), code points (what Unicode numbers), UTF-16 code units (what JavaScript, Java and Android store) or UTF-8 bytes (what many databases limit). A stylish name can be 7 of the first and 39 of the last.

  • A grapheme cluster is one user-perceived character: a base plus any marks, selectors and joined emoji, as defined in UAX #29. JavaScript’s Intl.Segmenter and Swift’s String.count count these.
  • A code point is one Unicode character. Python’s len() counts code points.
  • A UTF-16 code unit is 16 bits; characters above U+FFFF take two. JavaScript’s .length counts these.
  • A UTF-8 byte is 8 bits; one character takes 1 to 4. Byte limits in databases and APIs count these.
Grapheme clusters vs code points: one stylish name counts as 7 graphemes, 12 code points, 17 UTF-16 units and 39 UTF-8 bytes
Same name, four honest answers to “how many characters?”
The same eight strings counted four ways (Intl.Segmenter in Node.js 22 with ICU 78.2, cross-checked with Python 3.11 regex, 16 September 2026)
Text Graphemes Code points UTF-16 units UTF-8 bytes
⚡𝗥𝗶𝘆𝗮⚡ 6 6 10 22
— K a v y a 11 11 11 21
˚₊· 𝕍𝕚𝕙𝕒𝕒𝕟 ·₊˚ 14 14 20 40
ζ͜͡𝕲𝖍𝖔𝖘𝖙 6 8 13 26
‎ Sᴡꫝᴘɴɪ᪻ͥᷱ᷍ʟ ᥫ᭡ 14 18 18 40
( ͡° ͜ʖ ͡°) 8 11 11 17
🐻‍❄️ 1 4 5 13
༄˖°.🍋‍🟩.ೃ࿔*:・ 10 13 15 31

For a name field with a limit, the UTF-16 column is usually the safe number to plan with, because it is never smaller than the visible or code point count. Official help pages rarely say which unit they use: the WhatsApp Help Center gives a 25-character profile name without defining a character, so a name that fits by eye can still be cut.

Styled names to test in a counter

These names come straight from the SnapNick engine for Riya, Kavya and Vihaan, plus three decorated names from the library. Paste a few into any character counter and compare its number with the table.

How does Unicode normalization change search and duplicate checks?

Unicode normalization rewrites text into a standard form so that strings which mean the same thing compare as equal. Unicode Standard Annex #15 defines four forms: NFC and NFD handle true duplicates such as é, while NFKC and NFKD also fold compatibility variants — including most fancy letters — back to plain ones.

é typed two ways: different code points, equal after NFC (Python unicodedata, 16 September 2026)
Text Code points Same as the other form as typed? Same after NFC?
é (e + combining acute) U+0065 U+0301 no yes
é (precomposed) U+00E9 no yes
Does a search for “riya” match? Lowercase only, NFC + casefold, and NFKC + casefold (Python 3.11, 16 September 2026)
Name Lowercase match NFC match NFKC match NFKC result
Riya yes yes yes Riya
𝓡𝓲𝔂𝓪 no no yes Riya
𝐑𝐢𝐲𝐚 no no yes Riya
Riya no no yes Riya
Ⓡⓘⓨⓐ no no yes Riya
ʀɪʏᴀ no no no ʀɪʏᴀ
🅁🄸🅈🄰 no no yes RIYA

The pattern is clear: plain lowercasing and NFC never find a styled name, while NFKC finds every style tagged as a variant. Small capitals do not fold, so ʀɪʏᴀ stays unfindable by typing riya. In our library NFC changed only 23 strings, while NFKC changed 3,356 (29.9%). Apps do not publish whether they normalise names before search or duplicate checks, so treat this as what the characters allow, not a promise about any one app; the font style guide has the result for all 21 styles.

What are bidi marks, and why can a name flip direction?

Bidi marks are invisible characters that steer the Unicode Bidirectional Algorithm, the rules in Unicode Standard Annex #9 that order left-to-right and right-to-left text on one line. Every character has a bidi class: Latin letters are strong left-to-right, Arabic and Urdu letters strong right-to-left, and most symbols neutral, taking their direction from neighbours.

Bidi class and mirroring of characters found in names, from UnicodeData.txt (Unicode 18.0)
Shown Code point Unicode name Bidi class Mirrored Effect
R U+0052 Latin Capital Letter R L no fixes direction as left-to-right
꧁ U+A9C1 Javanese Left Rerenggan L no a decorative bracket that is strongly left-to-right
♡ U+2661 White Heart Suit ON no follows the text around it
( U+0028 Left Parenthesis ON yes neutral and mirrored: flips in right-to-left text
◌͜ U+035C Combining Double Breve Below NSM no takes the class of its base letter
(invisible) U+200E Left-To-Right Mark L no an invisible character that counts as left-to-right
(invisible) U+200F Right-To-Left Mark R no an invisible character that counts as right-to-left
(invisible) U+202E Right-To-Left Override RLO no forces what follows to display right-to-left
(invisible) U+2068 First Strong Isolate FSI no fences off a name from the text around it

For names this matters in two ways. When a Latin nickname sits next to Urdu or Arabic text, neutral symbols at the edges can jump to the other side; putting U+200E after a left-to-right name, or wrapping it in an isolate, keeps the frame where you placed it. And the override U+202E can make text display backwards, which is why many platforms strip it — we do not include it in any copy item. In our library 57 strings (0.5%) carry a bidi control, almost always a harmless U+200E. The items below each hide one.

Where does fancy text fail?

Fancy text fails in five predictable places, all caused by the mechanisms above rather than by a bad copy:

  1. Usernames and handles. These fields accept a fixed set of plain characters, so styled letters are refused or stripped.
  2. Older or minimal devices. No font for a rare block means an empty box; no support for a new ZWJ sequence means two emoji side by side.
  3. Character limits. Limits counted in UTF-16 units or bytes fill two to four times faster with maths letters and emoji.
  4. Search. Without NFKC, a styled name cannot be found by typing it plainly; with NFKC, small capitals still cannot.
  5. Screen readers. Assistive software may read maths letters one by one or by their long Unicode names, so a styled display name can be hard to follow for someone listening.

Blank-looking characters have their own traps — some are removed by trim() and some are not — and the invisible name guide measures each one.

How do you make a stylish name that shows correctly almost everywhere?

Build the name from the fewest, most widely supported layers, then check it on a second device. These five steps take about two minutes with the tool at the top of this page.

  1. Type your name into the generator. Enter the name in the SnapNick nickname generator and pick a style. Styles whose letters all come from one block, such as bold script, look more even than styles that borrow letters.
  2. Add one frame, not three. A pair like ꧁ ꧂ or ♡ ♡ adds 2 to 4 UTF-16 units. Each extra layer adds characters and another font to fall back on.
  3. Prefer long-standing emoji. A single emoji with FE0F shows almost everywhere. Newer ZWJ sequences look great on recent phones but split into two pictures on older ones.
  4. Count by the strictest unit. Check the UTF-16 length before pasting into a field with a limit; if it fits in UTF-16, it fits by any other count.
  5. Paste, then look from another phone. Save the name and view your profile from a different device or app. Keep a plain version for your username and for search.

How did we measure all this?

Every number on this page was produced in code on 16 September 2026, not copied from another source. Grapheme counts come from Node.js 22 Intl.Segmenter (ICU 78.2, Unicode 17.0 data) and were cross-checked against the Python 3.11 regex module’s \X pattern — the two agreed on every string. Code points, UTF-16 and UTF-8 lengths and normalisation used Python’s unicodedata. Character names, categories, combining classes and bidi classes were read from UnicodeData.txt for Unicode 18.0, emoji data from the Emoji 18.0 files on unicode.org, and font coverage from fontconfig. Nothing here was tested inside a logged-in app.

Questions about how fancy text works

How do fancy text generators work?

A fancy text generator replaces each letter you type with a look-alike Unicode character from another block, usually by adding a fixed offset to the letter’s position. Bold script R, for example, is U+1D4D0 + 17 = U+1D4E1. No font is involved, so the result pastes anywhere that accepts Unicode.

How do fancy letters work?

Fancy letters are separate characters that Unicode encoded for maths, East Asian typing or phonetics, such as MATHEMATICAL BOLD SCRIPT CAPITAL R or FULLWIDTH LATIN CAPITAL LETTER R. Your device draws them with any installed font that contains them, which is why they look styled in apps that only allow plain text.

Is fancy text a font?

No. A font changes how the same characters are drawn; fancy text changes the characters. That is why a styled name keeps its look after copy and paste, and why it can show as an empty box on a device with no font for those characters.

Is it OK to use fancy text?

It is fine for display names, bios and captions where the app accepts Unicode. Avoid it for usernames, anything people need to search for, and text that must be read by screen readers, since assistive software may read styled letters oddly.

Does fancy text work with emojis?

Yes. Emoji are Unicode characters too, so they mix freely with styled letters. Joined emoji use U+200D ZERO WIDTH JOINER; on a device that does not know the combination, the parts appear side by side but still count as one character.

Why does a stylish name have more characters than I see?

Because counters measure different units. Maths letters take two UTF-16 units each, combining marks and variation selectors add invisible code points, and one joined emoji can be four or more code points. The layer-6 name on this page is 7 visible characters but 17 UTF-16 units.

Generate your own in one click

Type a keyword and get styled variants you can copy straight into your profile.

✦ Open generator