Voice Chat

Voice Chat is a feature enabling real-time, spoken communication between yourself and other players. It is only available for places that support a maximum of 100 players.

Two users chatting with voice inside a game.

Enable Voice Chat

Voice Chat is enabled by default for verified 13+ users on all new games with a maximum of 100 players. To activate voice for existing games or disable it for new ones:

  1. Open your game in Studio.
  2. Open File ⟩ Experience Settings.
  3. Navigate to the Communication tab on the left side of the window.
  4. Toggle Enable Voice Chat to your desired setting.
  5. OPTIONAL
    For greater communication among players within your game, toggle on Enable Camera to allow eligible players to animate their avatar with their movement.
  6. Publish the place to save the changes.

By enabling this setting, eligible 13+ users can opt-in to Voice Chat within your v. Enabling Voice Chat is required to use the speech-to-text API.

Set maximum players

If you previously set the maximum number of players in a place to more than 100, you'll need to reduce it to support Voice Chat.

  1. In the left-hand navigation of the Experience Settings window, select Places. Every place within your game displays.
  2. Click the button next to the place with more than 100 players, then select Configure Place.
  3. In the Max Players field, enter any number less than or equal to 100.
  4. Click the Save button and then publish to save the changes.

When you update the maximum number of players in a place to fewer than 100, there may be servers already configured to a different, higher number. Since those servers won't support Voice Chat, it's recommended to restart servers.

Customize voice behavior

Voice Chat is proximity-based by default, adjusting the volume of participants based on how close they are to each other. However, you can set UseAudioApi to Enabled to take control over how voices are set up and used in your game.

If VoiceChatService does not appear already:

  1. Right‑click in the Explorer window and select Show Services… from the context menu.

  2. Select VoiceChatService in the popup window and click Insert. The service appears in the Explorer hierarchy.

    VoiceChatService in Explorer hierarchy
  3. With VoiceChatService selected, ensure that UseAudioApi to Enabled in the Properties window. This may already be done for you.

Team-based

To implement Team-based chat where only teammates can hear one another, you can use the following Script within ServerScriptService:

Team Chat

local Teams = game:GetService("Teams")
local function findAudioInput(forPlayer : Player) : AudioDeviceInput?
-- Assumes there is only one AudioDeviceInput per player, parented to the Player object
-- This is provided for you if VoiceChatService.EnableDefaultVoice is true
-- May need to be reworked for generality if your place puts AudioDeviceInput objects elsewhere
return forPlayer:FindFirstChildWhichIsA("AudioDeviceInput")
end
local function onTeamChanged(player : Player)
local team = player.Team
if not team then return end
local device = findAudioInput(player)
if not device then return end
-- Only permit teammates to hear each other
device.AccessType = Enum.AccessModifierType.Allow
local allowed = {}
for _, player : Player in team:GetPlayers() do
table.insert(allowed, player.UserId)
end
device:SetUserIdAccessList(allowed)
end
local function onTeamAdded(team : Team)
team.PlayerAdded:Connect(onTeamChanged)
team.PlayerRemoved:Connect(onTeamChanged)
end
for _, team : Team in Teams:GetTeams() do
onTeamAdded(team)
end
Teams.ChildAdded:Connect(function(child : Instance)
if child:IsA("Team") then
onTeamAdded(child)
end
end)

Non-spatial

Depending on your game's needs, it might make more sense to hear others with equal volume, regardless of their geographic location. If you disable default Voice Chat, you can then implement non‑spatial Voice Chat through the following Script within ServerScriptService:

Non-Proximity Chat

local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local function wireUp(source : Instance, target : Instance)
local wire = Instance.new("Wire")
wire.SourceInstance = source
wire.TargetInstance = target
wire.Parent = source
end
-- Set up a global volume slider for everybody's voice
local volumeSlider = Instance.new("AudioFader", Workspace)
local output = Instance.new("AudioDeviceOutput", Workspace)
wireUp(volumeSlider, output)
local function onPlayerAdded(player : Player)
local device = Instance.new("AudioDeviceInput", player)
device.Player = player
-- Route each new player's microphone input to the global volume slider
wireUp(device, volumeSlider)
end
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
LocalScript

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onDescendantAdded(descendant : Instance)
if descendant:IsA("Wire") then
descendant:Destroy()
end
end
for _, descendant in player:GetDescendants() do
onDescendantAdded(descendant)
end
player.DescendantAdded:Connect(onDescendantAdded)

Disable per place

If you don't want to enable Voice Chat for every place within your game, you can disable it within specific places that would otherwise be voice‑eligible.

To disable Voice Chat for a specific place within a game:

  1. Right‑click in the Explorer window and select Show Services… from the context menu.

  2. Select VoiceChatService in the popup window and click Insert. The service appears in the Explorer hierarchy.

    VoiceChatService in Explorer hierarchy
  3. With VoiceChatService selected, disable EnableDefaultVoice in the Properties window.

  4. Publish the place to save the changes and restart servers to ensure the change takes effect for all servers currently running your game.

Check status

You can check if a player has enabled Voice Chat by calling IsVoiceEnabledForUserIdAsync() in a LocalScript, or in a Script with RunContext set to Enum.RunContext.Client.

Client Script - Check Voice Chat Status

local Players = game:GetService("Players")
local VoiceChatService = game:GetService("VoiceChatService")
local localPlayer = Players.LocalPlayer
local success, enabled = pcall(function()
return VoiceChatService:IsVoiceEnabledForUserIdAsync(localPlayer.UserId)
end)
if success and enabled then
print("Voice Chat enabled!")
end
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.