GuidesBusiness and monitoringMattermost vs Matrix

Mattermost or Matrix? Self-hosted team chat compared

Mattermost Team Edition and a Matrix server with Synapse and Element side by side on one Debian 13 server, with the same small team, channels, threads and files in both, and the memory, encryption, calls, federation and licences of each.

Tested on Mattermost 11.11.1 and Synapse 1.162.0 with Element Web on Debian 13 (trixie) on a Melonslab server Updated October 14, 2026

Recommended server for this guide

SSD RAID 1 · ECC DDR4 · 10 Gbit

VC-P Alloy · 2 vCPU · 8 GB Memory · 60 GB Storage

Month to month, no lock-in 7-day money-back guarantee

€8.99/mo

Deploy now
On this page

The short answer

Pick Mattermost if the chat is for your own company: it feels like Slack, search finds every message, an admin manages everything from one console, and the server can show it in Swedish for everyone. Pick Matrix if you want private chats encrypted end to end, group video calls without a licence, or to talk to people in other organisations from their own servers, and are prepared to teach your users about recovery keys.

What we tested

We installed both on the same fresh Melonslab VC-P Alloy (2 vCPU, 8 GB) with Debian 13, one after the other, by following our guides Mattermost with rootless Podman and a Matrix server with rootless Podman step by step, and then the Matrix calls guide for LiveKit. Each ran under a user of its own, behind the same Caddy. For Matrix we used Element Web at app.element.io, as the Matrix guide suggests.

Then we set up the same small team in both, with two users, Anna and Bo:

  • a public channel, Projekt, with a message from Anna and a thread under it, where Bo replied and attached a 300 KB file;
  • a private channel, Ledning, with a message only the two of them could read;
  • a direct message from Anna to Bo;
  • a search for words from those messages, as Bo;
  • a call between the two.

We measured the memory after a reboot and while both users had the apps open, ran each guide's backup, restored it into an empty database, and checked that everything was still there.

The numbers

Mattermost 11.11.1Matrix: Synapse 1.162.0
Containers2: Mattermost, PostgreSQL 172: Synapse, PostgreSQL 18; calls add LiveKit and an authorization service
Memory, idle after a reboot145 to 195 MB (Mattermost 130 to 160, PostgreSQL 15 to 35)about 155 MB (Synapse 137, PostgreSQL 17); calls add 20 MB
Memory, both users activeabout 175 MBabout 172 MB
Images on disk982 MB658 MB, and 122 MB for calls
Data after the test68 MB database, 1 MB files, and 240 MB of plugins unpacked at each start72 MB database, 0.5 MB files and settings
Setup time, image download includedabout 2 minutesabout 1.5 minutes, and 1 minute for calls
Steps in our guides1110, and 9 for calls
End-to-end encryptionnoneon by default in private rooms and direct messages
Database dump in the backup216 KB442 KB

Memory is the sum of each app's containers, measured with podman stats. Mattermost's memory moved between measurements more than Synapse's, so the two are within the same range: neither needs more than 200 MB for a small team. Most of the data on disk is the empty databases themselves.

Day-to-day use

Both did everything in the test task. The difference is in how it feels.

Mattermost is organised like Slack: a team with channels in a sidebar, Threads to follow conversations, and a message box that knows Markdown. Bo joined through the team's invite link and saw the public channels straight away. Everything is in one place, and an admin can see and change all of it in the System Console.

Element is organised around rooms. Anna created Ledning in Element, invited @bo:example.com by his Matrix address, and Bo had to accept the invite before he saw the room. Element has threads too, and showed Bo's reply and the file under Anna's message in the same way. The first login showed several prompts in a row: back up your chats, help improve Element, and a new sections layout.

Search is where they differ most for a company. Mattermost found every message we searched for, also in the private channel and the direct message, and understands from:bo, in:projekt, phrases in quotes and budget* for words that start with "budget". Synapse found words in the public room only. It does not search encrypted rooms, as it cannot read them, and Element Web said "Use the Desktop app to search encrypted messages". Neither found "budget" in "budgeten" without help: both match whole words.

Swedish. Both are translated into Swedish. In Mattermost, each user picks Svenska under Settings > Display > Language, and the Mattermost guide shows how to make Swedish the default for everyone. In Element, each user picks Svenska under All settings > Preferences > Application language; there is no default to set for all users when you use app.element.io.

Encryption

This is the biggest difference between the two.

Matrix encrypts private rooms and direct messages end to end by default in Element. The server stores only ciphertext. We searched a dump of Synapse's database for words from the private room and the direct message, and found none of them, nor the name of the file Bo attached there. The public room, which Element does not encrypt, was readable in the database, as expected.

The price is keys. Each device has its own, and when Bo logged in on a second browser, Element asked him to confirm his identity with his first device or a recovery key before he could read old messages. Bo had not set up a recovery key, and Element said that resetting his identity instead would lose "any message history that's stored only on the server". Teach your users to save the recovery key when Element offers it, or someone will lose their history when they change phones.

Mattermost has no end-to-end encryption. Messages travel over HTTPS, and are stored readable in the database on your server: all three test messages were in our dump. For an internal chat on your own server, that may be what you want, since an admin can search, export and restore everything. Anyone with access to the server or the backups can read every message, so keep both private.

Calls

Mattermost comes with Calls, which the Mattermost guide switches off because it needs a UDP port it does not set up. To compare, we switched it on, published port 8443 over UDP and TCP from the pod and opened it in ufw. Anna and Bo then had a call in their direct message, which connected. Without a licence, calls only work in direct messages: the call button was missing in Projekt, and Calls reported group calls as not allowed. Calls also uses a STUN server at Mattermost, stun.global.calls.mattermost.com, unless you set another.

Matrix calls need the setup in the calls guide: LiveKit and Element's authorization service, under a user of their own, with two more ports. With that, Anna started an Element Call in Ledning and Bo joined with video, through LiveKit on our server. Group calls need no licence. Two things to know: an Element Web that was already open before we set up calls needed a reload, and showed MISSING_MATRIX_RTC_TRANSPORT until then; and in a room we had created through the API rather than in Element, only Anna could join the call, as such rooms do not let ordinary members into calls.

Talking to other organisations

Matrix federates. Your users have addresses like @anna:example.com, and can chat with people on any other Matrix server, much like email. Matrix's federation tester passed for our server over IPv4 and IPv6. People from a partner or customer can use their own accounts on their own server, and you need no guest accounts for them. Synapse also uses matrix.org to check other servers' keys, as its generated configuration says.

Mattermost has Shared Channels, which connect channels between Mattermost servers. It is part of Enterprise. We switched the setting on in Team Edition, and the server answered "The remote cluster service is not enabled." Without it, people outside your company need an account on your server, and guest accounts are a paid feature too.

Phones and push

Both have apps for Android and iOS. We did not test them. According to each project's documentation:

  • Mattermost's apps get notifications through a push service Mattermost runs. Without a licence, the server uses push-test.mattermost.com, which Mattermost offers free for testing without any guarantee. The Mattermost guide sets notifications to carry the sender and channel, not the message. The production service, with uptime guarantees, is for paying customers.
  • Element's apps from the app stores get notifications through a push gateway Element runs. In encrypted rooms, the message itself is encrypted; Synapse's push: include_content: false setting keeps the text of unencrypted rooms out of notifications as well.

Either way, notifications pass through a service you do not run, and on through Apple and Google. Running your own push service means building your own apps.

Accounts, permissions and integrations

Single sign-on. Mattermost Team Edition has no SSO: SAML, OpenID Connect and AD/LDAP are paid features, and Mattermost's documentation says that SSO is being removed from Team Edition. When we filled in GitLab's settings, Mattermost still did not offer a GitLab login. Synapse supports OpenID Connect in its free version, according to its documentation; we did not test it.

Permissions. Mattermost has system admins, team admins and channel admins, with more detailed roles in the paid editions. Matrix sets permissions per room, with power levels, which Element shows as roles such as admin and moderator. Synapse has no admin web interface: you create accounts from the command line, as in the Matrix guide, or with its admin API.

Integrations. Mattermost has webhooks built in: we created an incoming webhook for Projekt with the API, and a curl to it posted a message straight away. It also has slash commands, bots and plugins. Matrix has no webhooks in Synapse. A bot is an ordinary Matrix account that a script logs in as, and bridges to Slack, Teams or other networks are separate services. Bots cannot read encrypted rooms unless they support encryption, as Element warns when you create one.

Setup

Both install the same way, with a user of their own, secrets in podman secret and a pod of Quadlet units behind Caddy, and both guides worked as written.

Mattermost's admin and team are created from the command line before Caddy makes it public, and colleagues join with an invite link. Synapse's accounts are created from the command line too, but Matrix also needs two small files on https://example.com, so that addresses can be @anna:example.com while the server runs at matrix.example.com. The server name cannot be changed later.

Calls add a second guide to Matrix, with two more containers, two more ports and settings in three places. Mattermost needs one port and a setting, but its calls are limited without a licence.

Updates and backups

Mattermost's guide follows the 11.11 tag, so podman-auto-update.timer installs patch releases by itself, and you change the tag for each monthly release. Synapse's guide follows latest and updates by itself; Synapse released 1.160, 1.161 and 1.162 between 2 and 29 September 2026, every two weeks.

Both backups are a database dump and a volume export, and both took about a second. Mattermost's guide also explains how to restore, and our restore brought back every message and file. The Matrix guide has no restore section. We restored Synapse the same way, into a new database created with the C collation, and Element showed the encrypted messages again, as the keys stay on the devices. Keep Synapse's backup private: it holds the server's signing key.

Mattermost unpacks its plugins into new volumes at each start. If you switch Calls off as in its guide, Calls is no longer installed after a restart, and switching it back on needs the Marketplace or plugin uploads.

Licence and cost

We checked the projects' own pages and repositories on 14 October 2026.

  • Mattermost is made by Mattermost, Inc. in the United States. The Team Edition image, which our guide uses, is licensed under MIT, and the source code under AGPL 3.0. Mattermost says Team Edition is meant for under 250 activated users, and our Mattermost guide saw it warn from 200. SSO, guest accounts, Shared Channels, group calls, compliance export and data retention are in the paid editions, Professional and Enterprise, sold as yearly subscriptions per user. Mattermost publishes no prices. Its Enterprise image without a licence runs as Entry, which shows only the latest 10,000 messages.
  • Synapse and Element are made by Element in the United Kingdom, under AGPL 3.0, or a commercial licence from Element. Element Web may also be used under GPL 3.0. The AGPL matters if you change the code and offer it to others over a network: you then have to share your changes. Running it unchanged for your company is free. Element's paid Element Server Suite Pro, listed from 100 users, adds Synapse Pro, support with response times and long-term support releases, according to Element's pricing page, which publishes no prices.

Both can keep every message on your own server, in Sweden. With Matrix, messages to people on other servers are also stored there.

Which one to pick

Mattermost suits a company that wants an internal chat that is easy to run and to search, for up to a few hundred people: one admin console, invite links, webhooks, a Swedish default and a backup you can restore. Its weak points are the missing end-to-end encryption, no SSO, calls only one-to-one without a licence, the 250-user ceiling, and that talking to other organisations needs Enterprise. Follow the Mattermost guide; it runs comfortably on a VC-P Alloy.

Matrix suits you if privacy from the server matters, if you work with partners, customers or other organisations who can join from their own servers, or if you want group video calls without a licence. Its weak points are recovery keys that users must keep, server-side search that skips encrypted rooms, calls that need a second guide, room invites instead of a team directory, and no admin web interface. Follow the Matrix guide and the calls guide, on a VC-P Alloy.

Both together used under 400 MB, so a VC-P Alloy can also run both, as on our test server.

Run it on your own server

SSD RAID 1 · ECC DDR4 · 10 Gbit

VC-P Alloy

€8.99/mo

vCPU
2
Memory
8 GB
Storage
60 GB
Transfer
10 TB
Performance
SSD · RAID 1
  • Full root access
  • Native /64 IPv6
  • RAID-protected storage
  • Malmö, Sweden
  • Month to month, no lock-in
  • 7-day money-back guarantee
All guides