AnyTool
Your files never leave your device. All processing happens locally in your browser.

How do I find and copy an emoji, and get its Unicode code point?

Open a client-side emoji picker, type a word like “fire”, “laugh” or “rocket” (or browse the nine category tabs), then tap the emoji to copy it and paste it anywhere. Click an emoji to see it large with its Unicode code point (e.g. U+1F600) and every developer escape form — HTML entity, CSS, JavaScript and Python — each copyable. Supported people and hand emoji take a skin tone. Everything runs in your browser; nothing is uploaded.

  • Search by name or keyword across 350+ curated emoji, or browse 9 Unicode categories
  • One-tap copy with a toast, plus a recently- and frequently-used row saved locally
  • Skin-tone selector (Fitzpatrick U+1F3FB–U+1F3FF) for supported people & hand emoji
  • Per-emoji code points and HTML / CSS / JS / Python escape forms, all copyable
  • 100% client-side — no emoji API, no CDN, nothing uploaded

What is

Emoji Picker

An emoji picker is a tool for finding, previewing and copying emoji — typically with category tabs, a keyword search, a skin-tone selector and a recently-used row. A developer-focused picker also exposes each emoji’s Unicode code point(s) and escape forms (HTML entity, CSS, JavaScript, Python). Because an emoji is a Unicode code point rather than an image, it is drawn by whichever emoji font the viewing device provides, so the same emoji looks different across Apple, Google, Microsoft and Samsung.

Social Media

Related terms

Unicodecode pointFitzpatrick skin toneHTML entityvariation selectorsurrogate pairZWJ sequenceemoji fontcopy to clipboard

Frequently Asked Questions

No. The emoji set ships inside the page, and searching, copying and code-point lookup all happen in your browser.

The emoji picker is 100% client-side. The whole curated emoji dataset is bundled into the page as plain text, so there is no emoji API, CDN or server call anywhere in the tool — search, copy and every code-point or escape-form calculation run on your device in JavaScript. Your recently- and frequently-used emoji are stored only in this browser’s localStorage and can be cleared at any time. The tool works offline once cached, and the only optional network use on the site is consent-gated ads, which never see your activity.

An emoji is a Unicode code point, not a picture, so each platform draws it with its own font — Apple, Google, Microsoft and Samsung all differ.

Unicode defines which emoji exist and what they mean, but leaves the artwork to each vendor. So 😂 is drawn by Apple’s font on an iPhone, Google’s Noto font on most Android phones, Segoe / Fluent on Windows and One UI on Samsung Galaxy devices — four different designs of the same code point. This picker renders with your device’s own emoji font, which is exactly how you will see it elsewhere, but your reader may see a different design. A brand-new emoji can even show as a box (□) on an older OS that has not shipped its font yet.

Pick a Fitzpatrick tone (light to dark, U+1F3FB–U+1F3FF); it attaches to supported people and hand emoji only.

Five Unicode skin-tone modifiers based on the Fitzpatrick scale (U+1F3FB light through U+1F3FF dark) change the colour of human and hand emoji. In this picker you choose a tone once and it is applied to every supported emoji — hands, gestures and single-person emoji. Non-human emoji and multi-person sequences are left unchanged. The exact shade still varies a little by platform, and the emoji’s code-point read-out updates to include the modifier so you can see the full sequence.

Click the emoji and copy its HTML entity (e.g. 😀), CSS escape, JavaScript (\u{1F600}) or Python form from the inspector.

Because an emoji is one or more Unicode code points, developers need it in different escape forms depending on where it goes. Click any emoji and the inspector shows its U+ code point(s) plus the HTML hex entity (😀), HTML decimal entity, the CSS content escape, the JavaScript ES6 form (\u{1F600}) and the ES5 surrogate-pair form (😀), and the Python escape — each with its own copy button, and all computed with the selected skin tone applied so multi-code-point sequences show every scalar.

Detailed Explanation

How It Works

What the Emoji Picker Does

The tool is a fast, private way to find, preview and copy emoji. A curated local dataset of 350+ emoji is grouped by the nine standard Unicode categories — Smileys & Emotion, People & Body, Animals & Nature, Food & Drink, Travel & Places, Activities, Objects, Symbols and Flags — and every entry carries keywords so a search for “fire”, “laugh”, “rocket” or “100” lands on the right glyph. Tapping an emoji copies it with a toast and adds it to a recently- and frequently-used row saved locally; a Multi mode batches several emoji into a basket you can copy at once. Clicking an emoji also opens an inspector showing it large with its name, category, Unicode code point(s) and every developer escape form.

  • 350+ curated emoji across the 9 standard Unicode categories
  • Keyword search plus one-tap copy with a toast
  • Recently- and frequently-used rows persisted in localStorage
  • Multi-select basket to copy several emoji together
Methodology

How Skin Tones and Code Points Are Computed

A pure engine (emojiDataEngine.ts) does the work with no network. Skin tones use the five Fitzpatrick modifiers (U+1F3FB–U+1F3FF): for a supported people or hand emoji the engine drops any trailing variation selector (U+1F3FB replaces the U+FE0F emoji-presentation selector) and appends the chosen modifier, leaving non-human emoji untouched. Code points are extracted with surrogate-pair-aware iteration over the string, so a flag (two regional-indicator letters) or a skin-toned hand reports every scalar. From those code points the engine derives each escape form — U+ notation, the HTML hex and decimal entities, the CSS content escape, the JavaScript ES6 (\u{...}) form, the ES5 UTF-16 surrogate-pair form and the Python escape — and search ranks matches by exact name, name prefix, word-in-name and then keyword.

  • Fitzpatrick modifier appended after stripping U+FE0F, human emoji only
  • Surrogate-pair-aware code-point extraction handles flags and sequences
  • Escape forms derived per scalar for HTML, CSS, JS ES6/ES5 and Python
  • Ranked keyword search; all logic deterministic and client-side
Technical Details

Emoji, Unicode and Escape Forms

An emoji is one or more Unicode code points, not an image. Simple emoji are a single scalar (grinning face is U+1F600); others are sequences — flags are two regional-indicator symbols, many emoji carry a U+FE0F variation selector to force emoji (vs text) presentation, and complex emoji join scalars with a zero-width joiner (U+200D). Above U+FFFF, JavaScript stores a character as a UTF-16 surrogate pair (U+1F600 is 😀), which is why the ES5 form differs from the ES6 \u{1F600} form. HTML accepts either the decimal (😀) or hex (😀) numeric entity, CSS uses a backslash-hex escape, and Python uses \U with eight hex digits for astral code points. The inspector shows all of these for the selected emoji with its skin tone applied.

  • Grinning face = U+1F600; flags = two regional-indicator scalars
  • U+FE0F forces emoji presentation; U+200D joins ZWJ sequences
  • Astral code points are UTF-16 surrogate pairs (😀)
  • HTML hex/decimal, CSS, JS ES6/ES5 and Python forms all provided
Limitations

Honest Limitations

Emoji render with the viewing device’s own emoji font, so the same code point is different artwork on Apple, Google (Noto), Microsoft (Segoe / Fluent) and Samsung (One UI); what you see here is your device’s rendering, and your reader may see another. A very new emoji can appear as a box (□) or missing-glyph on an older operating system that has not shipped its font. Skin-tone modifiers attach only to supported people and hand emoji, and the exact shade varies by vendor. This is a broad, curated set — not the full ~3,800-emoji Unicode catalogue — and emoji specifications change over time. Character counts elsewhere may treat a multi-code-point emoji as several characters. When exact rendering matters, verify on the real target device.

  • Artwork differs across Apple, Google, Microsoft and Samsung fonts
  • Brand-new emoji may show as □ on older systems
  • Skin tones apply to supported human/hand emoji only; shade varies
  • Curated subset, not the full Unicode set; specs change over time
Privacy & Security

Private by Design

The entire emoji dataset is bundled into the page as plain text, so there is no emoji API, CDN or server call anywhere in the tool: search, copy and every code-point and escape-form calculation run on your device in JavaScript. The only thing stored is your recently- and frequently-used list, which lives in this browser’s localStorage and never leaves it — a Clear button wipes it instantly. There is no backend, database, account or telemetry, the tool works offline once cached, and closing the tab keeps nothing beyond that local list. The only optional network use anywhere on the site is consent-gated advertising, which never sees your searches or copies.

  • No emoji API, CDN, server, database or telemetry in the path
  • Everything computed on your device in JavaScript
  • Recent/frequent list stored only in localStorage; clearable
  • Works offline once cached; only optional network use is consent-gated ads
Escape forms for one emoji — grinning face (U+1F600) — and where each is used
FormExample (grinning face)Where it is used
Unicode notationU+1F600Documentation, Unicode charts
HTML hex entity😀HTML / XML markup
HTML decimal entity😀HTML / XML markup
CSS escape\1F600CSS content property
JavaScript ES6\u{1F600}Modern JS string literals
JavaScript ES5😀Legacy JS (UTF-16 surrogate pair)
Python\U0001F600Python string literals

Multi-code-point emoji (flags, skin-toned hands, ZWJ sequences) produce several scalars, and the tool shows every one with the selected skin tone applied. The rendered artwork still depends on the viewing device’s emoji font.