Profile Avatars - An Exploration

Screen Shot 2020-08-27 at 4.56.01 PM

Identities (personal and community) inside of Status are a nuanced thing with many considerations including technical feasibility, best practice UX, and high privacy standards of Status. I say identities and not simply profile images or usernames as they are elements of a larger complex concept.

With that, we have received common feedback around current identities in Status when it comes to setting up a profile and identifying contacts:

  • Three word names are confusing to many and make it hard to identify people, especially when your contact list grows (local contact names should help rectify this)
  • Three word names are more or less useless if you do not read and understand the english language and alphabet
  • Ability to add a profile image is standard for messaging apps and a highly requested feature - this also ads a layer of identification to a profile.

The team (lead by @maciej, @samuel, and @hester) have come up with an initial concept for one element of our identity issue - Profile Visualization. We are looking for active participation and feedback on this for concept validation.

Please note, this is simply an early exploration given the considerations mentioned above (technical feasibility, best practice UX, privacy standards). Yes - of course we all love images and cool avatars, but that does not mean this is necessarily the right solution for Status. This also does not mean it will provide the highest ROI (financial and time) in striving for user growth and retention

Profile Avatars - Are an idea to allow anyone within Status to design their own profile avatar from a variety of pre-made parts that ship with the app.

The full concept is outlined with challenges in this doc. Please have a read through this deck for details, challenges, and example concept imagery.

Kudos @maciej for the clean presentation of the idea

Considerations & Open Questions

  • Are avatars an appealing solution to add a layer of identity to your profile (given the technical limitations of adding any image)
  • Does a profile avatar increase your likelihood of using Status? More so than simply having local contact names for your contacts.
  • Are profile avatars critical for your identity in Status?
  • If you are managing a community, do profile avatars provide a solution/identity for your community?
  • With many variations of avatars, would they provide desired privacy in Status?

Please let us know what you think in in this thread. We will take all feedback and ideas in crafting the best solution.


I love that Status is pursuing a global solution to romanized three word usernames. Avatar customization is a perfect complement to pseudonymity. This also strikes me as an ideal SNT use case. After avatar construction (or during that process), users could select premium additions for it (glasses, unique hairstyles, piercings, etc.) in return for SNT. Avastars is a good source of inspiration for this.

Most of all, I’d like to see unique customizations for avatars (such as backgrounds or SNT face tattoos) that can only be obtained by contributors such as people who provide answers in the #support channel, core contributors, ambassadors, users with accepted pull requests, and so on. This encourages the community to help one another, offers an easy visible trust metric, and is simply fun.

I’ll use Status regardless (I’m in for the long haul here), but I’ll enjoy it much more with a customizable avatar (of any kind) as an option. I’m curious how you’ll address namespace requirements (assuming that this actually replaces three word usernames)… not to mention how a user could indicate another user manually without words, as you’d need to link additional context to the other avatar.


This is definitely the smartest and most creative solution I’ve ever seen! Thanks everyone involved in this idea.

This idea made me very excited. What I think about this is that this concept of avatars fits perfectly into the philosophy of Status: it is something unique (like the three names), it is personal (like its name) and pseudo anonymous (it does not have an attachable identity). If there are a good number of sets for personalization, then you will hardly have the same or similar avatars in the contact list.

This “3D” design of the avatars is very cute! It made something very different for Status.


What I liked most is that it is not only about “people”, but also animals and creatures. Which gives greater creative freedom and we can avoid creating an avatar that looks like us (and thus bring some real identity to the avatar).


For me, these avatars are a better solution than contact names. In my opinion, I think the team will invest better in time and resources in this avatar role than working on profile pictures and contact names.

But I have a particular view of the matter. Status differentiates itself from the competition and invests in true privacy and security solutions for the user. Therefore, it is an excellent exchange (of privacy and experience) of images or real names.

As I said in the previous comment: avatars are a great bet to differentiate yourself from the competition and bring the user a true pseudo anonymous experience.


This IDEA is really amazing and if we use what @Alice said like humans, animals creatures, etc. that’s great and I support it.

I suggest if we can add an option to any users, the users must decide if she/he want to make it private or not, as we support decentralized and pseudo anonymous.


I think Avatars is super fun and the compression method is fantastic lateral thinking :slight_smile:
I also like the idea of considering a users ‘identity’ as a package.

In terms of compression and self expression this idea is fairly balanced, where it might be unbalanced is when we think about development times and also longer term goals. So there’s some additional considerations I’d like to propose which I’ll get to in a moment, but first I wanted to address the 3 points of feedback.

Renaming Contacts with Display Names

An often requested feature is allowing users to rename their contacts, wouldn’t that address this issue? That way the “three word names” are placeholders for a users Display Name for the contact. It seems to be this would be the fastest to develop, most expressive and direct way to address this feedback.

Having that said I agree that having profile images allows for better user heuristics in identifying other users, meaning less initial work and maintenance of the users contacts.

Wordlist Translations

To me, these are just wordlists, we could provide translations, recall that the seed phrase (bip32) has wordlists for other languages, yet iirc we have not implemented them except for English. Doesn’t that mean we’re making things harder in a worse way by making it harder for people who speak other languages to access their funds? iirc this wasn’t an issue in the Chinese community for Bitcoin and is commonly accepted.

Granted this has to be done on the client side and not transmitted over the wire, as that would lead to leaks of language preference/nationality - a violation of privacy.

The other issue with this is that if the person is addressed by there three word name in chat there will bound to be confusion, but perhaps that is negligible as if people are speaking entirely different languages, they probably can’t communicate well.

Three Word Names are awkward by design

I think it’s important to keep in mind the three word names are placeholders in a Display Name, they are awkward by design, as it incentivizes username registration, thereby locking up SNT.

Perhaps more nuanced, another question is, what if I don’t want an avatar or profile image? Since the avatar comes from the sender and not the recipient, there is a case where the situation is as it is today still stands, which wouldn’t resolve the users ability to identify people.

I point this out because the arguments of three word names being confusing as a justification for the feature don’t hold, by design users are supposed to be pseudonymous by default - the action of registering a username is exercising the right to reveal oneself.

Having that said, the ability to reveal one’s identity by way of profile image or avatar is certainly desirable.

Meeting Network Capacity demands of Messaging Networks

To me this is the meat and potatoes of the issue and where we need more consideration.

Would we be doing Avatars if network capacity wasn’t an issue?

I think before we address these problems in the user interface, it’s important to backup and understand our requirements better and where we have to go in the medium term. Take a look at the network capacity constraint, asking ourselves what are our goals for the messaging network?

Our holy grail is to be able to support a user-base comparable to Signal, Telegram, Facebook Messenger & WeChat, and from our competitor research here and here. (These are internal documents, I’ll copypasta the relevant info below)

We know that to compete with big tech, we need our p2p network to support 50-200 messages per MAU per day, iirc Status messages are padded to 1kb, so in the Avatars comparison, a profile image is worth ~9 messages, or 5% of a users daily messaging capacity. If a user changes their profile image once a week, about 0.6% of their weekly messages.

On Whatsapp 100 million videos are being shared daily, and their messaging system is handling more than 10 billion messages each day. On WeChat they are sharing 38 billion messages per day, 410 million voice messages are sent each day, and 205 million videos daily.

Our network has to meet these network capacity demands. Recall we already allow sending images in Status, arguably the rate of profile image changes would be substantially less than images shared in chats.

The optimisations for profiles need to be quantified against general image sharing in the network, it would appear to me that profile optimisations may be negligible in comparison with image sending, and that they are possibly not worth solving at the app level.

App developer bandwidth & SNT Utility

The argument then becomes, is this the best use of time for the app developers?

Keep in mind we’re waiting 6+ months for certain features to be developed that are comparable in complexity. It’s likely we wouldn’t see Avatars implemented until mid next year. In that time, how much do we plan to grow? The userbase at that time already be sending images and utilising the network.

As we grow over the coming years, we will have to meet this demand on the network. Fundamentally the problem the Avatars idea is trying to address lies within Vac.

Currently the messaging network is altruistic, but the network capacity issue will be solved by introducing economics for decentralised packet routing, which is the core of SNT utility.

Supporting Images in Profiles

This creates an argument that perhaps supporting images in profile would be:

  • faster and easier to develop for app developers (as they’re already bogged down)
  • delegates the problem to where it needs to be solved (Vac)
  • more consistent with user ux expectations
  • more expressive (i can use any image, rather than just presets)
  • creating a reasonable demand on the network, thereby increasing SNT utility and value

This would also act as a forcing function for Vac to innovate and deploy solutions to solve network capacity problems sooner rather than later.

In this view, the more network capacity utilization the better (within reason) for the overall value and growth of the network. The more people are sending images, the more the network is utilised, the more SNT is held and exchanged, the more people are incentivised to run their own nodes.

Question of optimal profile image broadcast protocol

Of course there would still be the need to be efficient in how profile image updates are broadcast, which would require exploration. Initial thoughts - each user can have a topic (which would be good for a user’s Timeline feature, a Twitter alternative, which is essentially just a different visual representation of a read-only chat) in which other contacts subscribe to, or changes published in chats when the user next interacts with them, which would account for public chats and might possibly be faster.


Great write up @jarradhope. Very valid points which id like to expand on a bit.

Local Contact Names
If we think of profiles as a package, then local names should in fact solve many of the usability problems we face. And the UX is actually quite similar to SMS / text message in that before assigning a local contact name, the person you are communicating with is simply a phone number (so replace digits with words, and we face the same scenario).

Afaik, local contact names is in the works and a fairly straightforward task (i could be wrong so don’t quote me). This solves our primary problem with a form factor solution.

This then leads us to user names

Three Word Names are awkward by design
This is a feature by design and it makes sense to preserve pseudonymity, but it has all changed with ENS names becoming completely unrealistic at current gas prices. Designing an awkward experience is fine to incentivize someone to spend $1 max on a first class ENS name. It is simply unfair to expect someone to spend $15+ in gas for a 10 SNT name.

This then renders a profile image a more likely, and fair way for the user to customize their profile.

I cant speak to the language barrier as I am native english speaker, but my assumption is that the use case of a public chat with potentially hundreds of different three word names could be very challenging for someone who does not read/write english. But I could be wrong.

With all this, I agree, that it is not a valid argument for profile avatars as we run into the same issue.

My Personal Issue with Avatars
They are cool and they look nice, but what if I dont want one. While there might be unlimited number of combinations which allow me to create a unique profile, what if I simply dont want it. It feels somewhat against our principles to force/pigeonhole the community into a specific style of avatar (i.e. 3D renders). If these are an option (like they are on iOS), then that is a very elegant feature to introduce customization and unique look/feel to Status. But without the ability/option for another profile visualization, I dont see how we can force people to do it.

In conclusion
Local contact names seems (at least to my naive understanding of the technical effort) like the pass of least resistance while we sort out a more sustainable, long term solution. A solution of profile images in common with all other messenger apps and social platforms.

This feels spot on to me. Profile Avatars is as though we are defining and potentially boxing ourselves into a short term solution (and spending valuable time and effort building) to a much longer term issue. An issue we will need to solve if we are to compete with any other messaging app.

Lastly, Ill say I think profile avatars can look amazing and create a truly unique visual identity for a Status profile. But, in my opinion, it should to be a secondary option to me having the choice of choosing whatever image I want.


In general I agree with everything said about those, they shouldn’t be the default, that should be a regular image of your choosing. Having said that I believe we could make those work if we choose to own them, the same way we made a design decision around the usernames with all of their imperfections. I enjoy opinionated products and opinionated design and see nothing wrong with that. They require a considerable effort thought and I prefer to think of them as something we might want to introduce down the road with an SNT personalisation market for creators.

Random username localisation
I’d need more data to back this up, so this is anecdotal, with their design and adding the language barrier, I wouldn’t be surprised if people totally ignored those usernames as background noise and developed a certain kind of banner blindness to them. I know I do, and heard similar from friends I onboarded that they learned to filter out messages from ‘grey’ usernames. I agree tho, localising those will create new problems of their own.

More broadly on display names, I thought we’d address those in a separate post that @samuel is working on, this was mostly meant about the visual representation of an identity only, right?
To me, allowing to change your profile picture for free at will and then asking a considerable fee to personalise the display name doesn’t add up. afaik this was the reason why we removed profile pics in the first place when shipping v1. We felt strongly enough about this during the profile pics kick-off call, that’s why we’re discussing display names as part of the workgroup.

Personally I’d prefer if we chose to use public keys as unique identifiers of users in chat and allow to customise the random display name to anything of your liking. Yes this would diminish / cannibalise the use case of ENS names, which would be the more ‘premium?’ one to get with all of the strings attached that it reveals one of your accounts.


I was talking to @iler regarding local contact names and allowing people to attach names or aliases to the three word names and they brought up an excellent point. A downside to local contact names that I have not seen mentioned is that it allows someone other than yourself to identify who you are. Which may go against Status’ privacy first practice. Someone who I know IRL or even fairly well online may know my true identity and attach it to my Status identity. This could then get leaked via a screenshot, showing off the Status app to someone (fairly likely outcome), a hack of my friends device, etc.

An upside about not having a local contact name system is that I choose, and I choose alone, what name is attached to my Status identity.

Is this a downside that is worth sacrificing? @jarradhope @jonathan

Thanks for the feedback and comments everyone.

I want to break the link between messages and user identity. An optional identity that allows users control over how other’s perceive them. Currently messages have a proto-identity associated with them with the inclusion of the ENS_name field in the message payload.

I detail the specifics of how the identity could be structured in my draft spec v2, along with one option for broadcasting this data.

Identity presentation should be optional, and if a user chooses to not use an identity then they can do so. The default identity will be the pseudo-anonymous identicon and three word name.

Three Word Name and Display Name

I don’t support translation of the names, it doesn’t really solve the problem of self determined identity. Also there is no feasible way of choosing a target language option for other’s to see without broadcasting it somehow.

It’s been said, but the point stands that no-one wants to pay $10 - $20 in Ether plus the value of SNT for a username. I don’t want to undermine the utility of SNT, so self determined display names will have a second class representation. ENS if you want to look like a cool kid, plain display name if you don’t, three word name if you want a throwaway or close to zero identity.

Also on the point of ENS names giving SNT utility, it doesn’t really. I’ve got a few ENS domains and I can use an ENS name without the need for SNT, many of the team do this already.

There is no technical limiter for giving users display names, in the current protocol we could simply add an additional field to the message payload protobuf display_name and attach that to every message the user sends. I’d like to improve the notion of identity, so I wouldn’t implement display names like this, but it isn’t a 2 month+ project.

I want users to have the ability to set their own display name and I don’t want them to be forced to pay a lot to do it. Three word names are fine as a default in my opinion.

I like avatars

It is a fair point that users may not want to spend the time to create an avatar, so perhaps having the option of both avatar and profile picture could work.

I find the prospect of creating a market for buying and selling avatar packs to be a compelling incentive for introducing avatars, particularly if creating SNT utility is a concern.

I would argue that this projected timeline of 6+ months is a bit of an over estimation. I wrote a prototype of this feature one Friday afternoon With defined assets we could expand and iterate on this functionality quickly. There are already open source projects for avatars that provide many assets we could use in whole or as inspiration.

Identity data broadcasting

We are on the same page with this approach, what you are describing is basically draft spec v2.

I also toyed with the idea of creating a dedicated topic for users to publish read only data to, an identity message could be posted every 24 hours to maintain the data in the network and make it easily retrievable from a history node.

The main downside of this approach is that nodes have a limit of 10,000 topics they can subscribe to. So if every user had a topic and we had 10,000 users our nodes wouldn’t be able subscribe to all of the available topics required to propagate all user’s profile data. Grated this is a scaling issue and presumably we rely on Vac to solve this for us?

Publishing data into the chat, would work, but the problem I anticipate is that you can’t rely on messages being propagated and being received by their intended recipients. So sometimes identity data would be received by everyone, sometimes no-one, sometimes a subset of everyone. This is a result of how clients request topic history, history is requested in batches and so if a user publishes identity data once per 24 hours then all users would need to have at least the last 24 hours of history on their client to have a certainty of seeing all the profile images from all the users chatting in the last 24 hours.

  • Dedicated user topics solve the availability problem, at the cost of eating into the topic limit.
  • In chat identity solves the topic limit issue, at the cost of data availability.

If we could solve the topic limit issue, I’d go down the route of dedicated user topics.