Picking and setting up modern XMPP clients

· in instant messaging

This guide names an XMPP client worth installing on each platform, based on release dates checked on 5 November 2026. It then walks through creating an account and turning on OMEMO end-to-end encryption, so you can message your contacts from a phone and a computer at the same time.

What makes an XMPP client worth using

XMPP is an open standard, so anyone can write a client, and many have. Lists of XMPP software include dozens of apps, and many of them have stopped. ChatSecure, once a common iPhone recommendation, last updated its App Store version in August 2021. An old client still connects, but it misses the extensions that make chat on a phone work: history sync, push notifications, file sharing and end-to-end encryption.

Three checks narrow the field:

  • Recent releases. A client with a release in the last few months is maintained. The table below gives the latest version of each one.
  • OMEMO support. OMEMO is the end-to-end encryption that most current XMPP clients use. Two people can only use it if both apps support it.
  • Support for the server's features. Message history, push and uploads need the server to support them as well. If you run your own server, the Prosody setup guide turns these on.

All the clients on this page passed the first two checks. The words "XEP", "MAM" and "carbons" come up below; the XMPP glossary explains them.

XMPP clients compared

Versions and dates come from each project's release page, F-Droid or the App Store on 5 November 2026. OMEMO support is as listed by each project and on the OMEMO client overview.

ClientPlatformLatest releaseOMEMOAudio and video callsLicence
ConversationsAndroid2.21.0, October 2026YesYesGPLv3
monocles chatAndroid2.3.1, November 2026 (2.2.2 on F-Droid)YesYesGPLv3
CheogramAndroid2.19.0-6 on F-Droid, July 2026Yes (based on Conversations)Yes, plus phone calls through a gatewayGPLv3
MonaliPhone, iPad, Mac6.4.24, October 2026YesYesBSD
Siskin IMiPhone, iPad7.4.1, June 2026YesYesGPLv3
GajimWindows, macOS, Linux2.7.0, 3 November 2026Yes, built inNo (hidden since 2.0)GPLv3
DinoLinux0.5.1, November 2025YesYes, including group callsGPLv3
MovimWeb browser (installable web app)0.35.5, 4 November 2026YesYes, including group callsAGPLv3
ProfanityTerminal (Linux, BSD, macOS, Windows)0.19.0, October 2026YesNoGPLv3

If you only want one answer per platform: Conversations on Android, Monal on iPhone and Mac, Gajim on Windows, and Dino or Gajim on Linux.

Android: Conversations, monocles chat and Cheogram

Conversations

Conversations is the reference XMPP client on Android, and the other two Android apps here are built on its code. It supports OMEMO and OpenPGP encryption, encrypted audio and video calls, file and voice messages, group chats, multiple accounts and message sync with Gajim and Dino. It can also act as a UnifiedPush distributor, which passes push notifications to other apps that support it.

Conversations is on F-Droid for free and on Google Play as a paid app. The two builds differ in how they receive messages. Both keep a permanent connection to your server through an Android foreground service, which is why Conversations shows a persistent notification. The Google Play build also has a fallback through Google's Firebase Cloud Messaging (FCM). The project's README says these Google messages are only wake-up signals and never contain message content. The F-Droid build has no Google fallback, but it adds address book integration and public channel search.

For the Google Play build's push fallback to work, your server needs XEP-0357 (push notifications) and XEP-0198 (stream management). In Prosody these are the modules mod_cloud_notify and mod_smacks. In ejabberd they are mod_push and mod_stream_mgmt.

monocles chat

monocles chat is based on Conversations and adds features from blabber.im and Cheogram. It enforces encrypted connections to the server and drops older cipher suites. Besides OMEMO and OpenPGP it also supports OTR. It has audio and video calls, voice messages, location sharing and daily local database backups. Choose it if you want more options in the interface than Conversations offers.

Cheogram

Cheogram is also based on Conversations. Its focus is reaching people on other networks through gateways, especially phone numbers for SMS and calls. With a phone-network gateway such as JMP.chat, it integrates with Android's own Phone app. It also has a command interface for gateways and bots, contact tagging and messages that mix text and media. If you only chat with other XMPP users, Conversations is the simpler choice.

iPhone and iPad: Monal and Siskin IM

Monal

Monal runs on iPhone, iPad and Mac. Its feature list includes OMEMO, push notifications (XEP-0357), audio and video calls (since version 6.0), message archive sync (MAM), carbons and HTTP file upload. The project supports the two latest major releases of iOS and macOS, so an older iPhone that no longer gets iOS updates may not get new Monal versions either.

On an iPhone, push notifications are how Monal learns about new messages while it is in the background, so your server needs push support (XEP-0357). If notifications arrive late or not at all, check the server with the compliance tester described below before you blame the app.

Siskin IM

Siskin IM is made by Tigase for iPhone and iPad. It supports OMEMO, audio and video calls and message sync between devices. Its last App Store update, 7.4.1, was in June 2026, while Monal has had several releases since then. Siskin is a reasonable second choice if Monal does not suit you.

Desktop and web: Gajim, Dino, Movim and Profanity

Gajim

Gajim runs on Windows, macOS and Linux and releases often: 2.7.0 came out on 3 November 2026. OMEMO is built in, and it has group chats, file sharing, voice messages, replies and reactions. It does not do calls. The changelog for Gajim 2.0.0 (February 2025) says unmaintained features were hidden, including the audio and video settings. Use a phone client or Dino for calls.

Dino

Dino is a Linux desktop client built with GTK4 and libadwaita. It supports OMEMO and OpenPGP, and since version 0.3 it has encrypted audio and video calls, including group calls. Its last release was 0.5.1 in November 2025, and its code repository was still being updated at the end of October 2026. Many Linux distributions package it.

Movim

Movim is a web client that you can install as a progressive web app on phones and computers. You either join a public Movim instance (listed at join.movim.eu) or run your own next to your XMPP server; Movim works with both Prosody and ejabberd. It has OMEMO chats, one-to-one and group video calls, and social features such as blogs and communities. It is useful when you can't install software, for example on a work computer.

Profanity

Profanity is a terminal client written in C. It supports OMEMO, OpenPGP, OX and OTR, plus carbons, MAM and HTTP upload. It runs on Linux, the BSDs, macOS, Windows and on Android under Termux. It suits a server you reach over SSH, or anyone who lives in a terminal.

Creating an account

XMPP works like email. There is no single company to sign up with. You pick a provider, or run your own server, and your address takes the form name@example.org. People on any other XMPP server can message you.

  1. Pick a server. If you run your own, create the account on the server with Prosody's prosodyctl adduser command, as described in the server guide. Otherwise pick a public provider, and check it with the Conversations compliance tester, which shows which modern extensions a server supports.
  2. Register from the app. Many public servers allow sign-up from inside the client. In Conversations, choose "register new account on server" in the account dialog. Your own server needs registration turned on for this to work, and on a home server it is safer to leave it off and create accounts yourself.
  3. Add the same account to every device. Log in with the same address and password in each client. Carbons and MAM keep your devices in step, so a message you send from your phone also shows on your computer.
  4. Add contacts. Add a contact by their full address. Both sides accept a presence subscription, which lets each of you see when the other is online and lets OMEMO find each other's keys.

Using your own domain for your address, even with someone else's server behind it, lets you move to another provider later without changing the address you gave people. Conversations' README makes this point about domain hosting.

Setting up OMEMO encryption

OMEMO (XEP-0384) encrypts messages on your device so that only your contact's devices can read them. It works when the contact is offline and across several devices per person. The servers only pass the encrypted messages on.

Each device has its own key. When you send an encrypted message, your client encrypts it so that each of your contact's devices and each of your own other devices can decrypt it. Clients usually show encryption as a lock icon in the message box.

Trusting keys

A key is only as safe as your reason to trust it. Conversations uses Blind Trust Before Verification: it trusts new keys automatically until you verify one of your contact's keys, and after that it only trusts keys you verify. To verify, compare the key fingerprints on both devices, in person or over a channel you already trust. Most clients can show the fingerprint as a QR code to scan.

When OMEMO doesn't work

  • The lock is greyed out. Your server and your contact's server both need PEP (the personal eventing protocol), which clients use to publish keys. In Conversations, open the account details and choose "Server info" to check it.
  • No keys found for a new contact. The sender needs to see the contact's published keys. A mutual presence subscription fixes this, and so does a server that makes key material visible to everyone.
  • Group chats can't be encrypted. In Conversations, OMEMO in a group chat needs a private, members-only room where members can see each other's real addresses.
  • A contact can't read your messages. Their client may not support OMEMO. The OMEMO overview lists which clients do.

OMEMO hides what you write, not who you talk to. The XEP-0384 specification says it does not protect against metadata and traffic analysis. Your server still sees your contact list and when you send messages, which is one reason to run that server yourself. The comparison of XMPP with WhatsApp, Signal and Matrix covers this in more detail.

Calls between clients

Conversations, monocles chat, Cheogram, Monal, Siskin IM, Dino and Movim all list audio and video calls. Calls between them use Jingle. Two devices behind home routers or mobile networks often can't reach each other directly, so the server should offer a STUN and TURN service that helps them connect or relays the call. The audio and video calls guide covers setting up coturn with Prosody.

Frequently asked questions

What is the best XMPP client for Android?

Conversations is the reference Android client and is free on F-Droid and paid on Google Play. monocles chat and Cheogram are both based on it and add extra features, such as more encryption options or phone-number gateways.

Which XMPP client should I use on iPhone?

Monal, which supports OMEMO, push notifications and calls and also runs on the Mac. Siskin IM is the other option, but its last App Store update was in June 2026, and Monal has had several releases since.

What is the best XMPP client for Windows?

Gajim runs on Windows, macOS and Linux, has OMEMO built in and had a release on 3 November 2026. It does not support calls, so use a phone client or Dino for those.

Do all XMPP clients support OMEMO?

No. All the clients on this page support it, but many older XMPP clients do not, and both people need an OMEMO client to use it.

Can I use the same XMPP account on my phone and computer?

Yes. Log in with the same address in each client, and carbons and message archive management keep both devices showing the same conversations.

Why does Conversations show a permanent notification?

Conversations keeps a permanent connection to your server through an Android foreground service, and that service is what shows the notification. Both the F-Droid and the Google Play builds work this way.

Sources

  1. Conversations source code and README (features, Play and F-Droid differences, push, OMEMO FAQ)
  2. Conversations on F-Droid
  3. monocles chat on F-Droid and monocles chat releases
  4. Cheogram on F-Droid and cheogram.com
  5. Monal install page and implemented XEPs and Monal on GitHub
  6. Siskin IM and Siskin IM on the App Store
  7. Gajim and Gajim ChangeLog
  8. Dino and Dino releases
  9. Movim and Movim releases
  10. Profanity
  11. XEP-0384: OMEMO Encryption
  12. Are we OMEMO yet? Client overview
  13. Blind Trust Before Verification
  14. Conversations compliance tester