Skip to main content

Default Interface Settings

Overview

Every account has its own Settings > Interface page, and out of the box everyone starts on the values Open WebUI ships with. Default Interface Settings let an administrator choose those starting values for the whole instance, so a new account opens on the interface you want rather than the stock one.

They are starting values. Anyone can still change any of them for themselves.

You can configure them in two ways:

  1. Admin Panel (recommended for quick edits and experimentation)
  2. Environment variable (DEFAULT_INTERFACE_SETTINGS) (recommended for automated / GitOps-style deployments)

How a value is decided

  1. If the person has set that option themselves, their value is used.
  2. Otherwise your instance default is used.
  3. If you have set no default for it, the built-in value is used.

An on/off option someone has never touched shows a small Default label beside its switch in Settings > Interface. The options that are not switches carry no label, but they inherit the same way.

Untouched options keep tracking your default, so changing a default later moves everyone who has not overridden that option.

Matching the default releases the option

Moving a control to whatever your default currently is releases the override: the Default label comes back and the option follows your defaults again. That is how someone undoes a choice they made earlier.

Releasing happens when that person saves their settings, and it compares against your defaults as they stand at that moment. So setting a default to the value someone had already chosen for themselves does not release their override on its own: their choice stays pinned, and your next change still will not reach them. It is released the next time they save anything on the Interface page, at which point every option of theirs that matches your current defaults is released together, not only the one they just changed.


Configuring the defaults

Option 1: Using the Admin Panel

  1. Log in to your Open WebUI instance as an administrator.
  2. Navigate to SettingsAdminGeneral.
  3. Locate the UI section and click Configure next to Default Interface Settings.
  4. Set the options you want. The list is the same one users see in Settings > Interface.
  5. Click Save at the bottom of the page.

A line above the list counts how many settings you have configured. Every control you touch joins that set, including one you move and then move straight back, so use Clear to empty the set and put everything back on the built-in values.


Option 2: Using environment variables (DEFAULT_INTERFACE_SETTINGS)

For automated deployments, configure the defaults using the DEFAULT_INTERFACE_SETTINGS environment variable. The value must be a JSON string representing a JSON object, keyed by the setting names in the table below.

Environment variable:

  • DEFAULT_INTERFACE_SETTINGS
    • Type: string (containing a JSON object)
    • Default: {}
    • Description: The starting values every account uses for the options in Settings > Interface

Example (Docker Compose)

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    environment:
      - 'DEFAULT_INTERFACE_SETTINGS={"chatBubble":false,"widescreenMode":true,"chatHoverPreview":false,"title":{"auto":false}}'

If the value is not valid JSON, or parses to something that is not an object, it is ignored and no defaults are applied.

Reach beyond the Interface page

The defaults apply to a person's whole settings record, which is wider than the Interface page. The environment variable therefore accepts keys written by the other personal settings pages as well, such as system (a personal system prompt), params (personal advanced parameters), notificationSound and keyboardShortcuts, even though the Admin Panel editor only offers the interface controls. They inherit and release just like the keys in the table.


Setting keys

Every option on the Settings > Interface page, in the order it appears there, with the name to use in DEFAULT_INTERFACE_SETTINGS and the value Open WebUI uses when you set no default.

UI

KeyLabel in Settings > InterfaceBuilt-in default
textScaleUI Scalenull (shown as Default), otherwise a number from 1 to 1.5
highContrastModeHigh Contrast Modefalse
showChatTitleInTabDisplay Chat Title in Tabtrue
userLocationAllow User Locationfalse
hapticFeedbackHaptic Feedback (Android)false
copyFormattedCopy Formatted Textfalse
showUpdateToastToast Notifications for New Updatestrue
showChangelogShow "What's New" Modal on Logintrue

textScale is the UI Scale slider and highContrastMode is High Contrast Mode.

Chat

KeyLabel in Settings > InterfaceBuilt-in default
enableMessageQueueEnable Message Queuetrue
chatDirectionChat Direction"auto", or "LTR" / "RTL"
landingPageModeLanding Page Mode"" (shown as Default), or "chat"
backgroundImageUrlChat Background Imagenull
chatBubbleChat Bubble UItrue
showUsernameDisplay the Username Instead of You in the Chatfalse
widescreenModeWidescreen Modefalse
temporaryChatByDefaultTemporary Chat by Defaultfalse
chatFadeStreamingTextFade Effect for Streaming Texttrue
renderMarkdownInUserMessagesRender Markdown in User Messagestrue
renderMarkdownInAssistantMessagesRender Markdown in Assistant Messagestrue
renderMarkdownInPreviewsRender Markdown in Previewstrue
title.autoTitle Auto-Generationtrue
autoFollowUpsFollow-Up Auto-Generationtrue
autoTagsChat Tags Auto-Generationtrue
responseAutoCopyAuto-Copy Response to Clipboardfalse
scrollOnResponseGenerationResponse Auto-Scrolltrue
scrollOnBranchChangeScroll On Branch Changetrue
insertSuggestionPromptInsert Suggestion Prompt to Inputfalse
keepFollowUpPromptsKeep Follow-Up Prompts in Chatfalse
insertFollowUpPromptInsert Follow-Up Prompt to Inputfalse
regenerateMenuRegenerate Menutrue
collapseCodeBlocksAlways Collapse Code Blocksfalse
expandDetailsAlways Expand Detailsfalse
chatHoverPreviewChat Hover Previewstrue
displayMultiModelResponsesInTabsDisplay Multi-model Responses in Tabsfalse
showFilesOnTerminalSelectShow Files on Terminal Selecttrue
terminalFileDisplayTerminal File Displaysidebar
stylizedPdfExportStylized PDF Exporttrue
showFloatingActionButtonsFloating Quick Actionstrue
floatingActionButtonsFloating Quick Actions > Managenull
webSearchWeb Search in Chatnull (shown as Default), or "always"

title.auto is nested, so in the environment variable it is written {"title": {"auto": false}}.

Input

KeyLabel in Settings > InterfaceBuilt-in default
ctrlEnterToSendEnter Key Behaviorfalse (Enter to Send); true is Ctrl+Enter to Send
richTextInputRich Text Input for Chattrue
promptAutocompletePrompt Autocompletionfalse
showFormattingToolbarShow Formatting Toolbarfalse
insertPromptAsRichTextInsert Prompt as Rich Textfalse
largeTextAsFilePaste Large Text as Filefalse

Artifacts

KeyLabel in Settings > InterfaceBuilt-in default
detectArtifactsDetect Artifacts Automaticallytrue
iframeSandboxAllowScriptsiframe Sandbox Allow Scriptstrue
iframeSandboxAllowSameOriginiframe Sandbox Allow Same Originfalse
terminalPreviewAllowSameOriginTerminal Preview Allow Same Originfalse
iframeSandboxAllowFormsiframe Sandbox Allow Formstrue
iframeSandboxAllowDownloadsiframe Sandbox Allow Downloadstrue

Voice

KeyLabel in Settings > InterfaceBuilt-in default
voiceInterruptionAllow Voice Interruption in Callfalse
showEmojiInCallDisplay Emoji in Callfalse

File

KeyLabel in Settings > InterfaceBuilt-in default
defaultUploadContextDefault Upload Mode"focused" (Using Focused Retrieval); "full" is Using Entire Document
imageCompressionImage Compressionfalse
imageCompressionSizeImage Compression > Manage{"width": "", "height": ""}
imageCompressionInChannelsCompress Images in Channelstrue
Rows that are not always on screen

A few controls only appear under a condition: Toast Notifications for New Updates and Show "What's New" Modal on Login are shown to admins only, Display the Username Instead of You in the Chat appears when Chat Bubble UI is off, Temporary Chat by Default needs the temporary-chat permission, Prompt Autocompletion needs autocomplete generation enabled on the instance, Show Formatting Toolbar and Insert Prompt as Rich Text appear when Rich Text Input for Chat is on, and Compress Images in Channels appears when Image Compression is on. Setting a default for any of them still works; it simply takes effect for the people who can see the control.


What this does not do

  • It does not restrict anyone. Everyone keeps full control of every option in Settings > Interface. To actually hold people to your values, take Interface Settings Access away from them, see Locking the defaults.
  • It does not wipe anyone's existing choices. Whatever someone already set for themselves keeps its value. What changes is the options they never set: those move from the built-in value to yours.
  • It does not cover Theme or Language. Both are stored in the browser rather than on the account, so they are not part of this. Use DEFAULT_LOCALE to choose the starting language.

Locking the defaults

If a set of accounts should stay exactly on your values, remove the Interface Settings Access permission from them (see Permissions). Doing so hides the Interface page and refuses any attempt to save personal settings, so those accounts keep whatever you have configured. Admins are exempt from the permission and can always change their own settings.


Checking what an account has overridden

GET /api/v1/users/user/settings returns the signed-in account's settings with your defaults already filled in, which is what the app itself uses. Add ?raw=true to get that account's own stored settings instead, without the defaults merged in, so you can see exactly which options it has pinned and which are still inherited.


This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.