<!--
.. title: Username systems, ranked
.. slug: username-systems-ranked
.. date: 2026-06-17 22:42:21 UTC-07:00
.. tags: 
.. category: 
.. link: 
.. description: Various types of username systems and which ones I prefer.
.. type: text
-->

When designing a platform with user-facing/public profiles, the way you go about handling usernames is important. Here I look at various systems for that.

<!-- TEASER_END -->

# Awful: un-namespaced usernames

This is what most sites use, including Discord and Twitter. Your username has to be a unique entry in a singular giant pool of usernames. These suck because there's a limited pool of usernames and so it's likely that your idea is already taken, leaving you to either choose a username you'd less prefer, or add punctuation to vary it. Discord actually gets a dishonorable mention here, because they *used to* use discriminators and then moved to this inferior username system.

# Decent: Usernames with discriminators

Blizzard does this, and Discord originally took a page from their book. This is where you can pick whatever username you want, and the system adds numbers to the end of it to help prevent your username from being taken. For example, my Signal username is Willow.1312. This lets me have Willow even though that's a pretty common name. From what I've heard, Blizzard even adds digits if the base 10,000 are taken. And Signal puts between 2 and 9 digits after a username, which should make it extremely unlikely whatever username you want is taken. This approach is good for silos, ie platforms that have your data locked in to one server.

# Good: namespaced usernames

This is what Bluesky and the fediverse do. In Bluesky, usernames are just domain names! That means the entire breadth of the DNS can be used for a username. So mine is @willow.su, but if I didn't have my own domain, I could use someone else's or a subdomain of the standard .bsky.social domain. This is just a DNS entry that refers to my ATProto DID, and my actual profile could be hosted anywhere (although Bluesky is basically a silo at the moment). It's not exactly the same on fedi, where instead of an arbitrary domain name, the domain name identifies the server, as in @Willow@translunar.academy. Here, translunar.academy is the server that hosts my profile.

It's less common for people to share their domain names than people opening their fedi instance registration, so I still prefer how fedi does it.

Unfortunately, though, you can only use ASCII characters in these usernames. Discord's old username system didn't have this limitation. I hope someday fedi and Bluesky won't either, using IDN.
