Voice bridge: Discord ↔︎ Matrix
Nether runs a hosted instance of nether-voicebridge — a bidirectional voice bridge between Matrix/Element Call and Discord voice channels. Talk in the Discord channel and be heard in the Matrix call, and vice versa, with every speaker showing up as their own named participant on the far side. As far as we know it’s the only voice bridge anyone offers.
It’s free, it never records anything (live relay only — see the privacy policy), and you can set up a bridge for your own room yourself, over DM. Here’s how.
We’re in open beta. The bridge works in daily use, but it’s young and under heavy development — expect the occasional rough edge rather than perfection. Everyone using it right now is helping us test it, and we’re genuinely grateful. If something breaks, glitches, or just confuses you, tell us in
#nether-voicebridge-help:nether.im— that’s exactly the feedback a beta is for.
What you need
- A Matrix account. A
nether.im account works, but so does any Matrix
account anywhere — the bridge bot is reachable
over federation. (Want a nether.im account?
Registration is invite-based — see joining, or ask in
the bridge help room:
#nether-voicebridge-help:nether.im.) - A Moderator role in the Matrix room you want to bridge — an explicitly granted power level of 50+ (what Element calls “Moderator”), not just a permissive room-wide default. The bot checks this — you can’t bridge someone else’s room.
- A Discord server where you (or a friend) hold Manage Server. A bridge is only created once a server manager approves it inside Discord — you can’t bridge someone else’s server either. That two-sided consent is the whole security model.
- The bridge’s puppet bots invited to that Discord server, with Connect, Speak, Use Voice Activity and Change Nickname (each link below pre-scopes exactly those four). Invite all seven for the full pool — inviting fewer just means fewer simultaneous Matrix speakers in your server: Voice Bridge 01 · 02 · 03 · 04 · 05 · 06 · 07
Setting it up
Prepare the Matrix room. It must allow power level 0 for the
org.matrix.msc3401.call.memberstate event — the standard Element Call setup. Easiest way: start an Element Call in the room once (the call button in Element) — that configures it automatically. If the room is invite-only, also invite the bridge bot (@voicebridge_as:nether.im) to it.This one setting is the single most common thing that breaks a bridge — even we trip over it. What it looks like when it’s wrong: the bridge links fine and Matrix→Discord works, but nobody from Discord ever appears in your Matrix call. Two traps to know:
- Element’s Settings → Roles & Permissions → “Join Element calls” dropdown is unreliable here: it shows “Default” both when the room is correctly configured and when it isn’t. Don’t trust it in either direction.
- To check (or fix) for real: type
/devtoolsin the room → Explore room state →m.room.power_levels, and look for"org.matrix.msc3401.call.member": 0inside"events". If it’s missing, Edit and add it.
DM the bot. Open a direct message with
@voicebridge_as:nether.imand send it the messagehelp— it will tell you everything it can do. Everything from here on is just chat messages you send the bot in that DM.Send the bot a
linkmessage describing what to connect:link "Game Night" !yourroom:example.org <discord-server-id> <voice-channel-id>(Right-click the server and channel in Discord → “Copy Server ID” / “Copy Channel ID”; enable Developer Mode first under User Settings → Advanced. The room ID is under Element → room settings → Advanced.)
The bot verifies everything — the room’s call permissions, your moderator status — and tells you exactly what to fix if something’s off. When it all passes, it answers with a one-time approval code like
NVB-XXXXXX.Approve it in Discord. Someone with Manage Server in the target server runs
/bridge approve code:NVB-XXXXXX(any text channel, within 10 minutes). Done — the bridge starts immediately, and a notice is posted in the voice channel’s text chat so the server knows the channel is bridged.
Join the voice channel or the room’s call and
say hi. Manage your bridges any time by
messaging the bot in the same DM: send
list to see yours,
unlink <name> to remove
one.
Limits (beta)
- 2 bridges per account, 3 per Discord server. Enough for real use while we watch how the beta behaves.
- Rate limits: a 30-second
cooldown between commands and 5
linkattempts per hour. The approval code expires after 10 minutes — justlinkagain if the Discord side missed it. - Call size: up to 16 Discord speakers are relayed into a Matrix call at once (a 17th is silently not relayed until a slot frees), and up to 7 Matrix speakers get their own named bot in a Discord channel at once (an 8th is still heard, through the channel’s anchor bot, without their own name).
The full detail is in the self-serve guide’s Limits section.
For the full walkthrough — including troubleshooting and the usage limits — see the self-serve bridging guide in the project docs.
Consent, privacy, and reporting
The bridge is built so nobody gets relayed without agreeing to it:
- A bridge only exists when a room moderator asked for it and a Discord server manager approved it, and its creation is announced in the channel.
- Voice is relayed live only — never recorded, stored, or transcribed. The full detail is in the privacy policy.
- Any Discord user can exclude themselves from
relay with
/bridge optoutin a bridged server. - To report an abusive bridge, DM the bot:
report <owner|guild|room> <value> [reason]— a human operator reviews every report. You can also reach us in#nether-voicebridge-help:nether.im, at [email protected], or via help.
Prefer to run your own?
The bridge is open source (AGPL), and everything the hosted instance does — including the self-serve DM flow — works on a self-hosted copy pointed at your own homeserver. The project README has the full self-hosting story: quickstart from source, Docker, Debian/Fedora packages, and configuration. Most people are better served by the hosted instance above (Discord voice bridging has sharp edges — DAVE E2EE, pinned dependencies, a pool of bot applications to create), but if that sounds like fun, we’d love to hear how it goes.