Documentation Index
Fetch the complete documentation index at: https://mintlify.com/jitsi/jitsi-meet/llms.txt
Use this file to discover all available pages before exploring further.
config.js is the primary server-side configuration file loaded by every Jitsi Meet instance on page load. On a standard Debian/Ubuntu installation it lives at /etc/jitsi/meet/<your-domain>-config.js. The file exports a single config object whose properties control everything from XMPP connection details and codec preferences to which toolbar buttons appear in the UI. Changes take effect immediately on the next page load — no server restart is required.
Connection Settings
These options define how the browser connects to the Jitsi backend services (Prosody XMPP, Jicofo, and the Jitsi Videobridge).Your primary XMPP domain. This must match the domain configured in Prosody. Example:
jitsi-meet.example.com.The XMPP MUC (Multi-User Chat) domain used for conference rooms. Defaults to
conference.<domain>. Example: conference.jitsi-meet.example.com.When token-based authentication is enabled, unauthenticated guests are assigned to this domain. Example:
guest.jitsi-meet.example.com.The BOSH (Bidirectional-streams Over Synchronous HTTP) URL for XMPP-over-HTTP connections. Example:
https://jitsi-meet.example.com/http-bind.The WebSocket URL for the XMPP connection. Preferred over BOSH when both are configured because it has lower overhead and better performance. Example:
wss://jitsi-meet.example.com/xmpp-websocket.Peer-to-Peer Settings
When only two participants are in a room, Jitsi Meet can establish a direct WebRTC connection between them, bypassing the Jitsi Videobridge entirely. This reduces server load and often improves call quality.Enables or disables peer-to-peer mode. When
true, a direct connection is attempted whenever exactly two participants are present. A third participant joining will automatically move everyone back to the JVB.Array of STUN server objects used during P2P ICE negotiation. Each entry must have a
urls field. Example: [{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }].Controls which ICE candidate types are used for the P2P connection. Valid values from the WebRTC spec are
"all" and "relay". Set to "relay" to force TURN usage (useful in restrictive firewalls).Prejoin Page
The prejoin page gives participants a chance to configure their camera and microphone before entering a meeting.When
true, an intermediate configuration screen is shown before a participant joins the call, allowing them to select audio/video devices and set their display name.Hides the display name input field on the prejoin screen. If
requireDisplayName is also true, a name must still be supplied via JWT or the IFrame API userInfo option.List of extra join option buttons to hide from the dropdown. Possible values:
'no-audio', 'by-phone'.Enables a pre-call network test on the prejoin page. Requires
preCallTestICEUrl to also be set.Toolbar Buttons
ThetoolbarButtons array controls exactly which buttons appear in the meeting toolbar. When the option is undefined (the default), all available buttons are shown.
An explicit allow-list of toolbar button identifiers. Only the listed buttons will be rendered. Omitting this option (leaving it
undefined) displays every available button.All available button identifiers:
camera, chat, closedcaptions, desktop, download, embedmeeting, etherpad, feedback, fullscreen, hangup, help, highlight, invite, linktosalesforce, livestreaming, microphone, noisesuppression, participants-pane, profile, raisehand, recording, security, select-background, settings, shareaudio, sharedvideo, shortcuts, stats, tileview, toggle-camera, videoquality, whiteboardVideo Quality
- videoQuality Object
- constraints Object
The Each codec (
videoQuality object lets you control codec preferences and per-codec bitrate caps for each quality level.Ordered list of preferred video codecs for desktop endpoints. The first codec in the list is tried first. Example:
['AV1', 'VP9', 'VP8', 'H264'].Ordered list of preferred codecs for mobile and React Native endpoints. Example:
['H264', 'VP8', 'VP9', 'AV1'].When enabled, the client makes runtime codec and resolution adjustments when WebRTC statistics report CPU overuse on outbound video streams.
av1, vp8, vp9, h264) accepts a maxBitratesVideo object with keys low, standard, high, fullHd, ultraHd, and ssHigh (all in bits per second):Feature Flags
When
true, no requests are made to external servers. Avatars fall back to locally-generated identicons and external analytics/stats integrations are disabled. Useful for air-gapped or privacy-strict deployments.When set to
true, disables the emoji reactions feature for all participants. Reactions are enabled by default when this option is not set.Removes the polls feature from the UI entirely.
Disables the chat panel, including notifications, sounds, and private messages.
Hides the local self-view tile from both tile view and the filmstrip.
Forces every participant to provide a display name before joining. When combined with
prejoinConfig.hideDisplayName: false, the name field is prominently shown on the prejoin screen.Displays a warning label when the room name is considered easy to guess and no password or lobby is active.
When set to a number, restricts room passwords to that many numeric digits. Useful for phone dial-in scenarios.
Minimal Production Config Example
The following snippet shows a complete minimalconfig.js suitable for a self-hosted production server. Replace every occurrence of jitsi-meet.example.com with your actual domain.
After editing
config.js, no Jitsi service restart is necessary. Simply reload the browser page to pick up the new settings.