Kaomoji
123 results
Happy
Sad
Angry
Surprised
Love
Confused
Shrug and dismissive
Sleepy and tired
Animals
Actions
Text faces
A static table · nothing is uploaded
123 Japanese emoticons in eleven groups: happy, sad, angry, surprised, love, confused, shrug and dismissive, sleepy, animals, actions and text faces. Tap one to copy it. Unlike Western emoticons they are read upright, so no head-tilting is required.
How to copy a kaomoji
The difference from :-) is orientation. Western emoticons are read sideways because they were assembled from a keyboard with about ninety usable characters, so the mouth had to be a bracket turned on its side. Kaomoji are read upright, and they can be because Japanese input methods have always had a far larger character set to draw on. The eyes carry the expression instead of the mouth, which is why they read as more expressive with fewer strokes.
That larger character set is where the practical trouble starts. These 123 faces draw on 31 different Unicode blocks between them. Katakana and Japanese punctuation as you would expect, but also Bopomofo for the crying face (ㄒoㄒ), Kannada for the disapproving one (ಠ_ಠ), Canadian Aboriginal Syllabics for the kitten's ears, IPA phonetic letters for the bear (ʕ•ᴥ•ʔ), plus Thai, Georgian, Gujarati, Arabic, Cyrillic, Greek, box drawing and geometric shapes. The characters were picked for their shape and nothing else. If the font at the far end is missing any one of them, that part turns into a replacement box and the face collapses. Nothing is wrong with the text when this happens: it is font coverage, and it explains why one face survives a game chat and the next one does not.
The shrug has a trap of its own. ¯_(ツ)/¯ contains exactly one backslash, in the left arm, and anywhere backslash is an escape character (a shell, a JSON string, some chat clients that treat it as markdown escaping) it gets consumed and you are left with a one-armed shrug. Doubling it to ¯\(ツ)_/¯ fixes that in those places and breaks it everywhere else, so double it only where you have seen an arm go missing.
Eight of the faces are built with combining marks rather than ordinary letters, Lenny among them: his eyebrows are U+0361 and U+035C, characters designed to stretch across two letters at once. Fonts position those very differently, which is why Lenny looks right in one app and lopsided in the next. And the table flip mixes an ASCII opening bracket with a fullwidth closing one, so in a monospaced font the two sides genuinely are different widths. Both are how these faces are actually written, not a mistake in the table.
What people use it for
- Getting the shrug without hunting down the katakana tsu
- Finding a face for a chat that strips emoji but keeps text
- Picking one by mood rather than from memory
- Copying a table flip whole instead of reassembling it
- Dropping one into a commit message or a terminal banner
- Testing whether a font stack covers more than Latin characters
Questions
They are read upright rather than sideways, and the eyes carry the expression instead of the mouth. A Western emoticon needs your head tilted; a kaomoji does not.
It contains a backslash, and anywhere that treats backslash as an escape character consumes it. Doubling it to ¯\\_(ツ)_/¯ works in those places and only those.
Katakana tu, U+30C4. It is a Japanese syllable, borrowed here purely because it looks like a face.
They pull characters from 31 different Unicode blocks. If the font at the far end lacks one of them, that character becomes a box and the rest of the face still renders.
His eyebrows are combining marks meant to stretch over two characters. Fonts place them differently, and some do not place them at all.
No. They are ordinary text characters, so they take the surrounding font, wrap with the text and can be searched for.
More than it looks. The average face here is about fourteen bytes of UTF-8, and the longest is 48 bytes across 31 UTF-16 units.
No. Any font with broad Unicode coverage will do, and most systems fall back automatically. Terminal fonts are the usual gap.
Often not. Many services restrict names to Latin letters and digits, and some strip combining marks specifically because they can be stacked to overflow a line.
Badly. Each character is announced separately by its Unicode name, so a face becomes a stream of unrelated words. Keep them out of anything that has to be read aloud.
No. It is a static table and copying happens in your browser.