Welcome! This website aims to be a beginner-friendly guide to Matrix (sometimes mistakenly known as Element). Matrix is an open federated communication protocol that strives to be a viable alternative to various centralized proprietary platforms. But those are very big words, and unfortunately, they do confuse people sometimes, so this guide aims to introduce you to the chatting aspect of it in somewhat simpler terms. We’ll start by the “why” and then the “how.” This part is for people who have never used Matrix before, so if you’re looking for more advanced material, check out the sidebar.
Matrix is the long-awaited middleground between one-to-one messaging platforms (Facebook Messenger, WhatsApp, iMessages, SMS…) and social/collaborative messaging platforms (Discord, Slack, Telegram…): it offers an appropriate degree of privacy while allowing you to socialize/collaborate with others. Generally, the merits that make Matrix stand out from others can be boiled down to two categories:
And of course, Matrix has everything that a modern messaging platform offers: cross-platform, real-time, usefulness, etc. But that’s not the point. Matrix shows that it is possible to have a decent chat platform that actually respects you.
Ready to try Matrix? Here we go:
As touched upon later, Element is just one of the apps that accesses Matrix. It is therefore correct to refer to the platform as just “Matrix.” Though, nobody is stopping you from calling it The Matrix.
If you have the infrastructure and the technical skills required to host an internet-facing program, then you can try setting up your own homeserver6. The dominant homeserver implementation is Synapse. See installation instructions. It may be possible to run a homeserver for free with Oracle Cloud.
However, hosting is still undesirable for many. In that case, you can…
matrix.org, which is used by 35% of all Matrix users as estimated in 2020. Although it is okay to use it (and you can try out Matrix quickly with it), it is highly encouraged to choose a different homeserver (including running your own) for long-term usage, as it serves the spirit of decentralization promoted by the Matrix protocol, and also because
matrix.orgis occasionally overloaded (though performance has improved in recent times) and behind Cloudflare (which is a security risk).
For simplicity, the guide is prepared in such a way that recommends registration on a PC browser, even though many servers allow you to do so from native PC/mobile apps. Regardless, once registered, you can use the account everywhere!
Users are uniquely identified by their MXID. Your MXID is your username plus your server name (not necessarily domain). For example,
@austin:tchncs.de is my MXID, where
austin is my username and
tchncs.de is the name of the server I’m on. You cannot change it later, as using a new username or a different homeserver requires registering a new account (you may migrate data, however). Furthermore, if you deactivate the account, no one else can have this MXID again! You can, however, change the display name, as well as your avatar.
Remember to set up key backup!
For most apps:
When you log into a new device, you will be prompted to verify it using your existing device (by scanning a QR code or by comparing emojis). Your new device will then retrieve the room keys from your existing device, thereby enabling it to read your encrypted messages. This prevents anyone else - including your homeserver operator - to read encrypted content1.
However, a Security Key is required to access encrypted messages if:
You can set up a Security Key with the following steps:
A graphic tutorial is available here.
There exists many different apps that can access Matrix. Because Matrix is an open protocol, you can even implement Matrix in your own app, if you got the skills. But for most people, here are some recommendations:
$NAMEis either "Element" or "SchildiChat". The config file enables the "Labs" tab in settings, enables custom themes, preloads a few custom themes, uses Dimension instead of Scalar for integration manager, and preloads a few homeservers for room directory searches.
Each Matrix homeserver has a public room directory, which is accessible to the users of that homeserver or, if enabled, users of other homeservers as well.
In any case mentioned above, you can enter the room address to directly join a room, or you can enter keywords to search for rooms8. However, the directory may be unintuitive to use as it orders rooms by member count9. The author of this guide recommends joining this Space (
#offtopic-space:envs.net), which contains a list of active off-topic or no-topic discussion rooms.
Discord users may be familiar with this format, but Spaces are not exactly the same as a Discord “server.” A Space10 is a list that can include other rooms and Spaces. It can be used to organize your own rooms, or for a community to organize all its rooms. Joining a Space does not imply joining all of its rooms (however, rooms can choose to require users to join a Space first), nor does leaving a Space imply leaving all of its rooms (by default).
On Element and SchildiChat, Spaces show up on the left of your room list. Selecting one will filter your room list to DMs with members of the Space and joined rooms within the Space. To see rooms that you have not yet joined, click the Explore button (see above).
If you’re using Element or SchildiChat, then keep the Element User Guide handy for a quick reference to the interface!
Only text contents and file attachments of messages are encrypted. Currently, Matrix does not prevent metadata leakage, mainly due to its federated nature. This will change, however, when Matrix starts rolling out Pinecone, allowing p2p connections. Currently, it can be mitigated if all participants of an E2EE conversation are running their own homeserver (so to eliminate third parties). ↩ ↩2
Exception: Some bots do not support end-to-end encrypted messaging. Furthermore, when creating an empty private room, you will be prompted (but not by default) to enable encryption. ↩
Element allows you to opt into (not enabled by default as of late 2021) using an “identity server” - think of it as a big online address book. This allows users to share their email addresses and username, which can be looked up manually by other users. However, here “address book” means that Matrix will not store the one locally on your phone; homeservers can see who you are talking to, as such information are not encrypted. There is a proposal to address this. See also footnote 1. ↩
Note that public rooms may block certain servers - just like banning individual users - due to prevalence of unacceptable content (spam, hate speech, etc.). If you’re not running your own homeserver, don’t join homeservers that are known to harbour such content. This does not apply to homeservers listed on our public list as they are vetted against any presence of bad reputation. In any case, behave yourselves, remember the human. ↩
This includes all clients and servers that an average user uses. ↩
In most cases, it is equivalent to the server part of your MXID. The exceptions are where homeservers did not set up
.well-known autodiscovery properly… ↩
Title and description. ↩
Which is not a reasonable gauge of activity. First, accounts can be inactive. Second, if a room uses bridges, then these accounts are counted as well, even if their activity is mostly not from Matrix (you can still interact with them, however). ↩
Which, to be exact, is a special type of rooms. Other than that you can list rooms (and Spaces) instead of sending messages, there are no differences between a Space and a room. ↩