Emoji Copy and Paste
Select an emoji to copy it. Emoji your device cannot display are hidden.
Nothing you enter here is stored, logged or shared.
Click any emoji to copy it, then paste it anywhere. Browse by category or search in your own language - every emoji here is a standard Unicode character, so it will look right wherever you paste it.
How to use
- Pick a category, or type what you are looking for in the search box.
- Hover over an emoji to see what it is called.
- Click an emoji to copy it to your clipboard.
- Paste it wherever you need it.
An emoji is a character, not a picture
What you copy from this page is text. A grinning face is the code point U+1F600, the same kind of thing as the letter A, and it travels through your clipboard as a character rather than as an image file.
This is why an emoji changes appearance when it arrives somewhere else. Apple, Google, Microsoft, Samsung and Twitter each commission their own artwork for the same code point, and the reading device draws the version its own font provides. The character is identical; only the picture differs. It is also why an emoji scales with the surrounding text, can be searched for, and works in a filename or a commit message where an image could not.
The differences are occasionally more than cosmetic. Vendors have redrawn emoji when their interpretation diverged too far from everyone else's - the pistol becoming a water pistol across every major platform is the best-known case - so a character sent in one year can carry a different impression when read in another.
Why some emoji are missing
Unicode adds new emoji most years, and a device can only draw the ones its installed font knows about. An emoji newer than the font renders as a tofu box: an empty rectangle, sometimes with the hex digits of the code point inside it.
Rather than let you copy something invisible, this page measures what your browser can actually draw and hides the rest. That means the grid is slightly different depending on the device and how recently its operating system was updated, and it means anything you can see here is something you can see. It does not guarantee your reader can: they may be on an older device, and a very new emoji can arrive as a box at the other end. For anything that matters, the older and more widely supported the emoji, the safer.
Sequences, joiners and skin tones
Many emoji are not one code point but several. A family, a couple, a professional role, a flag: these are built by joining several characters with an invisible zero-width joiner, U+200D. A device that understands the sequence draws one combined glyph; one that does not falls back to showing the parts side by side, which is why a family emoji sometimes arrives as separate people.
Skin tone works the same way. Unicode defines five tone modifiers, applied to a base emoji as a following character, and they are defined for only a subset of emoji - broadly the hands, people and body parts, where tone is meaningful. Everything here is copied in its default form; your own keyboard or phone emoji panel can apply a tone afterwards.
The practical consequence of all this is that an emoji is often longer than one character in code. Length limits, database columns and text-truncation logic all measure the parts, not the glyph, so a single family emoji can cost seven or more units of a character budget and can be cut in half by a naive truncation.
Where emoji break
The classic failure is a MySQL column declared utf8, which is not UTF-8 but a three-byte subset that cannot represent anything above U+FFFF. Emoji inserted into it are rejected or silently truncated at the first one. The fix is utf8mb4, and it is a schema change rather than a setting.
Beyond storage, emoji sort in code point order rather than any meaningful order, they are usually invisible to text search unless it is configured for them, and they can carry variation selectors that make two visually identical strings compare as different. None of this is a reason to avoid them; it is a reason to test with one before assuming a field handles them.
How a new emoji comes into existence
Emoji are added to Unicode through a formal proposal process run by the Unicode Consortium. Anyone can submit one, but the proposal has to argue the case on evidence: expected frequency of use, whether the concept is already covered, whether it is too specific, too transient, or effectively a logo. Most submissions are rejected on one of those grounds.
Accepted characters are published in an annual release, and the vendors then design their own artwork and ship it in an operating system update. That delay is why a newly announced emoji is unusable in practice for a year or more: the code point exists, but most devices have no glyph for it and render a placeholder box.
Alongside the characters, the Consortium publishes CLDR data - the short names and search keywords for each emoji, translated per locale. That is the data behind any emoji search that works in more than one language, including the search on this page, and it is why the same picture is found by different words depending on where you are.
What screen readers announce
An emoji has a name in the accessibility tree, and a screen reader reads it aloud. That is useful when the emoji carries meaning and tedious when it does not: a line ending in five party poppers is announced as five separate descriptions, and a bullet list where each item begins with a decorative symbol repeats that symbol on every line.
The usable guidance is to place emoji at the end of a phrase rather than the middle, so the sentence still reads cleanly when each one is spoken; to avoid using an emoji as the only label for a control, since the announced name may not match the meaning you intended; and to keep decorative repetition out of body text.
Emoji inside names and handles are a particular problem, because they are announced every time the name appears. Where an interface allows them, it should also allow a plain-text display name.
Storing and searching emoji in a database
The classic failure is a MySQL column declared utf8, which is a three-byte subset that cannot represent anything above U+FFFF. Emoji inserted into it are rejected or truncated at the first one, and the fix is utf8mb4 - a schema change, along with the connection charset and, in older versions, the index length limits that made people choose utf8 in the first place.
Search is the next surprise. Emoji sort in code point order, which is meaningless to a reader, and full-text indexes usually strip them as punctuation unless configured otherwise. If users can search by emoji, the practical approach is to index the CLDR name alongside the character.
Comparison has a trap of its own: variation selectors and zero-width joiners mean two strings that look identical can differ byte for byte. Normalising before comparing, or comparing rendered output rather than raw bytes, is what makes deduplication behave.
The same character, a different picture
Because each vendor draws its own artwork, an emoji carries a tone that the sender cannot control. Research on this is consistent: people interpret the same emoji differently across platforms, and sometimes with opposite valence, which is how a message meant warmly arrives as sarcasm.
Some characters have changed meaning over time as vendors converged. The pistol was redrawn as a water pistol across every major platform between 2016 and 2018, and several gestures have been redesigned after their original renderings were read as something unintended in particular regions.
The practical rule for anything that matters - a product interface, a support message, documentation - is to prefer long-established emoji whose rendering is stable everywhere, test on at least one Apple and one Android device, and never rely on a specific picture to carry meaning that the text does not also carry.
Emoji in code, filenames and identifiers
Emoji are ordinary characters, so most systems accept them in places people do not expect: commit messages, branch names, filenames, JSON keys, and in some languages even identifiers. Whether they should be used there is a different question.
Commit messages are the common case, and the convention has a name - gitmoji - where a leading character categorises the change. It works well in a team that agrees on the mapping and badly with tooling that parses commit messages, since a category encoded as a picture is harder to match than a prefix like fix: or feat:.
Filenames are riskier than they look. They survive on modern filesystems but can break older build tools, archive formats, and anything that constructs a shell command by string concatenation. For anything that crosses a system boundary, ASCII names with the emoji in the metadata rather than the name is the version that keeps working.
Frequently asked questions
- Why does the emoji look different after I paste it?
- Because you copied a character, not a picture. Apple, Google, Microsoft and Samsung each draw their own artwork for the same character, so a face copied here appears in whatever style the reading device uses. The meaning stays the same everywhere.
- Why can I not see some emoji?
- Emoji are added to Unicode every year, and your device only draws the ones its font knows about. Anything your device cannot display is hidden here automatically, so you never copy an invisible box by mistake.
- Can I choose a skin tone?
- Not here - every emoji is copied in its default form. Unicode defines skin tones for only 323 of them, mostly hands, people and body parts, and your own keyboard or phone emoji panel can apply one after you paste.
- Is anything I copy sent to a server?
- No. The emoji list is part of the page and the copying happens in your browser, so nothing you click is recorded or sent anywhere.
Last updated:
Include the steps, expected result, and actual result. Remove secrets and personal data.
