Emoji Picker

Emoji Picker

Search and copy emojis by category. Find emoticons, symbols, flags for social media. Free online emoji keyboard with search and recent emojis

There are 3,800+ emoji in Unicode 15.1, and your OS keyboard shows maybe 1,000. The "people walking" emoji has 30 variants across skin tone and gender; the "couple" emoji has hundreds counting the zero-width-joiner sequences. This picker shows the complete current set, searches by name and by shortcode (`:smile:` like GitHub / Slack / Discord), and copies the canonical UTF-8 bytes so the emoji works everywhere the receiver's system has the font.

What an emoji actually is

  • A simple emoji is one Unicode codepoint. 😀 = U+1F600. UTF-8: F0 9F 98 80 (4 bytes).
  • A skin-tone variant is the base emoji + a "skin tone modifier" codepoint. 👍🏻 = 👍 (U+1F44D) + light skin (U+1F3FB). UTF-8: 8 bytes total.
  • A family / couple / gendered emoji is a sequence of base emojis joined with U+200D (zero-width joiner, ZWJ). 👨‍👩‍👧 = man + ZWJ + woman + ZWJ + girl. UTF-8: 18 bytes.
  • A flag is a pair of regional-indicator letters. 🇵🇱 = 🇵 (U+1F1F5, regional indicator P) + 🇱 (U+1F1F1, regional indicator L). The Polish flag is two codepoints, 8 bytes UTF-8.
  • Some emoji have variation selectors (FE0F = "render as emoji, not text") and tags (for flags of subdivisions like Texas, Scotland). Renders depend on font support.

Why emoji rendering differs across systems

The Unicode codepoints are standardized; the visual rendering is up to the font. Apple Color Emoji, Google Noto Color Emoji, Microsoft Segoe UI Emoji, Samsung One UI Emoji, Twitter Twemoji — each renders 😀 slightly differently. The recipient sees their system's version. For consistent appearance (e.g., a marketing site), embed Twemoji as SVG.

Old systems missing the codepoint show 󠁧󠁢󠁥󠁮󠁧󠁿 (tofu rectangle). Newer emoji (added 2024+) may not render on systems with older fonts; for compatibility-sensitive content, stick to the Unicode 10-12 set (released 2017-2019) — widely supported in 2026.

Working example: shortcode to emoji

Input

Shortcode: :rocket:

Output

Character:  🚀
Codepoint:  U+1F680 ROCKET
UTF-8:      F0 9F 9A 80 (4 bytes)
Group:      Travel & Places → transport-air
Keywords:   rocket, space, launch, ship
Compatible: Unicode 6.0 (2010) — supported on every system since iOS 5 (2011), Android 4.4 (2013), Windows 8 (2012)

:shortcode: syntax originated in GitHub markdown and was adopted by Slack, Discord, and most chat apps. The shortcode dictionaries are not standardized — :+1: is "thumbs up" on Slack and GitHub but not all platforms. The Unicode emoji name is the canonical reference; shortcodes are convenience aliases.

Emoji in production: things that bite

  • String length ≠ visual length. "Hello 👨‍👩‍👧" has length 17 in JavaScript (`.length`) because UTF-16 counts code units. The user sees 7 visual characters. Use grapheme counting (Intl.Segmenter) for user-facing lengths.
  • Database UTF-8 vs MySQL utf8 (NOT actual UTF-8). MySQL's "utf8" is a 3-byte-max variant that cannot store emoji. Use "utf8mb4" — same as standard UTF-8.
  • Truncation in the middle of an emoji — slicing a string at an arbitrary byte position can split a multi-byte emoji and produce mojibake. Always truncate on grapheme boundaries.
  • Sorting and comparison — locale-aware sorting puts emoji at the end (after letters) but the order within emoji is by codepoint, not "popularity". For "most recent emoji used" UI, track separately.
  • Search and indexing — Elasticsearch and Postgres full-text search handle emoji in CJK-style tokenization. Plain LIKE %emoji% works but may not match flag sequences (two codepoints).

When to reach for this tool

  • You want to add an emoji to a doc / commit message / chat and your keyboard does not surface the one you want.
  • You are setting up emoji-trigger automations (Slack reactions, GitHub workflow on :rocket: comment) and need the exact codepoint or shortcode.
  • You are auditing a codebase's emoji usage and want to find non-standard or deprecated codepoints.
  • You are implementing emoji-aware string handling and want a reference for tricky cases (ZWJ sequences, skin tone modifiers, regional indicators).

What this tool will not do

  • It will not render emoji the same on every device. Visual differs by OS/font; only the codepoints are standardized.
  • It will not let you draw custom emoji. For custom (e.g., company-specific) Slack emoji, use Slack's admin interface to upload a PNG/GIF.
  • It will not handle emoji-only fonts for headlines. For consistent emoji in printed materials or images, render to SVG via Twemoji or Noto Color Emoji and embed.

Frequently asked questions

Why does the same emoji look different on iOS vs Android?

Different fonts. Apple Color Emoji and Google Noto Color Emoji are designed by different teams with different artistic choices. The Unicode codepoint is identical; the glyph rendering is not. For brand consistency, embed Twemoji (Twitter's open-source emoji set) as SVG.

How do I count "characters" in a string with emoji?

`Intl.Segmenter` in modern browsers and Node 16+. `[...new Intl.Segmenter().segment(str)].length` gives the grapheme count — what users perceive as one character. `str.length` gives UTF-16 code units, which is much larger for emoji-heavy strings.

Are emoji bad for accessibility?

Screen readers announce emoji by their Unicode name ("smiling face with smiling eyes"). One or two emoji per message: fine. A row of 20 emoji at the end of a heading: the screen reader user gets a long announcement. Use sparingly in functional content; freely in casual content.

Why does my database store emoji as `??`?

The column or connection is not UTF-8 (or in MySQL, not utf8mb4). MySQL's "utf8" is a legacy 3-byte variant that cannot represent characters beyond U+FFFF. Migrate to utf8mb4 (the actual UTF-8) — most modern MySQL deployments default to it.

How are flags represented?

Each flag is two "regional indicator" codepoints corresponding to the country's ISO 3166-1 alpha-2 code. 🇵🇱 (Poland) is U+1F1F5 + U+1F1F1 (P + L). Subdivision flags (Scotland, Wales, Texas) use a black flag + "tag" sequence — newer Unicode, less universally supported.

Can I use emoji in URLs or filenames?

Technically yes (IRI / RFC 3987 supports Unicode in URLs); practically not advised. Most copy-paste flows percent-encode the URL into unreadable `https://example.com/%F0%9F%9A%80`. For filenames, OS support varies — works on macOS/Linux, sometimes on Windows.

Related tools

Last updated · E-Utils editorial team