Overview
Signal is the private messenger from the Signal Foundation. Its design leaves things out on purpose: one blue, a plain gray ladder and platform-native structure. [Observed]
What defines the look:
- One blue. Ultramarine
#2c6bedis the button, link and selected color on Android and web, and iOS uses#2267f5in light and#2d70fain dark. [Measured] - A named gray ladder. Android has greys from
#f6f6f6to#121212in steps of about five percent (core_grey_02tocore_grey_95). [Measured] - Plain structure. Lists, toolbars and sheets follow each platform's conventions with few custom components. [Inferred]
- Color as a feature. Conversation and chat colors, wallpapers and ultramarine variants are the only expressive elements. [Observed]
Source for this file: the public Android and iOS repositories and the signal.org stylesheet, read on 2026-10-06. No on-device capture was done. See Known Gaps.
Core
Colors
| Role | Light | Dark | Where |
|---|---|---|---|
| Primary and button | #2c6bed Android, #2267f5 iOS | #6191f3 Android, #2d70fa iOS | Android core colors, iOS palette |
| Primary dark and pressed | #1851b4 | not read | Android |
| Primary icon | #3a76f0 | not read | Android |
| Text on primary | #ffffff | not read | Android |
| Secondary button fill | #e9e9e9 | #3b3b3b | Android |
| Secondary button text | #2c6bed | not read | Android |
| Page background | #ffffff (surface roles) | #1b1b1b for tertiary | Android |
| Tertiary background | #f6f6f6 | #1b1b1b | Android |
| Divider minor and major | #d4d4d4, #b9b9b9 | #3b3b3b minor | Android |
| Hint text | #848484 | not read | Android |
| Red | #f44336 Android, #ff3b30 iOS | #ff453a iOS | |
| Green | #4caf50 Android, #34c759 iOS | #30d158 iOS | |
| Yellow | #ffd624 Android, #ffcc00 iOS | #ffd60a iOS | |
| Website text and surfaces | #14161a, #1f2229, border #d6d9e0 | signal.org |
The iOS palette also defines a high contrast variant of each color, for example #0a43b9 for ultramarine in light and #5d92ff in dark. [Measured] Android core surface roles (colorSurface and friends) come from a Material 3 color scheme file whose values were not all read. All other values are [Measured].
Typography
The website uses Inter at 400, 500, 600 and 800 with sizes of 16, 18, 20px and rem steps up to 3rem, and a monospace stack for code. [Measured] The Android app ships its own typeface helper but its default text uses the system font and Material roles. [Inferred] iOS uses the system font through text styles. [Inferred]
Shape and spacing
Android bottom sheets use an 18dp corner. [Measured] Button and bubble radii were not read. A 4 and 8 spacing scale is expected. [Inferred]
Iconography and motion
Simple outline icons that take the primary or secondary text color, with the selected tab icon in the primary text color rather than blue. [Measured from tint role names] Motion values were not measured.
Themes
Light, dark and system on both apps, plus high contrast color variants on iOS and chat color and wallpaper choices on both. [Measured]
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 with the interactive swipe-back gesture. [Inferred]
Primary navigation
Expected on iOS: Bottom tab bar, about five items.
A tab-like home with chats, calls and stories entries. The exact tab set depends on the app version and was not confirmed. [Inferred]
Main action
Expected on iOS: Nav bar or bottom bar button.
A compose button in the navigation bar. [Inferred]
Sheets, dialogs and messages
Expected on iOS: Action sheets, alerts, modals.
Action sheets and alerts with themed colors, plus custom bottom sheets. [Inferred]
Controls
Expected on iOS: Cupertino switches, pickers, segmented controls.
Standard iOS switches and pickers with the ultramarine tint. [Inferred]
Text sizing
Expected on iOS: Dynamic Type.
Fonts are defined through text styles in the font extension files, which supports Dynamic Type. [Measured for the files, Inferred for behavior]
Touch and pointer targets
Expected on iOS: 44pt minimum.
Not verified. [Inferred]
Insets and system bars
Expected on iOS: Safe areas, status bar.
Not verified. [Inferred]
Icons
Expected on iOS: SF Symbols or custom.
A mix of SF Symbols-style and custom glyphs through a theme icon extension. [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 is by phone number. No third-party login, so Guideline 4.8 is likely not triggered. Account deletion was not checked. [Inferred] Checked: 2026-10-06 against source only.
Platform conformance
Expected on iOS: For each important component: what iOS expects, what this app does, and why it deviates.
Close to the iOS look with a custom color theme for light, dark and high contrast. [Observed]
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, an up arrow in the toolbar. [Inferred]
Primary navigation
Expected on Android: Navigation bar, rail on tablets.
A bottom navigation bar (chats, calls, stories) with the selected icon in the primary text color. [Measured for the tab tint roles, Inferred for the set]
Main action
Expected on Android: Floating action button.
A floating compose button is expected on the chat list. It was not confirmed in source. [Inferred]
Sheets, dialogs and messages
Expected on Android: Bottom sheets, dialogs, snackbars.
Material bottom sheets with an 18dp corner and Material dialogs. [Measured]
Controls
Expected on Android: Material switches, pickers, chips.
Material 3 controls with ultramarine as the primary role. [Inferred]
Text sizing
Expected on Android: Font scale.
Android text uses sp, so it follows the system font scale. [Inferred]
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 tinted by role (primary, secondary, action). [Measured]
Account and sign-in rules
Expected on Android: Account deletion and data safety requirements. Note the date checked.
Phone number sign-in. Account deletion and the data safety form were not checked. [Inferred] Checked: 2026-10-06 against source only.
Platform conformance
Expected on Android: For each important component: what Android expects, what this app does, and why it deviates.
Material 3 with a role-named color layer (signal_background_primary, signal_text_primary and so on) mapped onto the Material scheme. [Measured]
Platform: Web
The signal.org website and its stylesheet. The desktop client was not measured.
Back and up navigation
Expected on Web: Browser back, breadcrumbs.
Browser back and top navigation. [Inferred]
Primary navigation
Expected on Web: Top nav or sidebar.
A top navigation bar. [Inferred]
Main action
Expected on Web: Page-level button.
A download button for the app. [Inferred]
Sheets, dialogs and messages
Expected on Web: Modals, toasts.
Not measured. [Inferred]
Controls
Expected on Web: Native or custom.
Not measured. [Inferred]
Text sizing
Expected on Web: Browser zoom.
Sizes use rem and px, so they follow the browser root size in part. [Measured]
Touch and pointer targets
Expected on Web: Pointer and keyboard.
Not verified. [Inferred]
Insets and system bars
Expected on Web: Viewport, scrollbars.
Not measured. [Inferred]
Icons
Expected on Web: Any.
Not measured. [Inferred]
Account and sign-in rules
Expected on Web: Not applicable unless the product has accounts.
Not applicable. [Inferred]
Platform conformance
Expected on Web: For each important component: what the web norm is, what this app does, and why it deviates.
A light and dark site, using the same #2c6bed and #1851b4 blues as the apps. [Measured]
Cross-platform consistency
Consistent across platforms: one ultramarine, a gray ladder, light and dark themes, plain structure. [Measured]
Intentionally different: iOS uses a brighter blue and native navigation, Android uses Material components and the website uses Inter. [Measured]
Do's and Don'ts
Do
- Use one blue for every action and link.
- Use the gray ladder for surfaces and dividers instead of tinted colors.
- Keep the selected tab in the text color and reserve blue for actions.
- Offer high contrast variants.
Don't
- Don't add a second accent color to the chrome.
- Don't use the lighter blue
#6191f3on white backgrounds. - Don't decorate with gradients. Color lives in conversations.
Known Gaps
- No on-device capture was done. All statements come from reading source and a stylesheet.
- Android surface and on-surface values come from a Material 3 scheme file that was not read in full, so surface hex values are listed as white and the gray ladder.
- The ultramarine
#2c6bedagainst white measures about 4.7 to 1, close to the 4.5 to 1 limit, and the lighter dark-mode blue was not checked. - Corner radii for buttons and bubbles, spacing and motion were not measured.
- Account deletion and store policy rules were not verified for either app.