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!)

10 thoughts on “What is Emoji ID?

  1. I see what you are doing here– using (effectively) a very high base numbering system to assign short symbol strings to each user. This allows people to recognize an identity by remembering fewer symbols. However, I also see a couple of potential problems.

    First, not all systems make entering emoji easy (though this will likely improve as time goes by). For example, I’m on Linux (Xubuntu 16.04) and I have to use a character lookup app or web site for each emoji I enter. The current version of Ubuntu provides an emoji input method, but only for Unity.

    The second problem is more serious, and not as likely to improve over time. Many emoji have cultural significance, not always universally obvious. (Eggplant and peach are the classic examples). Also, some emoji are quite difficult to distinguish. For example, 😀 Grinning Face vs. 😃 Grinning Face With Big Eyes, or ☹ Frowning Face vs. 🙁 Slightly Frowning Face vs 😦 Frowning Face With Open Mouth. (These may look more or less similar, depending on which type of system you are using to view the emoji.) And what should I think, as a user, if the system randomly suggests a triplet including 🤬 or 🤢? Then you have ☝ vs. 👆.

    Even if you avoid the human-related symbols, some of the animals can be hard to remember distinctions. 🐰 or 🐇? All those monkey faces? Are the various baby chick symbols even consistent enough across different systems to be reliably recognizable?

    I think it’s a clever idea overall, but I really recommend doing some user testing (including cultural testing) to see what subset of emoji might be used in this way. Possibly you can identify a subset that can be used reliably and still contains a large enough number of symbols to avoid collision in the forseeable future. You might also consider systems like Gravatar that generate unique recognizable face-like symbols or other images from character strings such as email addresses or registered “handles.” (I appreciate that these are not as easy to enter as search terms as emoji, but again, that may not be as simple as it first seems.)

    1. Thanks Elizabeth! I appreciate you taking the time to write your comment. I’m going to number your points so I don’t miss anything:

      1. As a Ubuntu user myself, I’m delighted that 18.04 fixed emoji. Now, like every other major platform, coloured emoji render properly! https://www.omgubuntu.co.uk/2017/11/ubuntu-finally-long-last-time-support-color-emoji

      2. You’ll be pleased to know that, while we’ll suggest a random emoji triplet, users are going to be able to choose their own Emoji ID. We’ve also decoupled the choosing of one’s Emoji ID from the sign-up process so people can take more time and consideration over it.

      3. In terms of similarities and rendering on different systems, I *think* we can get around this by forcing a particular emoji set for MoodleNet (e.g. https://www.emojione.com). For example, on Mastodon there’s a default character set that’s independent of your installed system.

      4. User testing. Absolutely.

  2. I read about the initial idea of the emoji triplet over at: http://dougbelshaw.com/blog/2018/07/17/emoji-triplets

    To be honest, it looks like two good ideas from two different problem domains have been combined to solve a problem in a different domain, in a way that makes no sense (and does not actually solve the problem).

    Services like github and gitlab have a similar issue, where a user can commit with multiple email addresses. How do they solve the problem of identity? The same way it’s been solved for the past 30ish years, PGP: https://en.wikipedia.org/wiki/Pretty_Good_Privacy

    I think this attempt using 3 emjojis is misguided – and it does not seem worth including in the MVP of moodlenet. The team’s efforts would be better spent trying to figure out a friendlier way for an average computer user to use PGP.

    1. Thanks for the comment! I agree that this new idea hasn’t been fleshed out and tested – which is why it won’t be part of the MoodleNet MVP.

      A friendly way to use PGP has been attempted for *years*, and I’m not sure that our small team will make any more headway on that than much larger organisations!

Leave a Reply