Building a more Decentralized Web: Linking your Profiles Together

The Web is built by people. Authors are producing content that makes the web as it is. They write blog posts, microblog entries, share pictures and videos, etc. And people have typically profile pages to introduce themselves and showcase their work.

Consolidating online activity profiles

In the original vision of the web, the information sharing is decentralized. Anyone can generally read content on a web site without the need to have an account on that specific web site. Being decentralized, it means that people can have many facets of their life spread across different services. You can share your photos on some website, posts your video somewhere else and your blog posts on a third site.

However, even if those activities are spread, you may want to gather them under the same identity (if you want to, no one is forcing you to do so). This consolidation promotes a web that is centralized when implemented by services that are trying to be your primary identity provider. Facebook, Twitter, Google, etc. They are all trying to be the central point of convergence for your identity to lock users in. The problem is that it often comes with an invasion of your privacy as a result of this centralization.

However, if we stick to a vision of a web that is decentralized, you have standard ways to link your profiles together without the need to resort to a central authority. Web microformats define a way to link your various profiles online together. This is called, “identity consolidation” (or profile equivalency).

So, how does it work ?

The whole mechanism relies on the ability to add extra data on a link using the rel=”me” attribute. This attribute can be added to a standard HTML link. For example, Twitter supports this. On your Twitter profile, the link you have provided to Twitter links back to a page of your choice. That link includes the rel=”me” attribute. It means that the Twitter profile page and the link the page is pointing to forms the same identity.

For example, here is what is in the code of my @mickael Twitter profile page:

<a class="u-textUserColor" target="_blank" rel="me nofollow noopener" href="https://t.co/qnpvEmTm9Z" title="http://www.process-one.net/">process-one.net</a>

As you can see, there is a rel=”me” attribute on that link. It makes it possible to link the two profiles together. The t.co url redirects to https://blog.process-one.net/author/mickael_remond/, which is my profile page at ProcessOne.

However, having a single link is not enough. Anyone could open a Twitter account, link to the same page and try to impersonate me on Twitter with a fake account.

That’s why rel=”me” needs to rely on a bidirectional relationship to build the trust. On my ProcessOne blog profile, I have a link to my Twitter profile.

The links looks as follows:

<a class="twitter" rel="me" href="https://twitter.com/mickael" target="_blank">@mickael</a>

The fact that both pages link to each other with that rel=”me” attributes means that the profile on both pages are controlled by the same person.

As you are not limited to linking to a single page, it is possible to crawl the rel=”me” links and consolidate a group of profiles for the same person or identity.

That’s this simple. That’s the beauty of how the web is designed 1.

I have several more remarks to add:

  • Twitter is not doing everything right, as it is using URL shortener. I already wrote why we need to stop using URL shorteners.
  • LinkedIn is supposed to be an important profile page and does not support the rel=”me” attribute (at least I could not find it in the page This is really unfortunate given the role of those pages. Someone reading at Microsoft? :)
  • Github developer profiles properly support rel=”me” links.
  • The rel=”me” approach can link more than web pages. A link can point to a mail (mailto:) or an XMPP (xmpp:) address. Sharing that online is prone to spam, but that’s another story.

Finally, you should know that the rel=”me” attribute does not have to be visible on the page. You can put a link in the header of one profile page to other profile pages, using the link tag. For example, it would look like:

<html>
 <head>
 <link rel="me" href="https://indieauth.com/auth">
 ...
 </head>
...
</html>

Calling to action

After ditching short URLs, you can help the decentralized Web easily by paying attention to profile consolidation. You can put it in place on your own code and you can favour services that using rel=”me” properly. Check the source code of your profile page on various online services and take actions!

You are not forced to use them, and you can still group your own identities as you wish, but rel=”me” adds value to the web when used properly.

Why am I writing on decentralized web ?

The decentralized Web today is simply a way to put emphasis on the web itself. This is the web as it was designed, that is a decentralized system.

Building the decentralized web is about breaking silos. By breaking silos, I also means breaking the protocols’ barriers to use standards on what they are good at and intended for. XMPP federation is a decentralized web but it is in some way living in its own domain. I think we can go further. We took several steps further in breaking protocols’ silos as we made ejabberd able to support XMPP, SIP, and MQTT. You can expect thus to read more from me on decentralized web on my journey to breaking those silos.

Further reading

Here are some interesting pages on rel=”me”:


  1. Ironically, tracking and assessing importance of web links is what helped made Google what it is, with their Pagerank algorithm. 

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.