Introduction
Element Web is the flagship web client for the Matrix protocol, an open standard for decentralized, end-to-end encrypted communication. It offers real-time messaging, file sharing, voice and video calls, and integration bridges to other platforms like Slack, IRC, and Discord.
What Element Web Does
- Sends and receives end-to-end encrypted messages in rooms and direct conversations
- Makes voice and video calls with screen sharing using built-in WebRTC support
- Bridges to third-party platforms including Slack, IRC, Discord, and Telegram via Matrix bridges
- Organizes conversations into spaces (groups of rooms) for teams and communities
- Supports message threads, reactions, rich text formatting, and file attachments
Architecture Overview
Element Web is a React and TypeScript single-page application that communicates with Matrix homeservers via the Matrix Client-Server API. The matrix-js-sdk handles protocol interactions, encryption (Olm/Megolm), and sync. The client maintains a local cache of room state and timeline data for offline access and fast navigation. Encryption keys are managed per-device with cross-signing for verification across sessions.
Self-Hosting & Configuration
- Deploy with Docker or serve the static build behind any web server like Nginx or Caddy
- Point the config.json to your own Matrix homeserver (Synapse, Dendrite, or Conduit)
- Configure custom branding with your own logo, colors, and server defaults
- Enable Jitsi integration for scalable group video conferencing
- Set default rooms and spaces that new users join automatically
Key Features
- End-to-end encryption enabled by default for private conversations
- Decentralized architecture where no single entity controls the network
- Rich integrations via Matrix bridges connecting to Slack, Discord, IRC, Telegram, and more
- Spaces for organizing rooms into logical groups like departments or projects
- Cross-signed device verification for secure multi-device usage
Comparison with Similar Tools
- Slack — proprietary and centralized; Element is open-source with federation and E2EE
- Discord — gaming-focused and centralized; Element is self-hostable and privacy-focused
- Rocket.Chat — self-hosted but single-server; Element federates across homeservers
- Mattermost — team-focused and self-hosted; Element adds federation and E2EE by default
- Signal — strong encryption but centralized and phone-number-based; Element uses decentralized Matrix identifiers
FAQ
Q: Do I need my own Matrix homeserver to use Element? A: No. You can register on the public matrix.org homeserver. Self-hosting gives you full control over your data.
Q: Is end-to-end encryption always on? A: E2EE is enabled by default for direct messages and private rooms. Public rooms are unencrypted by default.
Q: Can I bridge Element to my Slack workspace? A: Yes. Matrix bridges like mautrix-slack or matrix-appservice-slack connect Slack channels to Matrix rooms.
Q: How does federation work? A: Each homeserver connects to others via the Matrix federation protocol, so users on different servers can communicate seamlessly.