Just File Tools

Emoji Picker

Searchable Unicode emoji picker with skin-tone variants and recently-used memory

Loading emoji picker (~150 KB)…

Click any emoji to copy it. Skin tone variants live under emojis that support them — long-press on touch, right-click on desktop. Search by name (English) in the search box.

How to Emoji Picker Online

A searchable Unicode emoji picker with skin-tone variants, recent-used memory, and one-click copy.

  1. Click any emoji to copy it. A confirmation banner appears at the top.
  2. Search by name in English — 'fire', 'pizza', 'sob', 'thumbsup'.
  3. Long-press (touch) or right-click (desktop) on emojis with skin-tone variants to pick a tone.
  4. Recently used emojis appear above the picker for one-click re-use. Clear the list any time.

About Emoji Picker

Emojis are one of those features where every OS, every app, and every input field has a slightly different picker, and the worst one is whatever the current context happens to be. This tool exists for the cases where the OS picker isn't reachable or isn't fast enough: pasting an emoji into a web form that doesn't trigger your OS picker, finding an emoji you don't know the name of, picking a skin-tone variant when the OS picker doesn't expose them well.

The implementation uses **emoji-picker-element**, an open-source Web Component built for exactly this purpose. It ships with the full Unicode emoji set, supports search by CLDR annotation (the standard emoji names), handles skin-tone variants, and renders in the browser's native emoji font (which means the emoji look identical to how they'd appear when you paste them elsewhere). The library is small (~150 KB) and runs entirely in your browser.

**What it covers**:

- **Search by description** in English. Type 'fire' and get 🔥. Type 'sob' and get 😭. Type 'thumbsup' and get 👍. The search uses the standard CLDR annotations, which match the emoji's official Unicode names and common nicknames. - **Categories**. The standard Unicode emoji categories: Smileys & Emotion, People & Body, Animals & Nature, Food & Drink, Travel & Places, Activities, Objects, Symbols, Flags. Browse by category if you don't know what you're looking for. - **Skin-tone variants**. Emojis that support skin tones (people, hands, some activity emojis) have a small indicator. Long-press on touch or right-click on desktop to pick a variant. The picker remembers your preference for subsequent picks in the same session. - **Recently used**. Locally-stored in browser localStorage. Persists across visits in the same browser profile but never leaves your machine. Up to 24 most-recent emojis shown above the picker for one-click re-use. - **Copy on click**. The single primary action. Click an emoji, it copies to the clipboard, a confirmation banner shows briefly. Then paste anywhere.

**Three places it beats the OS picker**:

1. **Web forms where the OS picker doesn't open**. Some form fields (especially custom React text inputs) don't trigger the OS emoji picker shortcut. This tool opens in a browser tab. 2. **Searching by description** when you don't know the OS picker's search syntax. Every OS picker has different search behavior; this one uses standard CLDR names that are consistent across platforms. 3. **Skin-tone discoverability**. Some OS pickers hide skin-tone variants behind unintuitive interactions. This tool's long-press/right-click is documented and predictable.

**Three places the OS picker is still better**:

1. **Speed of access** if you're already in a text field — Win+. or Ctrl+Cmd+Space are faster than switching to a browser tab. 2. **Recent across all apps**. The OS-level recents include emojis you used in Slack, email, terminal, etc. This tool's recents are browser-only. 3. **System-wide consistency**. The OS picker shows the exact emoji that will render in any app on that OS; the rendering here is browser-native, which is usually identical but occasionally differs (especially for very new emoji).

**Privacy**. The picker is a JavaScript library running in your browser. The emoji set ships with the library. Your search queries, the emojis you pick, the recents list — all stay in your tab and browser storage. No network calls during use after the initial library load. Verify in DevTools — open Network, search and pick, watch the panel stay empty.

**Edge cases handled**: clipboard write failure (silent, no crash); localStorage disabled or full (graceful — recent list just isn't persisted); very new emoji not in the library yet (won't appear; use a different one or wait for the library to update); display rendering issues on older browsers (graceful — emoji shows as boxes if the font is missing, which is an OS-level issue not a tool issue).

**A note on browser support**. The emoji-picker-element uses Custom Elements and Shadow DOM, both of which have been universally supported in modern browsers for years. The picker works in Chrome, Firefox, Safari, Edge, and modern mobile browsers. On very old browsers (pre-2019 versions), the picker may not load — those browsers are also generally unsupported by the rest of the modern web, so it's not a target audience.

**The Unicode behind the curtain**. Each emoji is one or more Unicode codepoints. Simple emojis like 🔥 are one codepoint (U+1F525). Complex ones like 👨‍👩‍👧 are multiple codepoints joined by ZWJ (zero-width joiner) characters: the family-of-three is six codepoints (man + ZWJ + woman + ZWJ + girl). Skin-tone variants use modifier codepoints: 👍🏽 is two codepoints (thumbs up + medium skin tone modifier). If you're curious what's actually in a copied emoji, paste it into the <a href="/tools/unicode-inspector">Unicode Inspector</a> on this site to see the components.

Frequently Asked Questions

Why use a web emoji picker when my OS has one?

Three cases where the OS picker falls short. **Browser keyboard shortcuts**: Windows' Win+. picker doesn't always work inside every input field; macOS's Ctrl+Cmd+Space picker has timing quirks. **Searching by description**: the OS picker's search is OS-dependent; this one uses the standard Unicode CLDR annotations which match every emoji's official name. **Recent across machines**: the OS picker tracks recents locally; this one keeps a recent list in browser localStorage that survives across visits but is per-browser-profile (not per machine).

Where do the emoji come from?

The page uses **emoji-picker-element**, an open-source web component (a custom HTML element built with the W3C Custom Elements standard). The emoji data ships with the library and is based on Unicode CLDR (Common Locale Data Repository) — the same data that powers most modern emoji pickers and search interfaces. Versions track Unicode releases; you get the emoji set that the library version supports.

How does skin-tone selection work?

Emojis that have skin-tone variants (people, hands, etc.) show a small indicator. **Long-press on touch devices** or **right-click on desktop** opens the variant picker. Pick the variant, it copies. The picker remembers your skin tone preference for subsequent picks in the same session.

Why doesn't the emoji render correctly on my page?

Emojis are rendered by the OS/browser font stack, not by this tool. If you paste 🥹 into a context that doesn't have a recent emoji font, it shows as boxes or as an older emoji style. Common causes: older Android versions, terminal emulators with monochrome emoji, some old browser versions. Modern desktop browsers (Chrome, Firefox, Safari, Edge — last 2-3 years of versions) render all emoji as expected.

What about the latest emoji (Unicode 16, etc.)?

The emoji you can pick depend on the emoji-picker-element library version we use, which itself depends on the underlying Unicode CLDR version. Brand-new emoji from the latest Unicode update may take a few months to appear in the library and a few more months before all OS font stacks render them correctly. If you see a particular emoji as a box, your OS/browser may not have the font yet — try a different one.

Are my recent emojis sent to a server?

No. The recent list lives entirely in localStorage in your browser. It persists across visits (same browser, same profile) but never crosses the network. The emoji picker itself loads its data from the same domain; no external CDN calls during normal use. Clear your recents from the toolbar above when you want a clean slate.