For as long as I’ve been using the internet, direct messaging, video-and-voice chat, and group messaging have predominantly been the domain of closed services.
I’ve used Facebook Messenger, Skype, Discord, and probably a handful of other platforms, and every one of them has gotten worse and worse until a critical mass of my friends got annoyed enough to switch to the next.
Well, that process has been progressing with the most recently adopted option - Discord - and I’m fed up. It’s time to break the cycle. A lot of the internet is moving towards federated services, and it’s time for the messaging space to move with it!
What’s XMPP?
XMPP is a messaging protocol that’s been around for nearly 30 years.
It’s an open standard that accepts updates by committee, and it’s been used all over the internet in places you probably wouldn’t expect: Google Talk was built on it, Facebook Messenger was compatible with it from 2010 to 2014, Skype was in 2011 - and according to its Wikipedia article, AOL was compatible with it in 2008, and both Origin and PlayStation use it as their messaging protocols (though they presumably don’t allow users to connect to external servers with it).
Speaking of connecting to other servers, that’s one of the great things about XMPP: It’s federated. Your account lives on a specific server, but that account can connect to other accounts and group chats on other servers as well! No one company runs all of XMPP, and there’s no central authority controlling who can use it or what they can say or do.
Its nature as an open standard also means that there’s no one official client! There are a variety of clients (most of which are open source) for a variety of platforms, meaning that if you don’t like decisions one has made, you can switch to another!
Why Should I Care?
Alright, so this thing exists. Why should you care about it at all?
Well, to start with, everything about XMPP is open. An open standard means anyone can make a client or server without fear of legal takedowns, and that combined with open-source clients means the community decides what features are or are not added. Open federation means you can communicate with your friends on different servers without a hitch.
Closed services like Discord can start out as good as they want, but their primary motivator is making money, and that means that no matter how good their creators’ intentions, they will always inevitably get worse. This doesn’t and can’t happen with open frameworks like XMPP.
Privacy matters for messaging platforms. If you’re talking to your friends, you don’t want to have to worry about what the company that owns that platform thinks is okay to talk about—or worse, the advertizers or payment processors that keep them afloat. My conversations online should be no more the business of a random corporation than my conversations in-person.
Lastly, sovereignty matters. I’m a denizen of the internet, and have been since I was a child: My chatgroups are my home on the internet, and they should feel like home. I don’t want my conversations or friends or even just my UI messed around with by some corporation anymore than I want that corporation moving things around in my house, kicking my friends out, and threatening me with a big stick if I don’t do as they say.
On the internet, my XMPP server is my home, and I own that home. I feel safe on that home. Do you feel safe on Discord, or Messenger, or Telegram? Me neither.
What’s Bad About It?
Ok great, those are the main selling-points, what’s the catch?
Mainly, features.
XMPP has a lot of features in theory, but what matters is which features are implemented, and how widely. The answer to that depends on what server and client (mostly client) you’re using, but I’ll give an overview.
All the server software and most clients support:
- Profile pictures, notifications, emoji, etc.
- Multi-User Chats / Group chats. This, notably, does not include Discord-style servers, only group chats.
- Retrieving missed messages or message history from servers. Minor thing, but XMPP has the least-buggy implementation of this out of any platform I’ve used. Especially compared to Discord or Matrix.
- File/image sharing
- Encrypted messages
- Read receipts, replies, and mentions
- Message formatting (italics, bold, lists, etc.)
- Registering on a public server via your client
Most clients support:
- Video and Voice calling - Every client I’ve used except Gajim supports this, but Gajim is the most accessible client on Windows.
Most clients don’t yet support:
- Discord-style custom emoji - there’s an extension specification for it and some other related features, but most clients don’t support using it for custom emoji yet. Once they do, which custom emoji you can use will likely depend entirely on what emoji you have added on your client, which is nice.
- Voice messages and stickers - they’re both part of the aforementioned specification, and some clients support them, but most don’t. Gajim supports voice messages, and Movim supports voice messages and stickers.
- Discord-style guilds/servers - there’s an extension specification for it, it’s just really recent, so it’s not really implemented anywhere yet. This will probably exist in a year or so. Until then, you can still group chatrooms client-side in basically every client, there just aren’t server-defined groups of them.
Some clients will soon apparently support:
- Serverless client-to-client messaging - messaging other people peer-to-peer without a server. Apparently Gajim supports this? But I haven’t tested it yet. Either way, it’s a cool feature to look forward to.
What’s Good About It?
It Works
Current implementations are missing a few features, but XMPP has all the essential features for you to begin using it right now. Other in-the-works alternatives such as Stoat (formerly Revolt) are still missing basic features like notifications, but XMPP is fully-functional.
It’s Improving
The clients and protocol are and have been improving slowly but surely. The standards-based feature-set means that developers and users are able to talk over features before they’re implemented, instead of haphazardly adding things nobody wants, and the open protocol means that if a client makes changes you don’t like, you or someone who agrees with you can fork that client or make their own, without being in violation of terms of service like they would be for doing the same with Discord or other closed apps.
It’s Federated
Unlike both mainstream options such as Discord or Messenger and alternatives such as Signal or Stoat, XMPP’s federated nature means that you aren’t reliant on one centralized service.
If Signal’s servers are taken down and the company is attacked by national governments, you might not be able to keep using it; if Stoat runs out of funding for their servers, you might lose contact with your friends; but if your XMPP server goes down, you can move to a new one, add your contacts back, and go back to your life without much fuss.
It’s Friendly
XMPP’s protocols and interfaces are functional and relatively easy to use. They might not be quite as seamless and polished as something like Discord, but they’re a far cry from the constant security-hounding and obtuse interfaces of something like Matrix.
If I were to use one word to describe the difference in feeling between using it and XMPP, it really is “friendly”. XMPP lets me access all of my messages easily, has much better multi-account handling, and doesn’t constantly force me to use excessive security features while still leaking my data. 1 See Matrix Notes by Anarcat. 2 See also Matrix vs. XMPP by Luke Smith. Fair notice: I don’t endorse Luke Smith’s politics. His stances on technology are pretty good though.
It’s Here To Stay
XMPP has been around for nearly 30 years now, and in that time it’s survived multiple attempts to replace it with services which nobody uses anymore. AOL is dead, Skype is dead, Google Talk is dead, but XMPP lives on.
Its open nature and extensibility means that XMPP cannot ever truly be killed.
It Isn’t Just Getting Worse
The last advantage to XMPP’s nature as an open protocol primarily run on open-source software is that it isn’t vulnerable to the corrosive effects of profit incentives and monetization.
This article is being posted now because Discord is pushing age verification in order to make it seem like they’re doing something about the abuse on their platform, making it worse for the sake of appealing to payment providers and government officials. XMPP will never—can never do that. Discord adds premium-only features that should be available to all users, and then adds more that get in the way of the base usage. XMPP, again cannot and will not ever do that.
It isn’t perfect, but it’s as imperfect as it will ever be. It’s getting better, not worse.
How Do I Start?
Getting an Account
Being federated means that there isn’t one canonical place to create your XMPP account, and that means you need to choose a server.
- (Easiest for everyone) Find an open-registration server from this list, and register there.
- (If you’re a friend of mine) You can message me and ask for an account on my server, and I’ll make you one!
- (If you’re technically-inclined) You can host your own server! I recommend ejabberd.
Once you have an account, you’ll want to select a client or clients and login on them. Most clients actually support registering within the client, but there’s no convenient list of servers in them, so you still need to decide where to register first.
Choosing a Client
I’ve split these up by platform, since you’ll presumably want to use this on all of your devices.
Android
Conversations
Conversations a very good Android XMPP client, and close to the best overall native client, to boot.
The two major features it doesn’t support are message editing and workspaces (groups of chats). These aren’t usually a major problem, but it is weird that it doesn’t have them.

Monocles
Monocles is a very good fork of Conversations, with a few added features and better multi-account support.

IOS and MacOS
Monal
I don’t use IOS or MacOS, but the best client for both appears to be Monal.


Windows and Linux
Gajim
Gajim has my favorite desktop UI, and is the most stable and feature-complete, except it doesn’t currently support calling.
It’s available for both Windows and Linux.

Dino
Dino supports calling, but is slightly less stable in my experience than Gajim, and I don’t like the UI as much.
It’s available on most Linux package managers, and there are unofficial Windows builds available, but the main app doesn’t have an official Windows build yet.

Pidgin
Pidgin looks like it came out in the early 2000s and doesn’t support the most widely-used encryption method without a plugin. However, it has support for a bunch of chat protocols, including Discord, which makes it easier to switch to.
It supports voice and video chat in XMPP, but potentially only on Linux.
It’s available for both Windows and Linux.

Plus, I was able to theme mine to look like Homestuck’s Pesterchum!

It does have a new version in the works, but that’s not fully functional yet, so keep an eye out for when it releases.
Web
Movim
Movim appears to be doing something interesting and trying to be an XMPP-based social media platform, with social blogging features.
It’s web-only, but it’s clearly trying new and interesting things, and it has the most modern UI out of probably every app here, so it’s probably worth checking out.
It does support calling.


Converse.js
Converse.js is a web-based client also available for desktop on Windows, Mac, and Linux.
It appears to be mostly feature-complete and doesn’t look bad, but I’m listing it last because web-based desktop applications are resource hogs and I don’t recommend them, and also because it doesn’t support calling.
That said, if you’re having problems with other clients, Converse.js is probably a decent fallback.

Conclusion
Ok, you’ve got an account, you’ve got a client: Go out there and connect! Get your friends to join, suggest it for the next group chat you need, and enjoy being free from corporate enshitification forevermore!
I know network effects are intimidating, and not everyone wants to up and join some new thing, but XMPP is good - better yet, it’s improving, unlike other platforms - and you can just do things! There are opportunities! Even if you can’t get an old group to switch, consider it the next time you or a friend is considering making a new one! It’s brighter and freeer over here, and I can’t wait for you to join me.
- See Matrix Notes by Anarcat.↑
- See also Matrix vs. XMPP by Luke Smith. Fair notice: I don’t endorse Luke Smith’s politics. His stances on technology are pretty good though.↑