XMPP and Matrix are very similar protocols that aim to accomplish roughly the same things. I’m looking to install a server on my (quite powerful) home server in order to communicate with my tech-savy friends and my girlfriend.
I would like to use the “perfect” one between the two, but I can’t come to a decision.
Pros of Matrix
- Has more functionalities (albeit as far as I know XMPP can do pretty much the same with its extensions)
- It is JSON-based which helps reduce overhead, not by much, but it’s free lunch
- I can’t set cryptography wrong since it’s built-in
- Messages and conversations can be synchronized from other servers if mine goes down for a short while. Its state seems generally stronger than XMPP’s
Pros of XMPP
- More lightweight
- Less metadata leaks and supports aliases in public MUCs
- It’s more “open” (less centralized)
Which one would you pick? We don’t need to shield ourselves against the CIA but I’m a privacy freak so I’d like to pretend we do. Thank you.


I’ve run both XMPP and Matrix servers myself. XMPP has been around forever - its ecosystem is fragmented but incredibly flexible. You can pick a client that works for you and it just works.
Matrix has better E2E encryption out of the box which is a real plus. The federation works but feels more controlled than XMPP. With XMPP servers can talk to each other with just a few XML config files.
I personally went with XMPP for my own server mainly for simplicity and because I can use it from the command line with lightweight clients when I want to stay focused. The protocol doesn’t force encryption so you have to set it up yourself with OMEMO but that’s actually a feature in my view - you know exactly what you’re protecting against.