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:
- Admin Panel (recommended for quick edits and experimentation)
- Environment variable (
DEFAULT_INTERFACE_SETTINGS) (recommended for automated / GitOps-style deployments)
How a value is decided
- If the person has set that option themselves, their value is used.
- Otherwise your instance default is used.
- 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.
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
- Log in to your Open WebUI instance as an administrator.
- Navigate to Settings → Admin → General.
- Locate the UI section and click Configure next to Default Interface Settings.
- Set the options you want. The list is the same one users see in Settings > Interface.
- 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
- Type:
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.
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
| Key | Label in Settings > Interface | Built-in default |
|---|---|---|
textScale | UI Scale | null (shown as Default), otherwise a number from 1 to 1.5 |
highContrastMode | High Contrast Mode | false |
showChatTitleInTab | Display Chat Title in Tab | true |
userLocation | Allow User Location | false |
hapticFeedback | Haptic Feedback (Android) | false |
copyFormatted | Copy Formatted Text | false |
showUpdateToast | Toast Notifications for New Updates | true |
showChangelog | Show "What's New" Modal on Login | true |
textScale is the UI Scale slider and highContrastMode is High Contrast Mode.
Chat
| Key | Label in Settings > Interface | Built-in default |
|---|---|---|
enableMessageQueue | Enable Message Queue | true |
chatDirection | Chat Direction | "auto", or "LTR" / "RTL" |
landingPageMode | Landing Page Mode | "" (shown as Default), or "chat" |
backgroundImageUrl | Chat Background Image | null |
chatBubble | Chat Bubble UI | true |
showUsername | Display the Username Instead of You in the Chat | false |
widescreenMode | Widescreen Mode | false |
temporaryChatByDefault | Temporary Chat by Default | false |
chatFadeStreamingText | Fade Effect for Streaming Text | true |
renderMarkdownInUserMessages | Render Markdown in User Messages | true |
renderMarkdownInAssistantMessages | Render Markdown in Assistant Messages | true |
renderMarkdownInPreviews | Render Markdown in Previews | true |
title.auto | Title Auto-Generation | true |
autoFollowUps | Follow-Up Auto-Generation | true |
autoTags | Chat Tags Auto-Generation | true |
responseAutoCopy | Auto-Copy Response to Clipboard | false |
scrollOnResponseGeneration | Response Auto-Scroll | true |
scrollOnBranchChange | Scroll On Branch Change | true |
insertSuggestionPrompt | Insert Suggestion Prompt to Input | false |
keepFollowUpPrompts | Keep Follow-Up Prompts in Chat | false |
insertFollowUpPrompt | Insert Follow-Up Prompt to Input | false |
regenerateMenu | Regenerate Menu | true |
collapseCodeBlocks | Always Collapse Code Blocks | false |
expandDetails | Always Expand Details | false |
chatHoverPreview | Chat Hover Previews | true |
displayMultiModelResponsesInTabs | Display Multi-model Responses in Tabs | false |
showFilesOnTerminalSelect | Show Files on Terminal Select | true |
terminalFileDisplay | Terminal File Display | sidebar |
stylizedPdfExport | Stylized PDF Export | true |
showFloatingActionButtons | Floating Quick Actions | true |
floatingActionButtons | Floating Quick Actions > Manage | null |
webSearch | Web Search in Chat | null (shown as Default), or "always" |
title.auto is nested, so in the environment variable it is written {"title": {"auto": false}}.
Input
| Key | Label in Settings > Interface | Built-in default |
|---|---|---|
ctrlEnterToSend | Enter Key Behavior | false (Enter to Send); true is Ctrl+Enter to Send |
richTextInput | Rich Text Input for Chat | true |
promptAutocomplete | Prompt Autocompletion | false |
showFormattingToolbar | Show Formatting Toolbar | false |
insertPromptAsRichText | Insert Prompt as Rich Text | false |
largeTextAsFile | Paste Large Text as File | false |
Artifacts
| Key | Label in Settings > Interface | Built-in default |
|---|---|---|
detectArtifacts | Detect Artifacts Automatically | true |
iframeSandboxAllowScripts | iframe Sandbox Allow Scripts | true |
iframeSandboxAllowSameOrigin | iframe Sandbox Allow Same Origin | false |
terminalPreviewAllowSameOrigin | Terminal Preview Allow Same Origin | false |
iframeSandboxAllowForms | iframe Sandbox Allow Forms | true |
iframeSandboxAllowDownloads | iframe Sandbox Allow Downloads | true |
Voice
| Key | Label in Settings > Interface | Built-in default |
|---|---|---|
voiceInterruption | Allow Voice Interruption in Call | false |
showEmojiInCall | Display Emoji in Call | false |
File
| Key | Label in Settings > Interface | Built-in default |
|---|---|---|
defaultUploadContext | Default Upload Mode | "focused" (Using Focused Retrieval); "full" is Using Entire Document |
imageCompression | Image Compression | false |
imageCompressionSize | Image Compression > Manage | {"width": "", "height": ""} |
imageCompressionInChannels | Compress Images in Channels | true |
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_LOCALEto 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.
Related
DEFAULT_INTERFACE_SETTINGSin the environment variable reference- Understanding Settings, on how admin and user settings relate
- Permissions, for Interface Settings Access