Skip to content
WM KeyboardWM Keyboard
Accessibility

Emoji picker & search

Semantic emoji search in your language, skin tones and dual-tone pairs, and favourites and recents in the emoji panel.

The emoji panel is a full browsing surface, not just a grid: search understands synonyms and typos in English and Bengali, every toned emoji remembers the variant you last picked for it, and your favourites and recents ride at the front of their own tab.

Screenshot pending
The emoji panel open over a text field, with the search icon, tab strip, and category grid.
WM KeyboardEmojiAccessEmoji button in toolbar

The most direct route is the emoji button in the toolbar (on by default). Tap it and the panel opens over the keys. If you’ve turned on a dedicated emoji row, its own launcher icon opens the same full panel.

Two more toggles replace a bottom-row key outright with an emoji key, so opening the panel takes one less tap:

WM KeyboardLayout & sizeBottom-row keysEmoji key instead of 🌐

Emoji key instead of 🌐 is on by default: the 🌐 key opens the emoji panel instead of switching language. Language switching doesn’t disappear: it moves to a spacebar swipe (set to Language by default; see Gestures), so you get it back for free.

Comma key opens emoji, under the same group, is off by default. Turn it on and the bottom-row comma key becomes an emoji key too, with comma itself demoted to a long-press alternate. Its own info text warns that turning this on also removes the emoji tool from the toolbar, since the key is meant to replace it. Drag the tool back into the toolbar if you want both.

Tap the magnifying-glass tab at the start of the tab strip to switch the panel into search mode. The search pill appears under the results, just above the keys typing into it, so the emoji themselves stay at the top of the panel where your thumb left them. It isn’t a text field you type into directly. Tapping it turns the letter keys underneath into a query editor: what you type appends to the search pill instead of going to your document, and a small backspace icon next to the pill deletes from your actual text field without leaving search. Tap the search icon again (or switch to any category tab) to leave search and go back to browsing.

Screenshot pending
Typing 'cat' and 'বিড়াল' in the panel's search field, both surfacing the same cat emoji.

Search understands more than an exact keyword match, layered in this order, where matches on more than one query word add up:

  1. An exact shortcodetada finds only 🎉, unambiguously, ahead of anything else.
  2. A shortcode prefixthumb starts narrowing toward :thumbsup: and its neighbors.
  3. An exact keywordcat matches every emoji tagged with the word “cat”.
  4. A synonym — a small hand-curated list expands common searches: party also surfaces 🍾 via “celebration”, happy also reaches emoji tagged “joy” or “cheerful”, and Bengali concepts expand the same way (খুশি → হাসি, আনন্দ).
  5. A keyword prefixcele starts matching “celebration” before you finish typing it.
  6. A one-typo fuzzy matchhapy still finds 😀, for query words of four letters or more.

English and Bengali keywords are merged into the same index, so a query never needs to specify a language: বিড়াল and “cat” surface the same set of cat emoji, and this holds for every cat-family emoji in the catalog, not just the smiley ones. Typing a language you haven’t installed a keyword pack for still works for anything with English or Bengali tags; downloading a pack for another language is covered in Emoji search in your language.

WM KeyboardEmojiSkin toneDefault skin tone

Long-press any emoji in the panel grid (search results included) to open its variant popup. If WM KeyboardEmojiEmoji panelEmoji descriptions is on (the default), the popup opens with the emoji’s name at the top, so near-identical faces are easy to tell apart.

Screenshot pending
Long-pressing a toned emoji opens six variants: the neutral base plus five Fitzpatrick tones.

Most toned emoji offer a single row of six choices (the neutral base plus five Fitzpatrick skin tones); tap any one to insert it. A small number of two-person emoji, like 🤝 and 👫, instead open a dual-tone picker with two independent swatch rows, one per person, so each side of a handshake or hug can carry its own tone.

Screenshot pending
The dual-tone picker for 🤝, with independent skin tones for each hand.

Whichever variant you tap becomes that emoji’s new default: the picker remembers your last choice per emoji and shows it from then on, in the grid and in your recents. Two settings shape how tones work everywhere else:

WM KeyboardEmojiSkin toneOverride with last used

Default skin tone sets the tone every toned emoji gets when you haven’t picked one for it yourself — in the panel grid, the suggestion strip and search results alike. Override with last used (on by default) keeps your per-emoji memory ahead of that default, so an emoji you’ve already toned by hand stays the way you left it. Turn it off if you’d rather the default tone win everywhere and your per-emoji picks only apply to that one insertion.

Emoji with gender or role variants (a runner shown as 🏃‍♀️ or 🏃‍♂️, a doctor as 👨‍⚕️ or 👩‍⚕️) collapse into the same long-press popup rather than cluttering the grid with every combination as its own cell; pick the member you want at the top of the popup, then its tone below.

WM KeyboardEmojiEmoji panelHistory tab

The first tab in the panel (once you have at least one recent or favourited emoji) shows your history. History tab chooses what fills it: Recent orders by when you last used an emoji, Most used ranks by frequency; favourited emoji are pinned to the front either way.

Screenshot pending
The history tab with favourites pinned first, and the long-press options for a starred emoji.

Long-press any emoji to star it as a favourite from the same popup used for skin tones: the star toggle sits right above the variant grid. Once you have two or more favourites, a Reorder favourites row appears in that popup too, opening a drag-to-reorder list so you can put your most-used ones first.

Screenshot pending
Dragging a favourite into a new position in the reorder list.

Long-pressing a cell on the history tab specifically also offers Remove from recents, for pulling a one-off emoji back out without waiting for it to age off the list. For clearing the whole list at once:

WM KeyboardEmojiEmoji panelClear recents button

Off by default. Turn it on to add a “Clear recents” button to the Recent tab. It only appears on the Recent view, not Most used, since a frequency ranking isn’t something a single tap should wipe.

WM KeyboardEmojiEmoji panelAnimated emoji

Around 880 emoji have an animated version published by Google as part of Noto Animated Emoji. Long-press any of them in the panel and the popup loops the animation, with a Send animated emoji button under it that sends the 512×512 GIF into the field you’re typing in.

The button only appears once the animation has loaded — there’s no control offering to send something you haven’t seen — and the popup stays open afterward, preview and all, so you can fire off two in a row or pick a skin tone next.

Screenshot pending
Long-pressing 😀 shows its animation looping, over the send button.

Two files exist for every animation, and the popup uses them for different jobs. Opening it fetches the WebP (around 350 KB) to loop in the preview; pressing the button fetches the GIF (around 800 KB) and sends that. Long-press is also how you reach skin tones and favourites, so most long-presses send nothing and shouldn’t cost the larger file — and the GIF is what gets sent because an app that accepts image/webp may still draw only its first frame, which would make a “send animated emoji” button a liar.

Both come from fonts.gstatic.com, and nothing is downloaded until you long-press. Nothing about you goes with either request: it’s a plain fetch of a fixed URL, with no query, no key, and no identifier.

The button is deliberately absent in three cases:

  • The emoji has no animation. Flags, most ZWJ sequences, and plenty of symbols aren’t in the set. The app ships the list of which ones are (assets/emoji/animated.txt, about 8 KB) rather than asking the server, so a long-press never stalls on a request that was going to 404.
  • The app can’t take images. A GIF goes through the same rich-content path as a sticker, so a field that accepts no images (a plain search box, most password fields) doesn’t get the offer. See GIFs for what does and doesn’t accept them.
  • The setting is off. Turn Animated emoji off and long-press goes back to skin tones and favourites only.

Sending one counts as using that emoji, so it lands in your recents like an ordinary tap would.

WM KeyboardEmojiEmoji panelSend emoji as image

Under the animation (and on every emoji, animated or not) is Send image as sticker: the emoji itself, drawn at 512×512 in whichever emoji font you’ve picked, sent as a transparent WebP.

It’s the answer to the oldest emoji problem there is — the other person’s phone drawing your emoji as something else, or as an empty box. Send it as a picture and they see the one you saw.

The picture is drawn in the font the keyboard itself draws with, whichever that is: an imported font, one installed from an addon repository, Google’s Noto Color Emoji, or the phone’s own set. Noto is fetched once from the same system font provider Compose draws it with and then kept; everything else is already on the device, so this normally works offline and sends nothing anywhere.

How it goes out follows the sticker tool’s own setting, so one preference governs every sticker the keyboard sends:

WM KeyboardToolsStickersSend stickers as

Left at Sticker (the default) WhatsApp receives it as a real sticker. Set it to Image and it arrives as an ordinary picture in the message box instead, which is the thing to try if an app does something unhelpful with a sticker — sending it instantly, say, or closing the keyboard afterward.

Like the animated button, this one only shows on a field that accepts images, and it can be switched off on its own.

  • Inserting doesn’t close the panel by default. WM KeyboardEmojiEmoji panelReturn to keyboard after inserting is off, so you can tap several emoji in a row (including several results from the same search) without the panel folding away after each one. Turn it on to jump straight back to the keys after a single insert. The same setting also governs the clipboard panel.
  • Full-screen panel is the default, not an opt-in. WM KeyboardEmojiAccessFull-screen emoji panel is on out of the box: the toolbar, emoji row, and symbol row all step aside, and the category tabs move into the row they leave behind next to a back button. Turn it off to keep the toolbar within reach while picking emoji.
  • Search and the panel grid both respect “Hide emoji this phone can’t display.” An emoji neither your chosen font nor the phone’s system font can draw is filtered out everywhere: panel, search, and suggestions alike. See Fixing emoji that won’t display.
  • Kaomoji and emoticons are a separate, unsearched system. If you’ve turned on their two extra tabs, they sit after the last Unicode category, but the panel’s search field never indexes them, since it only searches the Unicode emoji catalog. See Kaomoji & text art.
  • The panel has its own compact bottom row (a key back to letters, a spacebar, and a hold-to-repeat backspace) so you can type a word, drop in an emoji, and keep typing without leaving the panel.
  • Both editions. Search, skin tones, and favourites aren’t gated to one edition: the same emoji panel ships in both.

The bundled catalog covers 1,914 base emoji across ten categories (activities, animals, flags, food, nature, objects, people, smileys, symbols, travel). Of those, 330 carry Fitzpatrick skin-tone variants (five uniform tones each), and 19 of that 330 also support independently-toned pairs like 🤝; together that’s 2,030 additional toned sequences on top of the base count.

For the settings that shape all of this (which font draws the emoji, keyword packs for other languages, word-typing predictions, and the emoji row), see Emoji customization.