Aesthetic Symbols
Sixty-six decorative characters with their real codepoints and Unicode names, and what happens to each of them in the places people paste them.
Tap any tile to copy it. Nothing is sent anywhere — the copy happens in your browser.
Not one of these is a letter
Fifty-four of the sixty-six are category So, a symbol; seven are Po, punctuation; five are Sm, a maths operator. None is a letter and none is a digit. That is the first thing a form does with them. A field that requires letters and digits refuses every character on this page. A field that requires the value to start with a letter refuses any arrangement that opens with one. A field that permits punctuation but not symbols may take the seven Po characters — • BULLET, ‣ TRIANGULAR BULLET, ⁃ HYPHEN BULLET, ⁌, ⁍, ⁕ FLOWER PUNCTUATION MARK and ٭ ARABIC FIVE POINTED STAR — and reject the other fifty-nine.
What normalisation really does to this set
Normalisation is the step decoration is expected to die in: a field that runs NFKC folds compatibility forms back to plain ones, which is what turns styled letters into ordinary ones. Put all sixty-six of these through NFKC and exactly one changes. ⼼ U+2F3C KANGXI RADICAL HEART becomes 心 U+5FC3, the ideograph it stands for — a different character, which a font may set in a different style from the text around it. The other sixty-five come through untouched, including ⺖ and ⺗, the two CJK radical hearts, which carry no compatibility mapping at all.
So NFKC is not the danger here. These are symbols rather than disguised letters, and there is nothing for NFKC to fold them back into. What removes them is narrower: a field that strips everything outside ASCII, a length limit counted in bytes, or a missing glyph.
The spacing is what collapses
An arrangement spaced by eye holds only in the font it was spaced in: a proportional font gives each character the width its design asks for. Width properties make it worse in the other direction: five of these are East Asian Width Ambiguous — •, ★, ☆, ♡ and ♥ — and take one cell or two depending on context. Four are Wide and always take two: ⭐ U+2B50 WHITE MEDIUM STAR and the three CJK heart radicals. A bio that renders proportionally on one screen and monospaced on another is two different pictures of the same string.
On length: in UTF-8 every character here costs three bytes except ٭, which costs two. A bio capped at 160 bytes rather than characters holds about fifty.
Four bullets in three different classes
• U+2022 BULLET is punctuation. ∙ U+2219 BULLET OPERATOR is a maths operator. ◦ U+25E6 WHITE BULLET is a symbol. ⦿ U+29BF CIRCLED BULLET is a maths operator again. Four near-identical dots, and any software that reads the category — a line breaker, a maths renderer, a validator — sorts them into different piles. For a list bullet, U+2022 is the one that is a bullet by name and by class.
The hearts hide the same trap. ♥ U+2665 BLACK HEART SUIT is a playing-card suit; ❤ U+2764 HEAVY BLACK HEART is a dingbat ornament. Separate codepoints, so a search for one does not find the other.
Before you paste it somewhere that matters
- A sort orders these by codepoint, so a name beginning with one falls outside the A–Z run rather than at the top of it.
- A search box that matches on letters will not find a name whose distinguishing part is a symbol.
- A screen reader reads the character’s name if it has one and skips it if it does not, so a heavily decorated handle can be read as a list of ornament names.
The star half of this set is listed with its own width and category notes on star symbols, the hearts continue on heart symbols, and every set on the site is indexed on the symbol reference.