Overview
Mastodon's design is built on a family of purples called Blurple, from a bright #552cfb down to a near-black eggplant #17063b. It is friendly, slightly playful and distinctly not a blue social network. Surfaces are tinted lavender rather than neutral gray, which keeps the whole product on-brand. [Measured]
Three decisions define the look:
- One brand family, tuned per platform. The iOS brand color is
#552cfb(lightening to#858afain dark mode), the website uses#6364ff, and the Android app derives a full Material 3 palette from#4000dd. The follow button uses a deeper#563acc. [Measured] - Lavender tints for structure. Soft backgrounds are
#f0f1ffand#e0e3ffin light mode and#261e48and#3d317cin dark mode, used for chips, banners and cards. [Measured] - Heavy, round type on the web. The site uses Manrope with weights up to 800 and a custom
450body weight. [Measured]
Source for this file: the public Android and iOS repositories and joinmastodon.org, read on 2026-10-06. No on-device capture was done. See Known Gaps.
Core
Colors
| Role | Light | Dark |
|---|---|---|
| Brand (iOS) | #552cfb | #858afa |
| Brand (website) | #6364ff | n/a |
| Follow and primary button | #563acc | #6364ff |
| Dark brand | #2f0c7a | |
| Eggplant | #17063b | |
| Soft brand fill | #e0e3ff | #3d317c |
| Softest brand fill | #f0f1ff | #261e48 |
| Secondary text | #545473 | #b2b0c7 |
| Secondary fill | #f5f5fa | #333345 |
| Inverted fill | #171721 | #f5f5fa |
| Danger base | #9e0812 | |
| Blocked | #ff3b30 | |
| Success soft | #f0fdf4 | #032e15 |
| Warning soft | #fef3c6 | #7b3306 |
| Disabled and inactive | #9baec8, #6e828c | #4f5d64 |
| Favorite star (Android) | #e89a00 | #ffb014 |
Android Material 3 roles: primary #4000dd, on primary #ffffff, primary container #ebddff, secondary #5d51af, surface and background #fcf8ff, on surface #1c1a25, surface variant #e5dff6, outline #787588, error #ba1a1a. Dark: primary #c7bfff, primary container #4d1af4, surface #13121d, on surface #e5e0f0, surface variant #474557. All [Measured].
Typography
- Website: Manrope with a system fallback. Sizes include
0.75remto4.25rem, weights of 450, 500, 600, 700 and 800, and a mono stack for code. [Measured] - iOS: the system font for the interface. A display font, Staatliches, is bundled as an asset, so it is likely used for a few headings. [Measured] Where it appears was not confirmed.
- Android: the Material 3 type scale on the system sans. [Inferred]
Shape and spacing
- Website radii:
.125rem,.25rem,.375rem,.5rem,.75rem,1rem, pill and circle. The most common is.375rem. [Measured] - Android: Material 3 shape scale. [Inferred]
- Website gutter is
1rem, and the header is5.625remtall. [Measured] - Shadows are soft, with thin ring outlines. [Measured]
Iconography and motion
Android uses the Material 3 motion easings, including emphasized (cubic-bezier(0.3, 0, 0.8, 0.2) accelerate, (0.1, 0.7, 0.1, 1) decelerate), standard (0.2, 0, 0, 1) and legacy (0.4, 0, 0.2, 1). [Measured] Icons are simple glyphs in the text or brand color. [Inferred]
Themes
Light and dark on both apps, plus Android dynamic color variants (separate color files exist for Android 8.1, 12, 13 and 14). [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 stack behavior is expected. [Inferred]
Primary navigation
Expected on iOS: bottom tab bar, about five items.
A bottom tab bar. The common structure for the app is Home, Search, Notifications and Profile, with a Compose entry. Not verified in the files read. [Inferred]
Main action
Expected on iOS: nav bar or bottom bar button.
Composing a post is a bar button or tab entry, not a floating button. [Inferred]
Sheets, dialogs and messages
Expected on iOS: action sheets, alerts, modals.
Standard sheets and alerts, with dedicated tokens for poll borders and search cards. [Measured]
Controls
Expected on iOS: Cupertino switches, pickers, segmented controls.
Custom buttons for follow states: follow #563acc, following #552cfb at 15 percent (dark #6364ff at 30 percent), blocked #ff3b30, tag follow and unfollow inverted pairs. [Measured]
Text sizing
Expected on iOS: Dynamic Type.
Not verified. [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. [Inferred]
Icons
Expected on iOS: SF Symbols or custom.
A mix of custom assets and system symbols. [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 choosing a server and logging into a Mastodon account, which is the app's own account system. Account deletion is handled on the user's server. [Inferred] Checked: 2026-10-06 against source and general knowledge only.
Platform conformance
Expected on iOS: system components and Dynamic Type.
The app keeps iOS navigation and adds its own purple token set, including per-state follow buttons. [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.
Standard system back and top app bars. [Inferred]
Primary navigation
Expected on Android: navigation bar, rail on tablets.
A bottom navigation bar for the main areas. A dark navigation bar background #282c37 exists for the light theme. [Measured]
Main action
Expected on Android: floating action button.
A compose action is expected as a floating action button. Not verified. [Inferred]
Sheets, dialogs and messages
Expected on Android: bottom sheets, dialogs, snackbars.
Material 3 dialogs, sheets and snackbars with the Mastodon palette. [Inferred]
Controls
Expected on Android: Material switches, pickers, chips.
Material 3 widgets. [Inferred]
Text sizing
Expected on Android: font scale.
Not verified. [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.
Not verified. [Inferred]
Account and sign-in rules
Expected on Android: account deletion and data safety requirements. Note the date checked.
Server-based Mastodon accounts. Deletion happens on the user's server. [Inferred] Checked: 2026-10-06 against source only.
Platform conformance
Expected on Android: Material 3 components and roles.
Closely follows Material 3. The palette is a full Material 3 scheme generated from the brand color, with light, dark and medium-contrast and high-contrast variants for the favorite star, plus dynamic color support. This is the most platform-faithful of the three. [Measured]
Platform: Web
The joinmastodon.org 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.
A 5.625rem tall header. [Measured]
Main action
Expected on Web: page-level button.
Join and Get the app buttons in the brand purple. [Inferred]
Sheets, dialogs and messages
Expected on Web: modals, toasts.
Not a feature of the marketing site. [Inferred]
Controls
Expected on Web: native or custom.
Custom web controls. [Inferred]
Text sizing
Expected on Web: browser zoom.
Sizes are in rem. [Measured]
Touch and pointer targets
Expected on Web: pointer and keyboard.
Not verified. [Inferred]
Insets and system bars
Expected on Web: viewport, scrollbars.
Responsive at 640, 768, 1024, 1280 and 1536px. [Measured]
Icons
Expected on Web: any.
SVG icons. [Inferred]
Account and sign-in rules
Expected on Web: not applicable unless the product has accounts.
The site is informational and sends people to a server of their choice. [Inferred]
Platform conformance
Expected on Web: web norms for links and forms.
Follows web norms with a purple brand and Manrope. [Measured]
Cross-platform consistency
The purple family, the soft lavender tints, and the friendly tone are consistent. Exact brand hex values differ per platform, and the Android palette is generated from Material 3 rules while iOS uses a hand-built token set. [Measured]
Do's and Don'ts
Do
- Anchor everything on Blurple and use deeper
#563accfor follow actions. - Use lavender tints (
#f0f1ff,#e0e3ff) for soft surfaces. - On Android, derive colors from Material 3 roles and support dynamic color.
- On the web, use Manrope with heavy headings.
- Show follow state with distinct button styles for follow, following and blocked.
Don't
- Don't use neutral grays for surfaces. Keep a lavender tint.
- Don't use a single hex for the brand across platforms. Use each platform's role.
- Don't mix the website's
#6364ffinto native app chrome without checking contrast.
Known Gaps
- No on-device capture was done. All app statements come from reading source, so layouts and behavior are not confirmed.
- Android shapes, type scale and spacing were assumed to be standard Material 3 and were not read.
- iOS typography, radii, spacing and tab structure were not extracted.
- The navigation structure of both apps is inferred from product knowledge.
- The font Staatliches is bundled on iOS but its use was not confirmed.
- Account deletion and store policy rules were not verified.