Customizable Banners
Overviewβ
Open WebUI allows administrators to display custom banners to logged-in users. Banners are useful for announcements, system-wide alerts, maintenance notices, and other important messages.
Banners are persistent and can optionally be dismissible by users. You can configure banners in two ways:
- Admin Panel (recommended for quick edits and experimentation)
- Environment variable (
WEBUI_BANNERS) (recommended for automated / GitOps-style deployments)
When to use bannersβ
Banners are best for short, high-visibility messages such as:
- Scheduled maintenance and planned downtime windows
- Incident notifications (degraded performance, partial outages)
- Policy reminders (acceptable use, data handling, retention)
- Major changes (new models, feature rollouts, UI changes)
- Links to your internal comms channels for updates and Q&A
Tip: Keep banners concise and link to more detailed information (status page, release notes, support channel).
Configuring bannersβ
Option 1: Using the Admin Panelβ
This is the most straightforward way to manage banners:
- Log in to your Open WebUI instance as an administrator.
- Navigate to Admin Panel β Settings β General.
- Locate the Banners section.
- Click the + icon to add a new banner.
- Click Save to apply your changes.
You can configure the following options for each banner:
- Type: The color and style of the banner:
info(Blue)success(Green)warning(Yellow)error(Red)
- Title: The main heading of the banner.
- Content: The main message (HTML only).
- Dismissible: If enabled, users can close the banner.
How dismissing worksβ
Dismissed banners are stored in the userβs browser (client-side). This means:
- A dismissed banner may reappear if the user clears site data / cache
- A dismissed banner may reappear on a different device or browser
- Dismissal is per-banner
id(if theidchanges, the banner is treated as new)
If you need the banner to remain visible for everyone, set dismissible: false.
Option 2: Using environment variables (WEBUI_BANNERS)β
For automated deployments, configure banners using the WEBUI_BANNERS environment variable. The value must be a JSON string representing a list (array) of banner objects.
Environment variable:
WEBUI_BANNERS- Type:
string(containing a JSON list of objects) - Default:
[] - Description: A list of banner objects to be displayed to users
- Type:
Example (Docker Compose)β
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
environment:
- 'WEBUI_BANNERS=[{"id":"maintenance-2026-03","type":"warning","title":"Maintenance","content":"A maintenance window is planned this week. Expect brief interruptions. <a href=\"https://intranet.example.com/status\" target=\"_blank\">See status page</a>.","dismissible":true,"timestamp":1772500000}]'
Note: Because
WEBUI_BANNERSis a JSON string inside YAML, you must ensure it remains valid JSON (see "Common pitfalls" below).
Banner object propertiesβ
Each banner object supports the following properties:
id(string, required): Unique identifier for the banner. Used to track whether a user has dismissed it.type(string, required): Banner style. Must be one of:info,success,warning,error.title(string, optional): Title text.content(string, required): Main banner message (HTML only).dismissible(boolean, required): Whether the user can dismiss the banner.timestamp(integer, required): Present in configuration, but currently not used by the frontend to control display timing.
Recommended id strategy (important)β
Pick an id format that supports safe updates and avoids accidental re-showing or permanent hiding:
- Stable
idfor small text edits:policy-reminder - Versioned
idfor "show again to everyone" updates:incident-2026-03-06-v2 - Time-bucketed
idfor recurring events:maintenance-2026-03
If users dismissed a banner and you want them to see an updated message, change the id.
Supported content formatting (HTML only)β
Banner title and content support a subset of HTML only β Markdown syntax is not rendered. Unsupported tags may render as plain text or break the layout.
Text formattingβ
| HTML | Effect |
|---|---|
<b> / <strong> | Bold |
<i> / <em> | Italic |
<u> | Underline |
<s> / <del> | Strikethrough |
<mark> | Highlight |
<small> | Slightly smaller text |
<sub> / <sup> | Subscript / Superscript |
<code> / <kbd> | Monospace inline code |
<abbr title="tooltip"> | Hover tooltip |
Structureβ
| HTML | Effect |
|---|---|
<br> or literal newlines | Line break |
<hr> | Horizontal rule |
<details><summary>Click</summary>...</details> | Collapsible section |
Links & mediaβ
| HTML | Effect |
|---|---|
<a href="..." target="_blank"> | Clickable link |
<img src="..." width="16" height="16"> | Inline image |
Custom stylingβ
Inline styles are supported on allowed tags:
<span style="color: #b91c1c;">Colored text</span>
<span style="font-weight: 600;">Heavier weight</span>
<span style="background: linear-gradient(90deg,#e0f2fe,#fef9c3);">Gradient background</span>
Keep styling minimal. Overly large padding, font sizes, or complex layouts can cause banners to become tall or visually inconsistent across themes.
Unsupported contentβ
The following are not supported in banners and may render as plain text or break the layout:
- Headings (
<h1>β<h6>) - Lists (
<ul>,<ol>) - Tables
- Blockquotes
- Markdown syntax
If you need "list-like" content, use short lines separated by <br>.
Common pitfalls (and how to avoid them)β
1) Unexpected spacing from literal newlinesβ
Banner content treats literal newlines as line breaks. If you paste nicely formatted/indented HTML with many line breaks, the banner may appear much taller than expected.
Recommendation:
- Use
<br>deliberately, and keep the raw HTML relatively compact. - Avoid adding blank lines unless you truly want extra spacing.
2) Broken links in banner contentβ
If a link appears "broken" or the rest of the banner becomes clickable, itβs usually due to invalid HTML.
Use this exact pattern:
<a href="https://example.com" target="_blank">Open link</a>
Recommendations:
- Always close anchor tags with
</a>. - Use
target="_blank"(underscore included). - If your URL contains query parameters, escape
&as&inside thehrefattribute:<a href="https://example.com/page?x=1&y=2" target="_blank">Example</a> - If you need guaranteed underlining, wrap link text with
<u>:<a href="https://example.com" target="_blank"><u>Support</u></a>
3) JSON/YAML escaping issues in WEBUI_BANNERSβ
When using WEBUI_BANNERS, you are embedding JSON inside a YAML string (or a shell string). Common problems include:
- Unescaped double quotes inside the JSON
- Line breaks inserted into the JSON string
- Copy/paste "smart quotes" (typographic quotes) instead of normal
"
Recommendations:
- Validate the JSON in a JSON validator before deploying.
- Keep
contentstrings simple; avoid unescaped"characters. - Prefer using
\"for quotes inside JSON strings if needed. - Check server logs if the banner does not appear.
4) Overusing <small>β
<small> is useful for secondary text, but wrapping large parts of the banner in <small> can make content hard to read.
Recommendation: Use normal text for the main message and reserve <small> for less important details.
5) External imagesβ
Images can be embedded via <img>, but external images may:
- Fail to load due to network restrictions
- Create inconsistent sizes across devices if not constrained
- Introduce privacy/security concerns if loaded from third-party domains
Recommendations:
- Prefer internal/static assets when possible.
- Always set explicit
widthandheight. - Keep icons small (e.g., 16Γ16) to avoid increasing banner height.
Reusable patterns (copy/paste snippets)β
Pattern: Minimal two-line announcement with a linkβ
<b>Notice</b><br>
Service updates: <a href="https://example.com/status" target="_blank"><u>Status page</u></a>
Pattern: Compact "label" chip (date/impact tag)β
<span style="display:inline-block;background:#fff3cd;color:#664d03;padding:2px 8px;border-radius:999px;">
Scheduled
</span>
Pattern: Collapsible details (keep banners short)β
<b>Planned update</b><br>
<details>
<summary>More details</summary>
<br>
This update may cause brief interruptions during the deployment window.
</details>
Operational best practicesβ
Keep banners scannableβ
A good banner is typically:
- A short title
- One sentence describing the situation
- One link for details and one link for questions (if needed)
Use banner types consistentlyβ
To reduce alert fatigue, consider a consistent mapping:
info: general announcementssuccess: completed changes / resolved incidentswarning: planned maintenance or partial degradationerror: active incident / outage
Remove expired bannersβ
If you keep adding banners without removing old ones, users may ignore them. Remove or replace banners after the event is over.
Troubleshootingβ
Banner not appearingβ
- Ensure
WEBUI_BANNERSis a valid JSON array of objects (not a single object). - Check the server logs for parsing errors related to
WEBUI_BANNERS. - If using Admin Panel, confirm you clicked Save.
Banner cannot be dismissedβ
- Verify that
dismissibleis set totrue. - If
dismissibleisfalse, the banner is intentionally always visible.
Banner layout looks broken or too tallβ
- Remove extra blank lines and indentation from the raw HTML.
- Avoid unsupported HTML (lists, tables, headings).
- Reduce aggressive inline styles (large
padding, largefont-size).
FAQβ
Can I use Markdown in banner content?β
No. Banner content supports HTML only. Markdown syntax is not rendered.
Does timestamp control when a banner shows?β
No. The timestamp field is currently not used by the frontend to control whether a banner is displayed. If you need time-based behavior, manage it via your deployment automation (add/remove banners on a schedule).
Can I show content in multiple languages?β
Yes. You can include multiple languages in content. If you want to keep the banner short, place the secondary language in a <details> block.