Emoji Picker — Find & Copy Emojis by Category

Browse hundreds of emojis across nine categories. Click any one to copy the character, and your recent picks stay pinned at the top. 100% client-side — no data leaves your browser.

Emoji Picker

What is an emoji? An emoji is a pictographic character encoded in the Unicode standard, so it travels through text the same way a letter does. Each one has a code point — 😀 is U+1F600 GRINNING FACE — and every device draws that code point using its own font, which is why the same emoji looks different on an iPhone, an Android phone and a Windows PC. Copying an emoji copies the character, not an image.

How to Use the Emoji Picker

  1. Pick a category tab — Nine tabs cover Smileys, People, Animals, Food, Travel, Activities, Objects, Symbols and Flags. Switching tabs is the fastest way to narrow the grid, since the categories are ordered roughly by how often each set gets used.
  2. Click an emoji to copy it — One click writes the character to your clipboard and a toast confirms which one was copied. There is no separate copy button and no selection step — the click is the copy.
  3. Paste it wherever you need it — Because the clipboard holds a Unicode character rather than an image, it pastes into messages, spreadsheets, filenames, commit messages and code comments alike. Paste as plain text if your editor tries to keep formatting.
  4. Reuse from Recently Used — Every successful copy is pushed to the front of a Recently Used row above the grid, capped at 24 entries and de-duplicated, so a repeat pick is one click instead of a scroll.
  5. Clear the history when you are doneClear Recent empties that row and deletes the saved list from your browser's localStorage — worth doing on a shared or public machine.

How Emoji Are Encoded

Emoji are text. That single fact explains almost everything about how they behave. The Unicode Consortium assigns each emoji a code point in the same character space that holds Latin letters, Chinese characters and mathematical symbols, and the rules for how those code points combine and display are published separately as Unicode Technical Standard #51. When you click a tile on this page, the browser's clipboard API receives that character sequence — never a picture — which is why the result pastes cleanly into a message, a filename, a spreadsheet cell or a Git commit message.

Emoji arrived on Japanese mobile carriers in the late 1990s as small proprietary sets, and stayed incompatible between carriers until Unicode absorbed them. Version 6.0, published in 2010, was the first release to carry a large emoji repertoire, and the set has grown through roughly annual additions ever since into the low thousands of characters.

The building blocks

Only the simplest emoji are a single code point. The rest are short sequences assembled from a handful of mechanisms, which is why one visible glyph can be several characters long.

MechanismCode pointsWhat it does
Base emojie.g. U+1F600One code point, one glyph — the simplest case
Variation Selector-16U+FE0FForces the colour emoji form of a character that also has a plain text form, such as ❤
Skin tone modifierU+1F3FBU+1F3FFFollows a person emoji to select one of five tones based on the Fitzpatrick scale
Zero Width JoinerU+200DGlues emoji into one composite, e.g. person + laptop becomes a technologist
Regional indicatorsU+1F1E6U+1F1FFA pair spells an ISO 3166-1 two-letter country code and renders as that flag
Keycap sequencedigit + U+FE0F + U+20E3Turns a digit or # into a boxed key such as 1️⃣

This is also why a single emoji can behave like several characters when software counts, truncates or reverses text. A flag is two code points, a family with a skin tone can be a dozen, and JavaScript's String.length counts UTF-16 units rather than glyphs. Truncating a caption at a fixed character limit can therefore cut a sequence in half and leave a stray joiner or a lone regional indicator behind.

Why the same emoji looks different everywhere

Unicode standardises the code point and a short reference description, not the artwork. Apple, Google, Microsoft, Samsung, Meta and X each ship their own emoji font, so the character you copy is drawn by whatever font the reader's device has installed. The consequences are practical rather than cosmetic: a design that reads as friendly in one font can read as smug in another, and a very recent emoji simply has no glyph on an older system, where it falls back to a hollow box or a question mark. If an emoji has to be understood exactly, put the meaning in the words and let the emoji decorate.

What this page stores, and what it fetches

Your recently used list lives in localStorage under a single key, capped at 24 entries, most recent first, with duplicates removed on each pick. It is per-browser and per-device: it does not follow you to another machine, and Clear Recent deletes it outright. Nothing you copy is transmitted.

One exception to the client-side rule: tiles in the Flags tab are drawn as small PNG images loaded from the third-party host flagcdn.com, because flag emoji render inconsistently across desktop platforms. Your browser makes a request to that host when you open the Flags tab. Clicking a flag still copies the Unicode regional-indicator pair, not the image.

The search box does not currently filter. The built-in list stores emoji characters without name or keyword metadata, so there is nothing to match a word like "heart" against — typing in the box shows every emoji from all nine categories in one grid, and clearing it returns you to the selected tab. Use the category tabs to narrow instead.

Using Emoji Well in Real Documents

Accessibility comes first

Screen readers announce an emoji by reading its Unicode name aloud, so 🎉 becomes "party popper" in the middle of your sentence. Three in a row become three spoken phrases. Keep emoji at the end of a sentence rather than inside it, avoid repeating the same one for emphasis, and never use an emoji as the only carrier of meaning — a status marked with a green circle and no word is unreadable to anyone using a screen reader or with a colour vision deficiency.

Watch where the text is going

Emoji are safe in anything that stores UTF-8, which today is most things, but there are still places they break. A database column declared as MySQL's older utf8 holds only three bytes per character and will reject or mangle most emoji — utf8mb4 is the encoding that actually works. Filenames accept emoji on modern systems but cause trouble in shell scripts, archives moved between operating systems and older build tools. URLs need percent-encoding, and a slug containing an emoji is usually better generated without it.

Tone carries further than you expect

The same emoji is read differently across ages, regions and workplaces, and a marker intended as light can land as sarcastic. In professional writing, the safe set is small: a thumbs up on an acknowledgement, a check mark on a completed item, a warning triangle on something genuinely risky. Anything more expressive is a judgement call about the reader, not about the emoji. In a subject line or a push notification, one is a signal and three are noise.

Frequently Asked Questions

Click any tile in the grid. The click itself is the copy — there is no separate button and no need to select the character first. A small toast in the corner confirms which emoji went to the clipboard, and that emoji is added to the Recently Used row so you can grab it again without scrolling. Paste it anywhere that accepts text.

Because the emoji list on this page stores characters only, with no names or keywords attached, so there is nothing for a word like "fire" to match. Typing in the box currently shows every emoji from all nine categories in a single grid rather than narrowing the results, and clearing it restores the selected category. Use the tabs to narrow the grid instead.

The character will be identical; the picture usually will not. Unicode defines the code point and its name, but each platform ships its own emoji font, so Apple, Google, Microsoft and Samsung all draw the same character differently. A very recent emoji may have no glyph at all on an older phone or operating system and will show as an empty box. Do not rely on an emoji to carry information the words do not.

In your browser's localStorage, under one key, capped at 24 entries with duplicates removed. Nothing is sent to a server and the list is tied to that one browser on that one device — it will not appear in a different browser, in private browsing, or on your phone. Clear Recent deletes it immediately, and clearing site data removes it too.

Copying, the category grid and the recent list are all local. The one exception is the Flags tab: those tiles are rendered as PNG images loaded from flagcdn.com, so opening that tab makes image requests to a third-party host. No emoji you click and nothing you type is sent anywhere, and clicking a flag copies the Unicode characters rather than the image.

Not from this grid — it lists base characters only. A skin tone is produced by appending one of five modifier code points (U+1F3FB to U+1F3FF) after a person emoji, and gendered or role variants are built with the Zero Width Joiner (U+200D). Your operating system's own emoji keyboard exposes those variants directly: Win + . on Windows, Ctrl + Cmd + Space on macOS, or the emoji key on a mobile keyboard.

Usually, with caveats. Storage needs a full UTF-8 encoding — MySQL's legacy utf8 type only holds three bytes per character and mangles most emoji, so utf8mb4 is required. URLs must percent-encode them, which produces long unreadable paths, so strip emoji before generating a slug with the Slug Generator. Filenames accept them on modern systems but cause friction in shell scripts and cross-platform archives.

Because many emoji are sequences rather than single code points. A flag is a pair of regional indicators, a keycap is three code points, and a family with skin tones can be a dozen. On top of that, JavaScript and several other languages count UTF-16 units, so even a single-code-point emoji above U+FFFF counts as two. Length limits, truncation and reversing text can all split a sequence and leave a broken glyph.

Use Cases

Writing on a Desktop Without an Emoji Key

Drafting a social post or a newsletter in a browser tab on a machine where the system emoji panel is disabled or unfamiliar — pick from the grid, click, paste, and keep the recent row for the handful you reuse in every post.

Labelling a README or Changelog

Mark sections of a repository README or release notes with a consistent set of glyphs — a warning triangle for breaking changes, a wrench for fixes — copied as plain characters that survive Markdown rendering on any host.

Testing How a Glyph Renders

Copy the same character into a design mockup, a test email and a phone preview to see how far the artwork drifts between platform fonts before committing it to a logo, a thumbnail or a push notification.

Status Markers in Project Tools

Prefix rows in a spreadsheet, a kanban card title or a shared doc with a small fixed vocabulary of glyphs so status is legible at a glance — paired with a word, so the meaning survives a screen reader.

Country Flags for Locale Switchers

Grab the regional-indicator pair for a country when labelling language options, currency lists or timezone rows, and check the ISO 3166-1 code the pair spells before shipping it to users in that region.

Copied!