The handle and the display name are not the same field
This one misunderstanding causes most of the frustration. Your handle is an address: it has to be unique, it has to work in a URL, and it has to be typeable by someone who heard it out loud. Platforms therefore restrict it to letters, numbers and a couple of punctuation marks, with no exceptions and usually no helpful error.
The display name is a label. Nobody has to type it, nothing links to it, so it can hold almost anything. That is where every symbol on this page belongs. If a name change has been rejected, you were probably editing the wrong field, and the fix takes ten seconds once you know which one.
What each platform actually allows
| Platform | Field | Limit | Symbols? |
|---|---|---|---|
| Username (@handle) | 30 | No | |
| Display name | 30 | Yes | |
| TikTok | Username (@handle) | 2 to 24 | No |
| TikTok | Nickname | 30 | Yes |
| Discord | Username | 2 to 32 | No |
| Discord | Display name | 32 | Yes |
| Discord | Server nickname | 32 | Yes |
| Roblox | Username | 3 to 20 | No |
| Roblox | Display name | 3 to 20 | No |
| Steam | Profile name | 32 / 128 B | Yes |
Checked September 2026. Roblox is the outlier: it restricts the display name as well as the username, to letters, numbers and spaces, so the decorated templates above will not save there even though they work on every other platform in the table.
Steam counts bytes, and that is the trap
Steam allows 32 characters and 128 bytes, and it enforces both. A plain Latin letter costs one byte. Most decorative symbols cost three, and an emoji often costs four, so a heavily decorated name can be well inside 32 visible characters and still be refused. This is why a Steam name change fails with no obvious reason while the same string saves fine on Discord.
The practical rule: budget about 40 decorative characters worth of room, not 32, and if a name is being rejected, remove symbols before you remove letters. The checker at the top of the page reports the byte cost so you can see which side of the limit you are on.
Why a symbol gets stripped with no error at all
There are three different failures that look identical from the outside, and telling them apart saves a lot of guessing.
- Rejected at save. The field refuses the change and usually blames the whole name. This is a validation rule, and no amount of retrying helps.
- Saved but stripped. The name saves and the symbol quietly vanishes. The platform allowed the field but filtered the character, which is common with invisible and zero width characters.
- Saved and rendered as a box. Nothing was rejected at all. The symbol is correct and the viewer’s device has no font containing it, so it draws a placeholder rectangle. Other people may see it perfectly.
The third one is worth checking before you change anything, because it is not your problem to fix and it usually resolves itself with a system update on the other end. Our guide to characters showing as empty boxes covers the causes in detail.
Mixing scripts can trip automated moderation
A name built from four writing systems is a classic impersonation pattern, because swapping a Latin letter for a visually identical Cyrillic one is how people spoof a known account. Moderation systems look for exactly that shape, so a name that mixes Georgian, Buginese and Old Italic characters is occasionally flagged for reasons that have nothing to do with what it says.
It is not common and it is not a reason to avoid decoration. It is a reason to keep the letters of your actual name in one script and let the symbols be symbols. If a name is refused for no stated reason and every character on it checks out individually, this is usually why.
The invisible name trick, and what it costs
A blank name is done with a character that renders as nothing but still counts as text, usually the Hangul filler. It works on some platforms right now. It is also exactly the kind of thing a platform closes the moment it tidies up name validation, and when that happens the name reverts or the account gets flagged, so anyone relying on it should expect to redo it.
Worth knowing for a different reason too. If someone else’s name looks blank on your screen, that is what you are looking at, not a bug in your app.
How to pick one that still looks good in a year
One symbol, or a matched pair either side of the name. That is the whole rule, and it is the difference between a name that reads as styled and one that reads as cluttered. Three different marks fighting each other is the most common mistake, and it gets worse at the small sizes a name is usually displayed at.
Keep the letters plain if people need to find you. A name rendered in a decorative Unicode font is unsearchable and unreadable to a screen reader, which announces it character by character as mathematical symbols. If you want that look anyway, the fancy text generator converts a whole name at once, and the trade-off is worth making knowingly.
