Emoji Picker
Browse, search, copy emojis by category. Recent emojis remembered for the session. Free, offline, client-side, instant, secure.
- Runs in your browser
- Nothing uploaded
- Free, no sign-up
Click any emoji to copy it. Search by category or keyword (type "smile", "cat", "usa"). Recent picks are remembered for the session. ~300 hand-picked emojis across 9 categories - not the full Unicode set (~3,800). For everything, use your OS picker.
How to Use Emoji Picker
- Browse categories in the grid - Smileys, Hands, Hearts, Animals, Food, Travel, Objects, Symbols, Flags.
- Search by typing in the box. Matches either a category name ("flags") or a tag attached to an emoji ("usa", "smile", "happy", "cat"). Press / from anywhere to focus the search.
- Click an emoji to copy it - the toast confirms the actual character that was copied.
- Recent picks appear at the top up to 16 entries. They're stored in
sessionStorageso they vanish when the tab closes (no persistent tracking). - Paste anywhere: chat, email, document, code, anything that accepts UTF-8 input.
Frequently Asked Questions
Is this every Unicode emoji?
No. Unicode 15 has roughly 3,800 emojis when you count skin-tone variants and ZWJ compounds; this tool ships a curated set of about 300 – enough to cover the everyday cases (Smileys, Hands, Hearts, Animals, Food, Travel, Objects, Symbols, Flags) without an overwhelming grid. For the full set, your OS emoji picker (Cmd+Ctrl+Space on macOS, Win+. on Windows, GTK input method on Linux) is more comprehensive. An older version of this FAQ claimed “all major categories” including Activities/Sports – Activities isn’t shipped yet, so that line was inaccurate.
Why did the search not work before?
The original search filter expression was c.cat.toLowerCase().includes(lq) || c.items.length > 0 – the second clause is universally true (every category has items), so the filter never removed anything. Typing in the search box looked like it did nothing. The current version filters categories by name AND filters emojis by tag, so a search for “happy” surfaces ๐ even though no category is called “Happy”.
How do tag searches work?
Each emoji has a hand-written tag list – ๐ has tags [“grin”, “happy”, “smile”], ๐บ๐ธ has [“usa”, “america”, “united states”]. The search is a case-insensitive substring match on those tags. A category whose name matches the query shows all of its emojis; a category that doesn’t match the name still shows individual emojis whose tags match. Results from multiple categories appear in their normal order.
Why do some emojis look different on different devices?
Each OS / app ships its own emoji font. Apple’s emoji set, Google’s Noto Color, Microsoft’s Segoe UI Emoji, Samsung One UI, and Twitter Twemoji all draw the same Unicode codepoint as a different picture. The emoji you send is just a codepoint – the picture you see is drawn by the recipient’s font. That’s why ๐ might look slightly different on iPhone vs Android vs Windows.
What’s a VS16 variation selector and why does it matter?
Some characters like โ โ โ โค are originally legacy “dingbat” or “miscellaneous symbol” codepoints. By default they render as monochrome text-style glyphs. To force the emoji presentation, you append U+FE0F (Variation Selector 16). So โค๏ธ is two codepoints: U+2764 + U+FE0F. This tool includes the VS16 where needed; copy-pasting into a system that strips it would show โค in monochrome instead.
Are recent picks tracked?
No tracking – they’re stored locally in sessionStorage, which is automatically cleared when you close the tab. We deliberately did NOT use localStorage (which persists across sessions) to avoid leaving a fingerprint of your emoji habits on disk. Nothing leaves your browser.
Does this work on mobile?
Yes, the grid wraps responsively and emoji buttons are sized for touch. On mobile, your OS keyboard’s emoji picker is still usually the more comprehensive option (it has thousands of emojis with proper skin-tone variants and ZWJ compounds). This tool is most useful on desktop where the OS picker is less discoverable.
Is anything sent to a server?
No. The page loads three static files (HTML, CSS, JS) and then runs entirely in your browser. You can disconnect from the internet after the page loads. No analytics, no tracking, no cookies, no localStorage.
Is this tool free?
Yes – free, unlimited, no signup, no watermark. Use the output in any context. Attribution to is appreciated but not required.
Related Tools
Convert Emoji to Image →
online emoji-to-PNG generator with native/Apple/Segoe/Noto font stacks, transparent background, and auto-fit sizing. Client-side, instant.
Colour Picker →
Colour Picker - visually or type HEX / RGB / HSL / HSV -โฆ
Add Combining Characters →
Add Combining Characters diacritical marks above, below, or through any text. Free, offline, client-side,โฆ
Center Unicode Text →
Center Unicode text within a fixed width, with real grapheme counting for emoji andโฆ
Check Spoofed Unicode Text →
Detect Unicode confusables and homoglyphs from Cyrillic, Greek, Armenian, and Hebrew that imitate Latinโฆ
Chunkify Unicode Text →
Split Unicode text into equal chunks with grapheme, code-point, or UTF-16 modes. Keeps emojiโฆ
ASCII to Unicode Converter →
ASCII to Unicode & Decode decimal, hex, octal, or U+XXXX values to Unicode charactersโฆ
Convert Code Points to Unicode →
Convert Code Points to Unicode (U+XXXX, hex, decimal) to characters - handles emoji, CJK,โฆ
Convert Unicode to ASCII →
Convert Unicode to ASCII with transliteration (รฉ โ e, รฑ โ n), replace, orโฆ
Convert Unicode to Base64 →
Encode Unicode text to Base64 (and decode) with standard, URL-safe, MIME variants. UTF-8 proper.โฆ
Convert Unicode to Binary →
Convert Unicode to binary in 3 modes (UTF-8, codepoint, UTF-16). Per-character breakdown. Free, offline,โฆ
Convert Unicode to Bytes →
Convert Unicode to UTF-8 bytes in hex, decimal, or binary. Per-byte grid, reverse direction.โฆ