Skip to main content
Best Emojis

Emoji to Unicode Converter

Paste an emoji, or a whole sentence with emoji in it, and get every format a developer needs: Unicode code points, HTML entities, CSS and JavaScript escapes, Python, and the raw UTF-8 bytes. It also works the other way round. Everything runs in your browser, and the length counter shows why a single emoji can count as seven characters in one language and twenty-eight bytes in another.

Characters you see
3
Code points (Python len)
6
UTF-16 units (JS .length)
10
UTF-8 bytes
22
Unicode code pointsU+1F44D U+1F3FD U+2764 U+FE0F U+1F1EF U+1F1F5
HTML entity (hex)👍🏽❤️🇯🇵
HTML entity (decimal)👍🏽❤️🇯🇵
CSS content\1F44D \1F3FD \2764 \FE0F \1F1EF \1F1F5
JavaScript (ES6)\u{1F44D}\u{1F3FD}\u2764\uFE0F\u{1F1EF}\u{1F1F5}
UTF-16 (Java, C#, JSON)\uD83D\uDC4D\uD83C\uDFFD\u2764\uFE0F\uD83C\uDDEF\uD83C\uDDF5
Python\U0001F44D\U0001F3FD\u2764\uFE0F\U0001F1EF\U0001F1F5
UTF-8 bytesF0 9F 91 8D F0 9F 8F BD E2 9D A4 EF B8 8F F0 9F 87 AF F0 9F 87 B5
URL encoded%F0%9F%91%8D%F0%9F%8F%BD%E2%9D%A4%EF%B8%8F%F0%9F%87%AF%F0%9F%87%B5

Eight emoji, four different lengths

Every row below is one emoji on screen. The other columns are what different languages and databases count, worked out by the same converter as the tool above.

EmojiCode pointsSeenPythonJavaScriptUTF-8 bytes
๐Ÿ˜€Single code pointU+1F6001124
โค๏ธText symbol plus style selectorU+2764 U+FE0F1226
๐Ÿ‘๐ŸฝEmoji plus skin toneU+1F44D U+1F3FD1248
๐Ÿ‡ฏ๐Ÿ‡ตTwo regional indicator lettersU+1F1EF U+1F1F51248
๐Ÿ‘ฉโ€๐Ÿ’ปJoined with a zero width joinerU+1F469 U+200D U+1F4BB13511
1๏ธโƒฃDigit, selector and keycapU+0031 U+FE0F U+20E31337
๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟTag sequenceU+1F3F4 U+E0067 U+E0062 U+E0073 U+E0063 U+E0074 U+E007F171428
๐ŸซบEmoji 18.0 (2026)U+1FAFA1124

Why one emoji can be seven characters long

Code points are the numbers Unicode assigns, and an emoji can be built from several of them. The Scotland flag is the clearest case: a black flag, five invisible tag letters spelling gbsct, and a cancel tag, seven code points in all. JavaScript stores text as UTF-16, where anything above U+FFFF takes two units, so the same flag has a .length of 14. UTF-8 spends four bytes on each of those code points, so it occupies 28 bytes in a database. Only one number matches what a person sees, and it is the one most code never asks for. In JavaScript, count with Intl.Segmenter and granularity set to grapheme; in Python, the third-party regex module's \X pattern does the same job.

Storing emoji in MySQL without question marks

If emoji turn into ???? after saving, the column is almost certainly using MySQL's utf8 character set, which despite its name stores at most three bytes per character. Every emoji above U+FFFF needs four, so the insert either fails or loses the data. The fix is utf8mb4: convert the table with ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, and make sure the connection itself uses utf8mb4 too, since a correct table behind a utf8 connection still mangles the text. MySQL 8.0 made utf8mb4 the default, so this mostly bites older databases that were upgraded rather than created fresh.

HTML entities, CSS and the trailing space

On a page served as UTF-8, which is nearly all of them, you can paste the emoji straight into the HTML; entities like 👍 are only needed when a template or email system mangles raw characters. CSS is fussier. In a content property, an escape such as \1F44D runs until the first character that is not hex, so if the next character could be read as hex you must end the escape with a space. That space is swallowed, not printed. Our CSS row always includes it between code points, which is why a skin tone thumbs up comes out as \1F44D \1F3FD with a gap that is meant to be there.

Why X counts every emoji as two characters

Character limits are another place the counts diverge. X's open source counting library weighs most emoji as two characters toward the 280 limit, whatever they are made of, so ๐Ÿ‘ and ๐Ÿ‘ฉโ€๐Ÿ’ป cost the same even though one is a single code point and the other is three. SMS is harsher: one emoji forces the whole message into UCS-2 encoding, which cuts a single text from 160 characters to 70. If a form, a database column or a social platform rejects text that looks short, the length table above usually shows why.

Emoji glossary: code points, joiners and selectorsEmoji shortcodes for Slack, Discord and GitHubEvery emoji to copy

Questions about emoji code points

What is the Unicode for the smiley emoji?

๐Ÿ˜€ grinning face is U+1F600. In HTML write 😀, in CSS \1F600, in JavaScript \u{1F600} or the older \uD83D\uDE00, and in Python \U0001F600. Paste any other emoji into the converter for its codes.

Why does one emoji have two code points?

Many emoji are sequences. โค๏ธ is the heart symbol U+2764 plus the style selector U+FE0F, ๐Ÿ‘๐Ÿฝ is a thumbs up plus a skin tone, and flags are two letters. Your device draws the sequence as one picture.

What is the difference between \u{1F600} and \uD83D\uDE00?

They are the same emoji. \u{1F600} names the code point directly and works in modern JavaScript. \uD83D\uDE00 is the UTF-16 surrogate pair, the only form older JavaScript, Java, C# and JSON accept for characters above U+FFFF.

How many bytes is an emoji?

In UTF-8, four bytes for each code point above U+FFFF, so a simple emoji like ๐Ÿ˜€ is four bytes. Sequences add up: ๐Ÿ‘๐Ÿฝ is 8 bytes, ๐Ÿ‘ฉโ€๐Ÿ’ป is 11 and the Scotland flag is 28.

Does this converter send my text anywhere?

No. The conversion runs entirely in your browser with JavaScript. Nothing you type or paste is uploaded or stored.