Voice chat

Talking at the table: joining voice, mute and push-to-talk, picking your microphone and speaker, the floor and hand raising, proximity and whisper rules, side rooms, and what to do when nobody can hear you.

Desktop appAndroid appBrowser

The table can talk over live voice in the lobby and during play, with no third-party service and no account. On a world hosted from an app, voice is on and runs browser to browser through the share . On a self-hosted server the administrator turns it on and picks the transport (see Voice chat setup). Either way, the controls you use are the same.

Joining voice

The Voice dock in the table header (and the lobby) joins the call. The first join asks for microphone permission: the browser's prompt, or the app's on Android. Once in, the dock shows who is speaking, your mute switch, and volume sliders for voice chat, and . The Dungeon Master is never muted and always hears everyone.

Your microphone and speaker

, reachable from the dock, from Settings in the app, and from the table, hold the recording and playback choices: which microphone, a recording level with a live meter and a test, open mic or , the output device with a test tone (where the browser can route audio), and the three volume switches. A change applies live to a call already in progress.

The floor and raised hands

A campaign setting decides how turn-taking works in voice: ignored (everyone talks freely), shown (the default: whose it is shows in the dock, nothing is enforced), or enforced (only the current speaker and the Dungeon Master are audible). The raise-hand button beside the message box asks for the floor; it is a request, and the lead or Dungeon Master grants it.

Room rules

Optional rules, all per campaign and off by default, make the room feel like a room:

  • Proximity. Characters hear each other within 30 feet on the ; a carries 5 feet, a shout 120. Walls muffle.
  • Downed go deaf. An unconscious character hears nothing until they are up.
  • Side rooms. The Dungeon Master can pull one or two players into a breakout for a private scene, and bring them back.

A member the has muted is silent on the call too and adds nothing to the transcript: on a relayed call they keep listening, on a device-to-device call they leave it. Where the server runs the full , these are enforced by the server. On a call (an , or a server that chose mesh), gains are applied by each listener's own device and there is no speaking indicator, floor enforcement or breakout rooms.

Push-to-talk transcription

Different from voice chat: the microphone button beside the message box records a short clip, sends it to the server's speech-to-text service if one is configured, and shows the text for you to confirm before it is sent as your action. It needs a server with a speech-to-text backend: a service, or the built-in Whisper an administrator installs from the 's Speech section. A has none until its owner sets one up there. On a Steam Deck or with a controller, L1 holds voice chat's .

When nobody can hear you

SymptomLikely cause
The microphone button does nothing in a browserThe page is plain http. Browsers grant the microphone only on or localhost. Use the app, or ask the host for an HTTPS address.
Everyone connects, then silenceOn a self-hosted server with the full media transport, the is closed or the server announces the wrong address. This is the administrator's to fix: Voice chat setup.
One person cannot hear anyoneCheck the output device and the voice volume in , then leave and rejoin the call.
Voice dropped when the server restartedExpected: a restart ends the call. Rejoin from the dock.
Android: no prompt for the microphoneThe permission was denied earlier. Android settings, Apps, Open Dungeon Master, Permissions, Microphone.

Checked against desktop and Android app 0.17.2 and server 0.26.2 on 2026-10-11. Something wrong or missing? Open an issue.

Download · v0.17.2
Server app · v0.26.2

Optional. Runs the table for a whole group on one machine that stays on. Everyone else just installs the app.

Free & open source · MIT licensed · served from GitHub releases