Overview
Bitwarden's interface is built to feel safe and unfussy. A single confident blue carries every action, cool blue-gray surfaces keep screens quiet, and rounded shapes keep a security product approachable. The most distinctive detail is typographic: secrets (passwords, codes) are set in a monospace face with wide letter spacing, while everything else is DM Sans. [Measured]
Three decisions define the look:
- One action blue, lighter in dark mode. Buttons, links, selected icons, sliders and focus borders are all
#175ddcin light mode and#65abffin dark mode. Text on a filled button flips from white to the dark surface color. [Measured] - Named color roles, shared across platforms. The iOS color assets (
buttonFilledBackground,textPrimary,strokeDivider,badgeSuccessTextand so on) match the website's primary and secondary scales, so one vocabulary covers app and site. [Measured] - Status is communicated by soft tinted badges. Success, danger, warning and info each have a tinted background, a border and a dark text color, with separate dark-mode values. [Measured]
Source for this file: the public Android and iOS repositories and the bitwarden.com stylesheets, read on 2026-10-06. No on-device capture was done. See Known Gaps.
Core
Colors
| Role | Light | Dark |
|---|---|---|
| Primary action, links, icons | #175ddc | #65abff |
| Text primary | #1b2029 | #f3f6f9 |
| Text secondary | #5a6d91 | #8898b5 |
| Text disabled | #96a3bb | #96a3bb |
| Background (page) | #f3f6f9 | #121a27 |
| Background (cards, sheets) | #ffffff | #202733 |
| Background tertiary | #dbe5f6 | #303946 |
| Divider | #d3d9e3 | #525b6a |
| Slider track | #e6e9ef | #525b6a |
| Danger | #c10007 | #ff4e63 |
| Error text | #cb263a | #ff4e63 |
| Strong (success) | #0c8018 | #6bf178 |
| Weak (warning) | #ac5800 | #ffbf00 |
| Code blue and code pink | #175ddc, #c01176 | #65abff, #ff8fd0 |
| Deep brand navy (illustration outline) | #020f66 | #175ddc |
Status badges: success #f0fdf4 fill, #b9f8cf border, #08540f text. Danger #fef2f2, #ffc9c9, #951b2a. Warning #fff8f1, #fcd9bd, #b23300. Info #eef6ff, #bedbff, #1a41ac. Dark mode swaps in deep tints (for example success #032e15 fill). All values are [Measured] from the iOS color assets and the website tokens.
Typography
DM Sans for everything except secrets. [Measured]
Android scale (size over line height, in sp): display 56/64, 44/52, 36/44. Headline 32/40, 28/36, 18/22. Title 24/28, 19/28, 16/20, 14/18. Body 15/20, 13/18, 12/16. Label 14/20 and 12/16. Weights are 600 for display, headline and title, 400 for body, and 700 for emphasis variants. Letter spacing is 0.
Sensitive information (passwords, codes) uses Roboto Mono at 14/20 or 16/24 with 0.5 letter spacing, so characters are easy to tell apart. [Measured]
iOS ships DM Sans Regular, SemiBold, Bold and italics as bundled fonts. [Measured] The website uses Inter Variable as its default font. [Measured]
Shape and spacing
Rounded and friendly, with graded radii. [Measured from the Android shape set]
- Buttons, floating action button, segmented control and progress indicators are fully round.
- Content blocks and info callouts:
8dp. Grouped rows use rounded top and bottom ends with square middle rows. - Action cards and badges:
12dp. Menus:4dp. - Bottom sheets:
24dpon the top corners. Dialogs:28dp. - Rows are square-edged.
The website uses a base spacing of .25rem and radii from .25rem to 2rem.
Iconography and motion
Icons are tinted with the primary or secondary text roles: iconPrimary #5a6d91, iconSecondary and the selected state #175ddc. [Measured] Motion values were not extracted. [Inferred]
Themes
Light, dark and a follow-system setting on mobile. [Measured] Dark mode keeps the same structure with a deep navy page #121a27 and lighter blue accent.
Platform: iOS
How the iOS app looks and behaves. Items come from public source files.
Back and up navigation
Expected on iOS: chevron plus previous title, swipe from the left edge.
Standard navigation controller behavior is expected. [Inferred] Not verified on a device.
Primary navigation
Expected on iOS: bottom tab bar, about five items.
A bottom tab bar with a brand tab-inactive color is part of the asset set. The usual Bitwarden tabs are Vault, Send, Generator and Settings. [Inferred]
Main action
Expected on iOS: nav bar or bottom bar button.
Adding an item sits in the navigation bar rather than a floating button. [Inferred]
Sheets, dialogs and messages
Expected on iOS: action sheets, alerts, modals.
An alert background color (#020f66) and a loading overlay with blue, green, orange and red states exist in the assets. [Measured] Standard action sheets and alerts are expected. [Inferred]
Controls
Expected on iOS: Cupertino switches, pickers, segmented controls.
Custom-styled controls tinted by the color roles: filled and outlined buttons, sliders (#175ddc filled), a segmented navigation stroke color. [Measured]
Text sizing
Expected on iOS: Dynamic Type.
Not verified. A custom font (DM Sans) is bundled, so scaling depends on how fonts are scaled in code. [Inferred]
Touch and pointer targets
Expected on iOS: 44pt minimum.
Not verified. [Inferred]
Insets and system bars
Expected on iOS: safe areas, status bar.
Standard handling. A splash background and tint are defined. [Measured]
Icons
Expected on iOS: SF Symbols or custom.
A custom icon set. [Inferred]
Account and sign-in rules
Expected on iOS: equivalent login option when third-party sign-in exists (Guideline 4.8) and in-app account deletion. Note the date checked.
Sign-in uses a Bitwarden account (email and master password) with optional enterprise single sign-on, which is generally outside Guideline 4.8. Account deletion is available in the app. [Inferred] Checked: 2026-10-06 against source and general knowledge only.
Platform conformance
Expected on iOS: system components and Dynamic Type.
Mostly custom: the app brings its own colors, fonts and control styling and keeps iOS navigation structure. [Inferred]
Platform: Android
How the Android app looks and behaves. Items come from public source files.
Back and up navigation
Expected on Android: system back and gesture, up arrow in the top bar.
System back plus a custom top app bar with its own colors. [Measured]
Primary navigation
Expected on Android: navigation bar, rail on tablets.
A bottom navigation bar for the main areas (Vault, Send, Generator, Settings). Not verified in the files read. [Inferred]
Main action
Expected on Android: floating action button.
Floating action buttons exist as a component, including an expandable one with menu items (fabItem radius 12dp). The FAB is a circle. [Measured]
Sheets, dialogs and messages
Expected on Android: bottom sheets, dialogs, snackbars.
Bottom sheets with 24dp top corners, dialogs with 28dp corners, snackbars with 8dp corners. [Measured]
Controls
Expected on Android: Material switches, pickers, chips.
Custom Bitwarden components: filled, outlined and icon buttons with their own color classes, segmented controls (fully round), progress indicators (round). [Measured]
Text sizing
Expected on Android: font scale.
Sizes are in sp, so system font scale applies. [Measured]
Touch and pointer targets
Expected on Android: 48dp minimum.
Not verified. [Inferred]
Insets and system bars
Expected on Android: edge to edge, system bars.
Not verified. [Inferred]
Icons
Expected on Android: Material Symbols or custom.
Custom vector icons. [Inferred]
Account and sign-in rules
Expected on Android: account deletion and data safety requirements. Note the date checked.
Bitwarden account with optional single sign-on. Account deletion and the data safety form were not checked. [Inferred] Checked: 2026-10-06 against source only.
Platform conformance
Expected on Android: Material 3 components and roles.
Uses Material as a base but replaces the color scheme, shapes (pill buttons, 28dp dialogs) and typography with its own. The look is Bitwarden's first and Material's second. [Measured]
Platform: Web
The bitwarden.com marketing site.
Back and up navigation
Expected on Web: browser back, breadcrumbs.
Browser back and a persistent header. [Inferred]
Primary navigation
Expected on Web: top nav or sidebar.
Top navigation with product menus. [Inferred]
Main action
Expected on Web: page-level button.
Primary call-to-action buttons in the brand blue. [Inferred]
Sheets, dialogs and messages
Expected on Web: modals, toasts.
A search overlay with a 44px input height and a panel up to 650px. [Measured]
Controls
Expected on Web: native or custom.
Custom-styled controls. [Inferred]
Text sizing
Expected on Web: browser zoom.
Sizes are in rem (.75rem to 8rem), so browser font size applies. [Measured]
Touch and pointer targets
Expected on Web: pointer and keyboard.
Not verified. [Inferred]
Insets and system bars
Expected on Web: viewport, scrollbars.
Responsive with a 96rem maximum breakpoint. [Measured]
Icons
Expected on Web: any.
A custom icon font (bwi-font) and a brands font. [Measured]
Account and sign-in rules
Expected on Web: not applicable unless the product has accounts.
The marketing site links to the web vault, which is a separate app. [Inferred]
Platform conformance
Expected on Web: web norms for links and forms.
Follows web norms. The palette uses the same primary and secondary scales as the apps: #175ddc, #1a41ac, #020f66, #dbe5f6 and a gray-blue ladder from #f3f6f9 to #0a171f. [Measured]
Cross-platform consistency
The same blue, the same named color roles, DM Sans on the apps, and the same rounded personality hold across platforms. [Measured]
Differences: the website uses Inter while the apps use DM Sans. The Android shape set is precise and graded, while iOS shape values were not extracted. Floating action buttons are an Android pattern, not an iOS one. [Measured]
Do's and Don'ts
Do
- Use
#175ddcfor every action and lighten it to#65abffin dark mode. - Set secrets in a monospace face with
0.5letter spacing. - Use pill buttons,
8dpcontent blocks and28dpdialogs. - Communicate status with tinted badges that have a background, border and dark text.
- Keep surfaces cool blue-gray, never warm.
Don't
- Don't use a second brand color for actions.
- Don't put passwords in a proportional font.
- Don't use heavy shadows. Separation comes from fills and dividers.
- Don't let dark mode reuse the light blue. Use the lighter
#65abff.
Known Gaps
- No on-device capture was done. All app statements come from reading source, so layouts, spacing and behavior in context are not confirmed.
- Android color values were not read directly. The iOS color assets and website tokens were used, on the assumption that Android uses the same roles.
- iOS typography scale, corner radii and spacing were not extracted. Only colors, fonts and asset names were read.
- The tab bar items and the navigation structure on both apps are inferred from product knowledge, not from source.
- Account deletion and store policy rules were not verified.