~/blackgnu ~/about ~/mirrors ~/rss

A friendly introduction to XMPP.

Published by Werwolf on License: CC0

Easy Introduction to XMPP


Every time I say that XMPP is the best IM solution available someone argues that it’s “too difficult” or “confusing” to use for less advanced users.

I tried to search for an introduction guide to use XMPP which I could send to people who ask me, but I only found guides about setting up XMPP’s servers or some poorly explained guides, so I’ve decided to write a guide myself so the average person can use the XMPP protocol without any complication.

But, what’s XMPP?

It’s an standard for instant messaging. Actually, propietary IM services like Whatsapp are based on the XMPP protocol. This protocol was designed to be used in a distributed way, where there are various providers and you can use the one you like the most. Pretty much like email, you’re able to chat with people who use a different provider: Joe can send emails from joe@gmail.com to ed@outlook.com even if Joe’s provider (gmail) isn’t the same one as Ed’s (outlook). XMPP works in the same way.

This distributed nature of the XMPP network has multiple advantages. For example, it doesn’t have a single point of failure, so as oppossite to what happenned with Whatsapp, if a server goes down, the most of the network would be still up and running and it would only affect to a small part of the users. It also gives us the freedom to choose the provider which we want and that we trust, we’re not forced to trust a shady company (eg Facebook) to store our conversations. You have the possibility of being your own provider!

So, how do I start using XMPP?

Well, it’s as easy as creating an account in the provider of your preference and log in.

Creating an XMPP account

Just like email, with XMPP we can choose between multiple XMPP providers to create our account. My personal recommendations would be Nixnet and Trashserver. You can find a comparison of various XMPP providers here.

Creating an account is as simple as going to the provider of your choice and completing the web form. In XMPP there is a nice feature and it’s that you can register from your client! But you’re probably more used to web forms, so use that if you want. Choose your username and a strong password. Maybe you’re required to complete a captcha. That’s it, by now your XMPP account should be ready. Easy, isn’t it?

To log in your client and to share your XMPP user so others can contact with you, it’s just like email: user@domain.com. For example, myname@example.org or yourname@xmpp.domain.com.

Login into your XMPP client

Now you need to download a XMPP client. I guess that most of you will want to use XMPP on your mobile phones, but you may also use it on desktop. So download the client depending on your OS:

Once you have your client, all you have to do is to log in with your previously created account. Remember that the format is like email’s, user@domain.org.


Encryption is essential. XMPP supports multiple encryption methods. But we’ll focus on the easiest one: OMEMO.

Enabling OMEMO is very simple but it depends on the client you’re using. A good general norm is looking for a lock icon and clicking it, it should give you the option to enable OMEMO. On some other clients it may require installing a plugin, for example in Gajim. I’ll explain how.

OMEMO in Gajim

In the main bar at the top of the window, go to Gajim > Plugins. A list of the available plugins should pop up. Look for a plugin called “OMEMO”, select it and click the download button below. It’ll ask you to restart Gajim, restart it. After that, a lock icon will appear in every chat. Click it and remember to select OMEMO. That’s it. Everything should work now.


I hope that you’ve found this guide useful. If you have any question, you can always write me an email and I’ll do my best to help you.

I’d like some suggestions in order to enhance this guide. My intention is to make it as clear as possible for new users, so any feedback is appreciated.

Note for advanced users

I tried to be as brief as possible and I haven’t explained some more advanced things that I would normally explain in other articles like the encryption methods we have on XMPP (the clients I recommended support OMEMO and it’s easy to enable it) and how to set up our client to mask our identity using the Tor network. This guide was written as an introduction for the average person. I may write a second part of this guide in order to have a more in depth look at the privacy options we have on XMPP. I might even write a guide on self-hosting your own server over Tor and i2p.

Tags: XMPP.