Element Call: Redefining conferencing for privacy, scale and sovereignty

December 17, 2025
Element Call

At The Matrix Conference 2025, I had the pleasure of presenting alongside the Element Call team on how we’re evolving real time communication on Matrix. I gave an introduction to Matrix, the missing primitives needed for real time communication (RTC) on top of Matrix, an overview of Element Call, and an outlook on adapting calling across the Matrix ecosystem.

Watch the whole presentation

A brief overview of Matrix

Matrix is an open network for secure, decentralised real time communication. As an open standard, anyone can read its specification and implement it freely. It supports federation, allowing multiple Matrix servers to interconnect, share rooms and exchange messages seamlessly. Rooms are replicated and persistent, ensuring both resilience and reliability. End-to-end encryption is built in by default, safeguarding user privacy, while verified identities help maintain trust—especially in an era of deepfake AI webcams.

The history of Matrix calling

Matrix started with native one-on-one calling in 2014. While peer-to-peer calls worked well for small groups, scaling to large group calls was challenging. Experiments with widgets and Selective Forwarding Units (SFUs) later enabled group calls, but federation, encryption, and interoperability remained complex.

In short, the history of Matrix calling has followed three main categories:

  • One-on-one calls: Highly reliable and aligned with the decentralised ethos of Matrix
  • Peer-to-peer group calls: Great for small groups, but limited to a small number of users
  • Large group calls (SFU-based): Enables scalable, high-quality conferences, but requires new infrastructure to remain secure, private, and federated

To truly bring calling into the heart of Matrix — and to support everything from casual chats to large community calls — we needed new building blocks that support real time communication while staying lightweight, flexible, and compatible with Matrix’s decentralised architecture.

MatrixRTC

MatrixRTC is a framework layered on top of Matrix to enable real time communication. The goal is to create a universal framework for all real time experiences such as collaborative whiteboards, games, virtual environments (Third Room) and, of course, calls and video conferencing. 

We wanted the framework to be flexible and pluggable. While WebRTC is the current default technology, we designed MatrixRTC so that future transports like WebTransport in combination with WebCodecs can be integrated easily. Today, we are using LiveKit as a backend to power scalable, secure media transport, which provides a developer-friendly API layer over WebRTC to let us manage large rooms and scale reliably.

Key components in a MatrixRTC structure include:

  • Applications: These define the type of activity and the logic of the application. For example, a call application transmits audio and video, while a whiteboard app sends cursor positions and drawings.
  • Slots: Manages RTC applications within a room and provides a consistent “meeting space” for participants to interact with the same application. Moderators can create, open, and close slots, and a room can have multiple slots for different purposes.
  • Membership: This represents participants and their devices. Each member announces how they can be reached via supported transports, such as WebRTC or LiveKit. Users remain in control of which media they publish and subscribe to.
  • Transport: Defines how participants exchange media, supporting multiple backends such as SFUs, MCUs, or just pure peer-to-peer.
  • Sticky Events: This is a new lightweight primitive we introduced. They are end-to-end encrypted, reduce server metadata, and reliably pass data to clients without contributing to room state “bloat.” This improves efficiency and ensures (eventually) consistent application state even under network splits or race conditions.

Together, these primitives let MatrixRTC provide a structured, universal framework for real time communication on Matrix.

Element Call: Building on MatrixRTC

With all the MatrixRTC components in place, we have the ingredients to deliver a complete calling experience. Element Call now covers all major use cases:

  • 1:1 calls: Private, telephone-style peer-to-peer calling (with some final refinements pending, see ‘What’s next’ section below)
  • Ad hoc in-chat: Starting a call in an existing room for spontaneous discussions
  • Standalone conferences: Using a Single Page Application (SPA) that is easy to share, including guest access for participants without a Matrix account

Element Call enables large group calls using a multi-SFU (Selective Forwarding Unit) architecture. Each homeserver operates its own SFU, allowing participants to publish their media to the SFU local to them, while remote users can subscribe to those streams. This design distributes backend load fairly and lets users control where their media is uploaded, strengthening both privacy and security.

We differentiate between two types of users when interacting with an SFU: full-access users and restricted users. Full-access users—those coming from allowlisted Matrix servers—can publish and subscribe to media, and their presence can trigger the creation of a SFU backend resource for the call. Restricted users, by contrast, include all other users; they do not trigger SFU backend resource creation and are limited to subscribing to media only. These distinctions are enforced at the participant level on each SFU, ensuring that permissions are applied consistently. This structure maintains secure, predictable, and efficient use of the infrastructure.

Contrary to some misconceptions, SFUs do not inherently consume more network bandwidth than MCU approaches. LiveKit uses multiple quality layers for streams, sending only what subscribers request. End-to-end encryption is maintained throughout, keeping the Matrix security guarantees intact. Performance testing shows that a single standard VPS machine can host up to 500 participants, and horizontal scaling is possible with standard Kubernetes setups.

After extensive development and refinement, Element Call is now close to being stable and feature-complete. It includes screen sharing, emoji reactions, raise-hand functionality, conference meta-space to manage multiple conferences, handset mode and native mobile integrations such as CallKit support and picture-in-picture mode.

The Element Call user experience

Aaron Thornburgh, product designer, walked us through the Element Call design experience.

Walk through of the Element Call design experience

On mobile, one-on-one calls provide a simple, focused interface. Users can switch between voice and video calls seamlessly, mute themselves, and minimise the call without interrupting the workflow. End-of-call ratings allow users to give feedback.

Group calls feature a persistent presenter tile, which remains visible even while scrolling through participants. Landscape and full-screen modes are supported, and the interface highlights participants who raise their hands or are speaking. Users can toggle between different views to focus on specific participants while keeping controls accessible but unobtrusive.

On web or desktop, incoming calls appear in a banner with the option to join directly or enter a lobby, with camera and microphone controls. During group calls, participants can easily see who is speaking, manage video tiles, and expand the call to full screen while keeping the chat visible if needed.

Ecosystem adoption

To simplify adoption across Matrix clients, we implemented the Element Call widget as a reference application. Any client can embed this widget, which communicates with the Matrix home server and the LiveKit SFU backend. This modular approach makes integrating Element Call straight forward, with minimal code required for other platforms.

The widget API is already implemented in the Matrix JS SDK and Rust SDK, providing developers with a clear reference to adopt real time communication quickly. Adding Element Call to a client, such as the Cinny client, involves embedding the widget and managing basic controls—everything else is handled by the framework. Timo walked through what this looks like in practice during a demo in the presentation.

Timo Kandra demoed how this looks like in practice

By standardising the m.call call application (MSC4196) and providing deep integration with Element apps - including mobile call kit integration and picture-in-picture - Matrix now has a secure, federated, and privacy-focused solution for real time communication. With the Element Call widget, any client can quickly adopt these features, helping to grow the ecosystem and bring scalable calling to the broader Matrix network.

What’s next

Having delivered more than 139 years of cumulative meeting time with minimal issues reported, Element Call demonstrates that MatrixRTC is edging ever closer to production-grade status.

What remains to be worked on before getting Element Call out of beta is:

  • Extend 1:1 calling to a fully fledged telephone use-case including ringing, declining and handset mode
  • Let the SFU safeguard membership lifecycle via delegation of membership tacking
  • Final bug fixing and ensuring reliability under adverse network conditions

Our goal is to make secure, federated, and privacy-focused calling accessible, reliable, and easy to use — whether one-on-one or in large group meetings.

Related Posts

By the same author

No items found.

Thanks for reading our blog— if you got this far, you should head toelement.ioto learn more!