Kaomoji

ASCII Emoticons

ASCII emoticons are read with your head tilted left, and every one of them fits inside plain ASCII. Copy any face below; the note under each says which character is doing what.

Tap any tile to copy it. Nothing is sent anywhere — the copy happens in your browser.

These are the sideways ones

ASCII emoticons are read with your head tilted to the left. The colon is a pair of eyes, an optional hyphen is the nose, and a bracket, letter or digit is the mouth: :-), :-(, :-D. Every one of them fits inside the 95 printable characters of ASCII, which is what makes them so hard to break: those 95 are the characters every ASCII-compatible encoding agrees on, and a seven-bit mail path or a terminal with no font of its own can carry all of them.

Scott Fahlman posted :-) and :-( to a Carnegie Mellon computer science bulletin board on 19 September 1982, proposing the first to mark posts that were jokes and the second for posts that were not.

They are not kaomoji, and the difference is structural

Kaomoji such as (´・ω・`) are upright. You do not tilt anything. That one difference changes which part of the face carries the meaning. In the sideways set the mouth does almost all the work — :-) and :-( differ only in the bracket, and the eyes are a fixed colon. In the upright set the eyes do the work: ^_^, T_T, >_< and -_- all share the same underscore mouth and mean four different things.

Some faces belong to both traditions. ^_^, -_-, T_T, ;_;, >_< and o_O are built entirely from ASCII but arranged upright: ASCII by character set and Japanese by construction.

Two faces that are not ASCII

The shrug, ¯\_(ツ)_/¯, is not ASCII: the arms are U+00AF MACRON and the face is U+30C4 KATAKANA LETTER TU. The Lenny face is further out again — eleven code points, three of them invisible combining marks that sit on top of neighbouring characters. Both are ordinary text wherever the font in use carries their characters. Neither gets through a field that genuinely accepts nothing outside ASCII: whether such a field rejects the whole input or strips the characters it will not take, the face does not arrive.

What breaks them

  • Markdown. A > at the start of a line becomes a block quote, so >:( typed alone on a line loses its eyebrows. A backslash escapes the punctuation character after it and is then not printed, which is what takes the mouth off :-\ when the next thing typed is punctuation. A pair of underscores or asterisks can turn the text between them italic.
  • Autocorrect and emoji substitution. A client that substitutes graphical smileys converts :-) into an icon as you type. The swap is keyed to the exact sequence, so wrapping the face in backticks, or putting another character beside it, leaves it as text.
  • Proportional fonts. The upright ASCII faces such as ^_^ are drawn assuming every character is the same width. In a proportional font the underscores join up unevenly and the eyes sit off centre.

If you want the upright tradition instead, start at the kaomoji hub. Longer multi-line pieces are collected under text art, and the copy-and-paste notes cover where a pasted face arrives changed. If you would rather see both traditions in one list, text faces sets them side by side.