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’d rather not choose between extra-slow (Matrix) vs extra-fragmented (XMPP) but for privacy purposes, I guess Matrix because it at least has a focus on key management.
Thank you. What would you choose?
Go with XMPP. You already know the technical reasons—lighter, less metadata, older protocol with more time-tested decentralization. But heres the thing most people skip over: XMPP is philosophically simpler. Its designed to be federated from day one, like email. Matrix is building toward that, but theres still more of a “server as platform” assumption baked in.
For a friends-and-girlfriend group chat? They both work fine. But if youre already running your own infrastructure because you care about this stuff, XMPP is cleaner. The learning curve exists, but youre clearly technical enough to handle it.
One caveat: clients matter more with XMPP. Conversations, Gajim, Psi—pick one that actually gets updates. Matrix clients tend to be more uniformly polished.
XMPP. Honestly I mostly use Delta Chat these days but XMPP is the fallback.
I don’t like some stuff about matrix, mostly the Amdocs connections, the janky phone apps (incl element), the electron pc apps (incl element), and the Amdocs connections. Yeah I said it twice lol.
DeltaChat is great
Which one would you pick?
Personally? I can use XMPP through emacs, so XMPP.
XMPP - it’s fully open, while (I think) Matrix is controlled by a single org
The protocol/spec is maintained by a non-profit, the Matrix Foundation.
Anyone is free to build and maintain servers, clients, bridges, widgets, etc.
The biggest player, Element, of course, is the people behind the original spec but there are plenty of others in the space building compatible but distinct entities.
Well, Matrix is the newer one. But projects like Snikket look like a fresh breeze in the older XMPP ecosystem as well.
I don’t think your comparison is entirely correct. You can mess up cryptography in Matrix. Or for some weird reason or bug, the first three messages in a room won’t decrypt. It’s rare but I had these things happen. I’d say it’s acceptable, but not 100% perfect either.
I don’t think messages synchronize from other servers. I could be wrong. But when my server is down, nothing synchronizes any more.
I think the reporting on Matrix’ metadata leakage is overrated. You’ll have any regular federated messenger forward metadata to connected instances. It’s probably a similar situation for XMPP?! If you’re worried about metadata, don’t federate with other instances.
And with performance… Yeah, Synapse is kind of bloated in my opinion. Same with the most popular/official(?) client. Most XMPP servers and clients use way less. You could pick a project like Continuwuity however and run a Matrix server with way less resource usage than your average Synapse server. There’s also many clients available.
Ultimately, I think they’re both valid options. You’ll get some mild annoyances either way. Matrix has some more features. But the landscape is scattered between clients as well and maybe they don’t support multiple accounts, or message threads… Maybe they support the things you need. And with XMPP and its XEPs, it’s a similar story. Though XMPP has been around for quite a while and a similar amount of stuff is supported in the established clients.





