Skip to main content



Options marked with 🚫 are not overwritable through configOverwrite


This page is a work in progress. Not all options are described here yet.



type: Array

Logs that should go be passed through the 'log' event if a handler is defined for it

Default: unset

apiLogLevels: ['warn', 'log', 'error', 'info', 'debug']


type: Array

Toolbar buttons which have their click/tap event exposed through the API on toolbarButtonClicked. Passing a string for the button key will prevent execution of the click/tap routine; passing an object with key and preventExecution flag on false will not prevent execution of the click/tap routine. Below array with mixed mode for passing the buttons.

Default: unset

buttonsWithNotifyClick: [
key: 'chat',
preventExecution: false
key: 'closedcaptions',
preventExecution: true
key: 'invite',
preventExecution: false
key: 'raisehand',
preventExecution: true
// The add passcode button from the security dialog.
key: 'add-passcode',
preventExecution: false


type: Number

Default interval (milliseconds) for triggering mouseMoved iframe API event.

Default: 1000

mouseMoveCallbackInterval: 1000


type: Boolean

This property is related to the use case when Jitsi Meet is used via the IFrame API. When the property is true Jitsi Meet will use the local storage of the host page instead of its own. This option is useful if the browser is not persisting the local storage inside the iframe.

Default: unset

useHostPageLocalStorage: true



type: Number

The interval (milliseconds) at which the audio levels are calculated.

Default: 200

audioLevelsInterval: 200


type: Object

Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio. Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC.

Default: unset

audioQuality: {
stereo: false,
opusMaxAverageBitrate: null // Value to fit the 6000 to 510000 range.


type: Boolean

Disable measuring of audio levels.

Default: false

disableAudioLevels: false


type: Boolean

Specifies whether there will be a search field in speaker stats or not.

DEPRECATED Use speakerStats.disableSearch instead.

Default: false

disableSpeakerStatsSearch: false


type: Array

The sounds passed in this array will be disabled.

Default: unset

disabledSounds: [


type: Boolean

Enabling this will run the lib-jitsi-meet no audio detection module which will notify the user if the current selected microphone has no audio input and will suggest another valid device if one is present.

Default: true

enableNoAudioDetection: true


type: Boolean

Enabling this will run the lib-jitsi-meet noise detection module which will notify the user if there is noise, other than voice, coming from the current selected microphone. The purpose it to let the user know that the input could be potentially unpleasant for other meeting participants.

Default: true

enableNoisyMicDetection: true


type: Object

Options related to the speaker stats feature.


  • disabled - Specifies whether the speaker stats is enable or not.
  • disableSearch - Specifies whether there will be a search field in speaker stats or not.
  • order - Specifies whether participants in speaker stats should be ordered or not, and with what priority.


speakerStats: {
disabled: false,
disableSearch: false,
order: [
'role', // Moderators on top.
'name', // Alphabetically by name.
'hasLeft', // The ones that have left in the bottom.
], // the order of the array elements determines priority.


type: Array

Specifies whether participants in speaker stats should be ordered or not, and with what priority.

DEPRECATED Use speakerStats.order instead.


   speakerStatsOrder: [
'role', // Moderators on top.
'name', // Alphabetically by name.
'hasLeft', // The ones that have left in the bottom.
], // the order of the array elements determines priority.


type: Number

Every participant after the Nth will start audio muted.

Default: unset

startAudioMuted: 10


type: Boolean

Start the conference in audio only mode (no video is being received nor sent).

Default: unset

startAudioOnly: false


type: Boolean

Enabling it (with #params) will disable local audio output of remote participants and to enable it back a reload is needed.

Default: unset

startSilent: false


type: Boolean

Start calls with audio muted. This option is only applied locally.

Default: unset

startWithAudioMuted: false

Breakout rooms


type: Object

Options related to the breakout rooms feature.

Default: unset


  • hideAddRoomButton - Hides the add breakout room button. This replaces hideAddRoomButton.
  • hideAutoAssignButton - Hides the auto assign participants button.
  • hideJoinRoomButton - Hides the join breakout room button.
  • hideModeratorSettingsTab - Hides the button to open the moderator settings tab.
  • hideMoreActionsButton - Hides the more actions button.
  • hideMuteAllButton - Hides the mute all button.
breakoutRooms: {
hideAddRoomButton: false,
hideAutoAssignButton: false,
hideJoinRoomButton: false


type: Boolean

DEPRECATED Use breakoutRooms.hideAddRoomButton instead.

Hides add breakout room button.

Default: false

hideAddRoomButton: false



type: Object

The callstats initialize config params as described in the API here.

callStatsConfigParams: {
disableBeforeUnloadHandler: true, // disables callstats.js's window.onbeforeunload parameter.
applicationVersion: "app_version", // Application version specified by the developer.
disablePrecalltest: true, // disables the pre-call test, it is enabled by default.
siteID: "siteID", // The name/ID of the site/campus from where the call/pre-call test is made.
additionalIDs: { // additionalIDs object, contains application related IDs.
customerID: "Customer Identifier. Example, walmart.",
tenantID: "Tenant Identifier. Example, monster.",
productName: "Product Name. Example, Jitsi.",
meetingsName: "Meeting Name. Example, Jitsi loves callstats.",
serverName: "Server/MiddleBox Name. Example, jvb-prod-us-east-mlkncws12.",
pbxID: "PBX Identifier. Example, walmart.",
pbxExtensionID: "PBX Extension Identifier. Example, 5625.",
fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.",
sessionID: "Session Identifier. Example, session-12-34"
collectLegacyStats: true, //enables the collection of legacy stats in chrome browser
collectIP: true //enables the collection localIP address


type: String

You must provide the Application ID to enable sending statistics to

callStatsID: 'my-callstats-app-id'


type: String

You must provide the Secret to enable sending statistics to

callStatsSecret: 'my-callstats-secret'


type: Boolean

Enables sending participants' display names to callstats.

enableDisplayNameInStats: false


type: Boolean

Enables sending participants' emails (if available) to callstats and other analytics

enableEmailInStats: false


type: Number

Controls the percentage of automatic feedback shown to participants when callstats is enabled. The default value is 100%. If set to 0, no automatic feedback will be requested

feedbackPercentage: 100

Closed captions


type: Boolean

Enables turning captions on automatically when the recording starts

Default: false

autoCaptionOnRecord: false

preferredTranscribingLanguage 🚫

type: Boolean

Transcriber language. This settings will only work if transcribeWithAppLanguage is explicitly set to false. Available languages can be found here.

Default: 'en-US'

preferredTranscribeLanguage: 'en-CA'

transcribeWithAppLanguage 🚫

type: Boolean

If true the transcriber will use the application language. The application language is either explicitly set by participants in their settings or automatically detected based on the environment, e.g. if the app is opened in a chrome instance which is using french as its default language then transcriptions for that participant will be in french.

Default: true

transcribeWithAppLanguage: false


type: Boolean

Enable transcription (in interface_config, subtitles and buttons can be configured).

Default: false

transcribingEnabled: true



type: String


bosh: '//'


type: Boolean

Disables or enables RTX (RFC 4588).

Default: false

disableRtx: true


type: Boolean

Enable / disable simulcast support.

Default: false

disableSimulcast: true


type: Object

Configure End-to-End Encryption.

e2ee: {
labels: {
labelTooltip: 'Tooltip',
description: 'Description',
label: 'E2EE',
warning: 'Warning'
externallyManagedKey: false


type: Object

Options related to end-to-end (participant to participant) ping.


  • enabled - Whether end-to-end pings should be enabled.
  • numRequests - The number of responses to wait for.
  • maxConferenceSize - The max conference size in which e2e pings will be sent.
  • maxMessagesPerSecond - The maximum number of e2e ping messages per second for the whole conference to aim for. This is used to contol the pacing of messages in order to reduce the load on the backend.
e2eping: {
enabled: false,
numRequests: 5,
maxConferenceSize: 200,
maxMessagesPerSecond: 250


type: Boolean

Enable support for encoded transform in supported browsers. This allows E2EE to work in Safari if the corresponding flag is enabled in the browser. Experimental.

enableEncodedTransformSupport: false

enableForcedReload 🚫

type: Boolean

Enables forced reload of the client when the call is migrated as a result of the bridge going down.

enableForcedReload: true


type: Boolean

Enables ICE restart logic in LJM and displays the page reload overlay on ICE failure. Current disabled by default because it's causing issues with signaling when Octo is enabled. Also when we do an "ICE restart"(which is not a real ICE restart), the client maintains the TCC sequence number counter, but the bridge resets it. The bridge sends media packets with TCC sequence numbers starting from 0.

enableIceRestart: true


type: Boolean

Whether to enable stats collection or not in the TraceablePeerConnection. This can be useful for debugging purposes (post-processing/analysis of the WebRTC stats) as it is done in the jitsi-meet-torture bandwidth estimation tests.

gatherStats: false


type: Object

URLs for the app connection.


  • domain - XMPP domain
  • anonymousdomain - When using authentication, domain for guest users.
  • authdomain - Domain for authenticated users. Defaults to domain.
  • focus - Focus component domain. Defaults to focus.domain.
  • muc - XMPP MUC domain.
hosts: {
domain: '',
anonymousdomain: '',
authdomain: '',
focus: '',
muc: ''


type: Object

Peer-To-Peer mode: used (if enabled) when there are just 2 participants.


  • enabled - Enables peer to peer mode. When enabled the system will try to establish a direct connection when there are exactly 2 participants in the room. If that succeeds the conference will stop sending data through the JVB and use the peer to peer connection instead. When a 3rd participant joins the conference will be moved back to the JVB connection.
  • enableUnifiedOnChrome - Enable unified plan implementation support on Chromium for p2p connection.
  • iceTransportPolicy - Sets the ICE transport policy for the p2p connection. At the time of this writing the list of possible values are all and relay, but that is subject to change in the future. The enum is defined in the WebRTC standard. If not set, the effective value is all.
  • preferH264 - DEPRECATED Use preferredCodec instead.
  • preferredCodec - Provides a way to set the video codec preference on the p2p connection. Acceptable codec values are VP8, VP9 and H264.
  • disableH264 - DEPRECATED Use disabledCodec instead.
  • disabledCodec - Provides a way to prevent a video codec from being negotiated on the p2p connection
  • backToP2PDelay - How long we're going to wait, before going back to P2P after the 3rd participant has left the conference (to filter out page reload).
  • stunServers - The STUN servers that will be used in the peer to peer connections.
p2p: {
enabled: true,
enableUnifiedOnChrome: false,
iceTransportPolicy: 'all',
preferredCodec: 'H264',
disabledCodec: '',
backToP2PDelay: 5,
stunServers: [
{ urls: '' },
{ urls: '' }


type: Number

The interval at which PeerConnection.getStats() is called.

Default: 10000

pcStatsInterval: 50000

useNewBandwidthAllocationStrategy 🚫

type: Boolean

Provides a way to translate the legacy bridge signaling messages, LastNChangedEvent, SelectedEndpointsChangedEvent and ReceiverVideoConstraint into the new ReceiverVideoConstraints message that invokes the new bandwidth allocation algorithm in the bridge which is described here.

useNewBandwidthAllocationStrategy: false


type: Boolean

Use TURN/UDP servers for the jitsi-videobridge connection (by default we filter out TURN/UDP because it is usually not needed since the bridge itself is reachable via UDP)

useTurnUdp: false


type: Boolean

Disables ICE/TCP by filtering out local and remote TCP candidates in signalling.

webrtcIceTcpDisable: false


type: Boolean

Disables ICE/UDP by filtering out local and remote UDP candidates in signalling.

webrtcIceUdpDisable: false

websocket 🚫

type: String

Websocket URL

websocket: 'wss://'



type: String

If set, it adds a "Open shared document" link to the bottom right menu that will open an etherpad document.

etherpad_base: 'https://your-etherpad-installati.on/p/'


type: Boolean

If etherpad integration is enabled, setting this to true will automatically open the etherpad when a participant joins. This does not affect the mobile app since opening an etherpad obscures the conference controls -- it's better to let users choose to open the pad on their own in that case.

openSharedDocumentOnJoin: false



type: Boolean

Prevents the filmstrip from autohiding when screen width is under a certain threshold

Default: false

disableFilmstripAutohiding: true


type: Object

Options related to the filmstrip.

Default: unset


  • disableResizable - Disables user resizable filmstrip. This also allows configuration of the filmstrip (width, tiles aspect ratios) through the interfaceConfig options.
  • disableStageFilmstrip - Disables the stage filmstrip (displaying multiple participants on stage besides the vertical filmstrip)
filmstrip: {
disableResizable: true,
disableStageFilmstrip: false

Face Landmarks


type: Object

Options related to the face landmarks features.


  • enableFaceCentering - Enables centering faces within a video by sharing face coordinates.
  • enableFaceExpressionsDetection - Enables detecting face expressions from video.
  • enableDisplayFaceExpressions - Enables displaying face expressions in speaker stats.
  • enableRTCStats - Enables anonymized stats collection for face landmarks.
  • faceCenteringThreshold - Minimum required face movement percentage threshold for sending new face centering coordinates data.
  • captureInterval - Milliseconds for processing a new image capture in order to detect face landmarks.
faceLandmarks: {
enableFaceCentering: false,
enableFaceExpressionsDetection: false,
enableDisplayFaceExpressions: false,
enableRTCStats: false,
faceCenteringThreshold: 20,
captureInterval: 1000



type: Object

Setup for the Giphy integration.


  • enabled - Whether the feature is enabled or not.
  • sdkKey - SDK API Key from Giphy.
  • displayMode - Display mode can be one of:
    • tile - show the GIF on the tile of the participant that sent it.
    • chat - show the GIF as a message in chat.
    • all - all of the above. This is the default option.
  • tileTime - How long the GIF should be displayed on the tile (in milliseconds).
  • rating - Limit results by audience rating:
    • g - broadly accepted as appropriate in a public environment. This is the default option.
    • pg - commonly witnessed in a public environment, but not as broadly accepted as appropriate.
    • pg-13 - typically not seen unless sought out, but still commonly witnessed.
    • r - typically not seen unless sought out, and could be considered alarming if witnessed.
giphy: {
enabled: true,
sdkKey: 'example-key',
displayMode: 'tile',
tileTime: 7000,
rating: 'pg'



type: Object

Setup for Gravatar-compatible services.


  • baseUrl 🚫 - Base URL for a Gravatar-compatible service. Defaults to Gravatar.
  • disabled - True if Gravatar should be disabled.
gravatar: {
baseUrl: '',
disabled: false

gravatarBaseURL 🚫

type: String

DEPRECATED Use gravatar.baseUrl instead.

Base URL for a Gravatar-compatible service.

Default: ''

gravatarBaseURL: ''



type: Number

Default value for the channel "last N" attribute. -1 for unlimited.

channelLastN: -1

lastNLimits 🚫

type: Object

Provides a way to use different "last N" values based on the number of participants in the conference. The keys in an Object represent number of participants and the values are "last N" to be used when number of participants gets to or above the number.

For the given example mapping, "last N" will be set to 20 as long as there are at least 5, but less than 29 participants in the call and it will be lowered to 15 when the 30th participant joins. The 'channelLastN' will be used as default until the first threshold is reached.

lastNLimits: {
5: 20,
30: 15,
50: 10,
70: 5,
90: 2


type: Number

Provides a way for the lastN value to be controlled through the UI. When startLastN is present, conference starts with a last-n value of startLastN and channelLastN value will be used when the quality level is selected using "Manage Video Quality" slider.

startLastN: 1



type: Boolean

If Lobby is enabled starts knocking automatically.

autoKnockLobby: false


type: Boolean

Enable lobby chat.

enableLobbyChat: false


type: Boolean

Hide the lobby button.

hideLobbyButton: false



type: Boolean

Hides the moderator indicators.

Default: false

disableModeratorIndicator: true


type: Boolean

Disables the moderation of reactions feature.

Default: false

disableReactionsModeration: true


type: Boolean

Disables muting operations of remote participants.

Default: false

disableRemoteMute: true



type: Array

Use this array to configure which notifications will be shown to the user. The items correspond to the title or description key of that notification. Some of these notifications also depend on some other internal logic to be displayed or not, so adding them here will not ensure they will always be displayed.

A falsy value for this prop will result in having all notifications enabled (e.g null, undefined, false).

notifications: []


type: Array

List of notifications to be disabled. Works in tandem with the above setting.

disabledNotifications: [
'notify.chatMessages', // shown when receiving chat messages while the chat window is closed
'notify.grantedTo', // shown when moderator rights were granted to a participant

Participants Pane


type: Object

Options related to the participants pane.

Default: unset


  • hideModeratorSettingsTab - Hides the button to open the moderator settings tab.
  • hideMoreActionsButton - Hides the more actions button.
  • hideMuteAllButton - Hides the mute all button.
participantsPane: {
hideModeratorSettingsTab: false,
hideMoreActionsButton: false,
hideMuteAllButton: false



type: Object

Enable the dropbox integration.


  • appKey - Your APP Key.
  • redirectURI - A URL to redirect the user to, after authenticating by default uses
dropbox: {
redirectURI: ''


type: Boolean

Whether to enable file recording or not.

fileRecordingsEnabled: false

fileRecordingsServiceEnabled 🚫

type: Boolean

When integrations like dropbox are enabled only that will be shown, by enabling fileRecordingsServiceEnabled, we show both the integrations and the generic recording service (its configuration and storage type depends on jibri configuration)

fileRecordingsServiceEnabled: true

fileRecordingsServiceSharingEnabled 🚫

type: Boolean

Whether to show the possibility to share file recording with other people (e.g. meeting participants), based on the actual implementation on the backend.

fileRecordingsServiceSharingEnabled: false


type: Boolean

Set recording label to auto hide instead of staying always on screen.

Default: false

hideRecordingLabel: true


type: Object

Set local recording configuration.


  • disable - Whether to disable the feature or not.
  • notifyAllParticipants - Whether to notify all the participants when a local recording is started.
localRecording: {
disable: false,
notifyAllParticipants: true

recordingLimit 🚫

type: Object

Options for the recording limit notification.


  • limit - The recording limit in minutes. Note: This number appears in the notification text but doesn't enforce the actual recording time limit. This should be configured in jibri!
  • appName = The name of the app with unlimited recordings.
  • appURL - The URL of the app with unlimited recordings.
recordingLimit: {
limit: 60,
appName: 'Unlimited recordings APP',
appURL: ''

Screen Sharing


type: Object

Optional desktop sharing frame rate options

Default: { min: 5, max: 5 }

desktopSharingFrameRate: {
min: 3,
max: 10


type: Boolean

Disables using screensharing as virtual background.

disableScreensharingVirtualBackground: false


type: Boolean

Enable layer suspension. If enabled, endpoints whose HD layers are not in use will be suspended (no longer sent) until they are requested again. This must be enabled for screen sharing to work as expected on Chrome. Disabling this might result in low resolution screenshare being sent by the client.

Default: true

enableLayerSuspension: false


type: Object

Options for the screenshot capture feature.


  • enabled - Enables the feature
  • mode - The mode for the screenshot capture feature. Can be either 'recording' - screensharing screenshots are taken only when the recording is also on, or 'always' - screensharing screenshots are always taken.
screenshotCapture: {
enabled: true,
mode: 'recording'



type: Object

W3C spec-compliant video constraints to use for video capture. Currently used by browsers that return true from lib-jitsi-meet's util#browser#usesNewGumFlow. The constraints are independent from this config's resolution value. Defaults to requesting an ideal resolution of 720p.

constraints: {
video: {
height: {
ideal: 720,
max: 720,
min: 240


type: Boolean

When true the user cannot add more images to be used as virtual background. Only the default ones from will be available.

disableAddingBackgroundImages: true


type: Boolean

If set to true, disable H.264 video codec by stripping it out of the SDP.

disableH264: true


type: Boolean

Disable the Flip video option from the context menu for local video.

disableLocalVideoFlip: true


type: Boolean

Disables self-view tile. (hides it from tile view and from filmstrip)

disableSelfView: true


type: Boolean

A property used to unset the default flip state of the local video. When it is set to true, the local(self) video will not be mirrored anymore.

doNotFlipLocalVideo: true


type: Boolean

How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD. Use -1 to disable.

maxFullResolutionParticipants: 5


type: Boolean

DEPRECATED Use preferredCodec under videoQuality section instead.

Prefer to use the H.264 video codec (if supported). Note that it's not recommended to do this because simulcast is not supported when using H.264. For 1-to-1 calls this setting is enabled by default and can be toggled in the p2p section.


type: Number

Sets the preferred resolution (height) for local video

Default: 720

resolution: 1080


type: Number

Every participant after the Nth will start video muted.

startVideoMuted: 5


type: Boolean

Start calls with video muted. Only applied locally.

startWithVideoMuted: true


type: Object

Specify the settings for video quality optimizations on the client.


  • disabledCodec - Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified here will be removed from the list of codecs present in the SDP answer generated by the client. If the same codec is specified for both the disabled and preferred option, the disable settings will prevail. Note that VP8 cannot be disabled since it's a mandatory codec, the setting will be ignored in this case.

  • preferredCodec - Provides a way to set a preferred video codec for the JVB connection. If H264 is specified here, simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this to take effect.

  • enforcePreferredCodec - Provides a way to enforce the preferred codec for the conference even when the conference has endpoints that do not support the preferred codec. For example, older versions of Safari do not support VP9 yet. This will result in Safari not being able to decode video from endpoints sending VP9 video. When set to false, the conference falls back to VP8 whenever there is an endpoint that doesn't support the preferred codec and goes back to the preferred codec when that endpoint leaves.

  • maxBitratesVideo - Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values are the max.bitrates to be set on that particular type of stream. The actual send may vary based on the available bandwidth calculated by the browser, but it will be capped by the values specified here. This is currently not implemented on app based clients on mobile.

  • minHeightForQualityLvl - The options can be used to override default thresholds of video thumbnail heights corresponding to the video quality levels used in the application. At the time of this writing the allowed levels are:

    • low - for the low quality level (180p at the time of this writing)

    • standard - for the medium quality level (360p)

    • high - for the high quality level (720p)

      The keys should be positive numbers which represent the minimal thumbnail height for the quality level. With the default config value below the application will use 'low' quality until the thumbnails are at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to the high quality.

  • resizeDesktopForPresenter - Provides a way to resize the desktop track to 720p (if it is greater than 720p) before creating a canvas for the presenter mode (camera picture-in-picture mode with screenshare).

videoQuality: {
disabledCodec: 'H264',
preferredCodec: 'VP8',
maxBitratesVideo: {
H264: {
low: 200000,
standard: 500000,
high: 1500000
VP8 : {
low: 200000,
standard: 500000,
high: 1500000
VP9: {
low: 100000,
standard: 300000,
high: 1200000
minHeightForQualityLvl: {
360: 'standard',
720: 'high'
resizeDesktopForPresenter: false



type: Object

Options related to the Excalidraw whiteboard integration.

Default: unset


  • enabled - Whether the feature is enabled or not.
  • collabServerBaseUrl - The server used to support whiteboard collaboration.
whiteboard: {
enabled: true,
collabServerBaseUrl: ''