What is Emoji ID?

One thing you may have seen in the prototypes and mockups for MoodleNet is something called ‘Emoji ID’. You might be wondering what that is, even if you’ve heard us refer to it in a presentation or at a workshop. In this post, it’s my aim to explain it in the simplest way possible.


The problem

MoodleNet is a decentralised social network. This means that, unlike Twitter, Facebook, Instagram, or other centralised social networks, you can join one of a number of ‘instances’. As it’s possible to join more than one instance, your username isn’t just, for example, @dajbelshaw but @dajbelshaw@mastodon.social or @dajbelshaw@scholar.social.

Think of it like email, which is also a decentralised system. You can’t just type someone’s username to send them a message, you also have to include the relevant domain name. So, for example, you can’t just enter ‘ibrahima’ but have to use ‘ibrahima@moodle.com’.

Back to social networks and let’s imagine that I’m looking for Mayel de Borniol, MoodleNet’s Technical Architect. Here’s what happens on Mastodon, which is kind of a decentralised version of Twitter:

Mastodon searching for 'Mayel'

Mayel’s got at least three accounts of which I’m aware. So which account should I use to start a conversation with him? If I get the wrong one he might not reply because it’s no longer in use, he uses it for other activities, or I’ve got the wrong Mayel.

Going further, what happens if someone deliberately sets up a parody, spoof, or catfishing account on a different instance but with the same username and profile picture? How do I know which one is the ‘real’ Mayel? Sure, I could perhaps try and memorise the longer username (e.g. @mayel@sunbeam.city) but that seems unwieldy.

Surely we can do better?


The idea

Earlier this year, on my personal blog, I proposed an idea for using ‘emoji triplets’ as identifiers in decentralised social networks. I’d already started using them to add a bit of personality to my username on both Twitter and Mastodon:

Mastodon: emoji triplets

Other people use them too:

Eylan Ezekiel Twitter profile Maddie Mastodon profile

This can aid with identifying someone, especially if they’ve got many accounts or a particularly common name. Humans are good at recognising patterns, especially with items numbering fewer than seven, so combinations of three emojis work well.

Of course, these examples simply involve people adding emoji to a text field such as their display name. There’s nothing to stop people adding the same emoji to their profile as someone else. However, what if there was a separate field for the three emoji that are unique to that user? What if, once that user chose a particular combination of emoji, no-one else could?


The implementation

Every platform, whether it’s an email service, social network, or something else, has to have a way of identifying individual users.

Simplifying things a bit, anything you do on a platform involves linking a particular user with a particular action. In the code this is usually done through numbers, so for example user ‘783’ followed user ‘392’. Meanwhile, in the user interface you see something like ‘@dajbelshaw@mastodon.social’ followed ‘@mayel@sunbeam.city’.

Mastodon profile - labelled

In other words, ‘@dajbelshaw@mastodon.social’ is a fixed alias of user ‘783’. While I can change my Avatar and Display name as often as I like, I can’t usually change my Username. If I decide that I instead want to be @doug@mastodon.social, then I have to register a new account.

So, instead of email-like usernames that are long and difficult to remember, what if there was a separate field for emoji triplets? All of a sudden this become not just a decorative feature but something like an ‘Emoji ID’. There are several advantages to this:

  • Quick and obvious way to recognise a user even if they change their display name and/or avatar
  • Provides a standard, searchable way for users to customise their profile
  • A first step towards ‘nomadic identity’ (i.e. a way to move from one instance of the network to another without losing your followers)?

Here’s how it works:

  • User goes to sign up at a MoodleNet instance which is connected to Moodle HQ’s API
  • MoodleNet instance offers up a random, unique, and currently unused emoji ID to the user as part of the sign-up process. They can accept this, or choose their own so long as it hasn’t already been taken by another user.
  • Once the user has chosen their emoji ID it is registered both at the MoodleNet instance level and by the Moodle HQ API service, which makes it unique across all instances.


Additional information

Whether it’s to follow them, find the collections they’ve curated, or get in touch, users can be found by searching either for their display name or Emoji ID.

Using Emoji IDs opens up a whole world of possibilities. For example, one of the advantages for organisations using Moodle’s Branded Moodle Mobile App (BMMA) is that, when logging in, users no longer have to remember and type in the the exact domain name of their Moodle instance. Emoji ID could provide a similar solution for MoodleNet users, who then only have to enter three emoji, not (for example) @username@moodlenet.university.edu.

We could also help indicate which instance a user is on by reserving the first emoji for that purpose. So, for example, 💥👻💪 and 💥🎄🐻 would both be users on the same instance. Perhaps, similar to Sony’s plan for PlayStation users to be able to change their usernames for a fee, you might be able to associate a new Emoji ID to your account at a future time.



Before publishing this post, I shared several drafts with the team and various networks. Here’s some questions I received. Some of these are technical.

What’s the theoretical limit of unique emoji IDs?

Unicode 11.0 has 1644 unique emoji. So according to my calculations, there are 739,198,844 permutations. However, we may not use all the emoji as some are flags, Japanese symbols, etc. Either way, it’ll be a while before we have to worry about running out of unique Emoji IDs!

Doesn’t Emoji ID (and in particular a Moodle HQ API) break federation?

It doesn’t ‘break’ federation, it’s just a layer on top. Let’s say there’s a MoodleNet instance that isn’t connected to the HQ API. If a user on that instance wants to find a user or community on a different instance, they’d need the Emoji ID and domain name, or simply the URL.

Could I ever change my Emoji ID?

Theoretically, there’s nothing stopping us adding multiple Emoji IDs to a single backend identifier. So user ‘783’ might have several different Emoji IDs associated with it. We’d only ever show one, but the others would be reserved to prevent anyone else using them.

Many thanks to Mayel de Borniol, Emma Cragg, Noel De Martin, Brent Flanders, and Oliver Quinlan for their comments on earlier drafts of this post. Anything that leaves you confused or befuddled remains my fault. (Sorry!)