Overview
Wikipedia is an encyclopedia product where the content is the interface. The design system, shared by the website and the iOS and Android apps, is built to disappear: dark ink on white paper, one blue for everything you can act on, and gray rules for structure. [Measured]
Three decisions define the look:
- One action color. A single blue,
#3366cc, marks links, primary buttons and selected states on all three platforms. Hover and pressed states darken it to#3056a9and#233566. [Measured] - Serif for the subject, sans for the tool. Article titles use a serif stack (Linux Libertine, then Georgia) while all interface text is plain sans. The Android styles set article headings to
serifand the iOS font set includes Georgia title styles. [Measured] - Reading themes are part of the system. Both mobile apps ship Light, Sepia, Dark and Black themes built from one shared palette, because people read long articles for long periods. [Measured]
The palette and tokens are shared across platforms: the Android color blue600 and the web token color-progressive are the same #3366cc, and gray700 and color-base are the same #202122. [Measured]
Sources for this file: the public Android and iOS repositories and the published Codex design tokens, read on 2026-10-06, then the running Android app measured on an Android phone on 2026-10-07. The device capture replaces several source values that the shipping build no longer matches, and those differences are listed in Known Gaps. iOS was not captured. [Measured]
Core
What holds on every platform.
Colors
A neutral gray ladder plus one blue. [Measured]
| Role | Value | Notes |
|---|---|---|
| Ink (primary text) | #202122 | Web color-base, Android gray700 |
| Subtle text | #54595d | Secondary text, icons |
| Placeholder | #72777d | Hints, empty fields |
| Disabled | #a2a9b1 | Also the default border |
| Border subtle | #c8ccd1 | Inputs, dividers |
| Hairline | #eaecf0 | Lightest rule, neutral fills |
| Canvas | #f8f9fa | Page background behind paper |
| Paper | #ffffff | Article and card surface |
| Progressive (action) | #3366cc | Links, primary buttons, focus |
| Progressive hover and active | #3056a9, #233566 | |
| Progressive subtle | #e8eeff | Selected rows, hint banners |
| Destructive | #bf3c2c | Web token. Android uses #b32424 for its error red |
| Success | #177860 | |
| Warning | #886425 |
Accent hues for avatars and categories: green #00af89, yellow #ffcc33, orange #ff9500, purple #534fa3, pink #82456a, maroon #854848. [Measured]
Typography
Two voices. [Measured]
- Sans (interface): system sans on mobile (
sans-serifon Android, the system font through Dynamic Type on iOS) and a Helvetica-first stack on the web:'Helvetica Neue', 'Helvetica', 'Liberation Sans', 'Arial'. Web also defines a system stack starting with-apple-system. - Serif (articles):
'Linux Libertine', 'Georgia', 'Times', 'Source Serif 4'on the web;serifon Android article headings; Georgia title styles on iOS.
Android scale (sp): H1 24 bold, H2 20 bold, H3 16 bold, H4 14 bold, H5 12 bold, body 16 regular. Line heights are 32, 28, 24, 24, 18 and 24, and article body text uses 28. [Measured]
Web scale (Codex): 12, 14, 16, 18, 20, 24 and 28px, with line heights from 20px to 38px and a content line height of 1.625. Weights are 400, 600 and 700. [Measured]
Shape and spacing
Corners are nearly square. [Measured]
- Web base radius is
2px, with0for sharp and9999pxfor pills. - Android control styles define
4dpand2dp, and12dpfor the article card. [Measured] - Web spacing scale in px: 1, 2, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 64.
- Android spacing:
8dpbase margin,16dpscreen and list padding. [Measured]
The near-square rule no longer holds across the whole Android app. The shipping build draws several surfaces at a large radius: the home feed banner measured 23.5dp, the search field reads as a pill at about 21dp on a 48dp field, and the language chip is a strongly rounded rectangle. Near-square corners survive on the smaller controls. [Measured on a device]
Elevation is shown with thin rules rather than shadows. Web defines a 1px ring in #a2a9b1 for small elevation, and medium and large shadows at 6 percent black. On Android no shadow renders under the top bar, at rest or with content scrolled beneath it; the navigation bar is separated from content by a 1px hairline instead. [Measured on a device]
Iconography and motion
Icons are simple line glyphs in the subtle ink color, with the progressive blue for the selected tab. Android uses selected and unselected tab icon variants; iOS ships tab bar icons for explore, nearby, save and recent. [Measured] Motion is minimal and functional. Link preview thumbnails scale to 1.03 on press and 1.05 when over-pressed on Android. [Measured]
Themes
Four reading themes on mobile, built from the same palette. [Measured]
Light and Sepia are as the source describes them. Dark and Black were measured on the device and differ from the source values, so the measured ones are used here.
| Theme | Page (paper) | Chrome and bars | Inset fields | Text | Link |
|---|---|---|---|---|---|
| Light | #ffffff | #ffffff | #f8f9fa | #202122 | #3366cc |
| Sepia | #f8f1e3 | #f8f1e3 | #f0e6d6 | #202122, secondary #54595d | #3366cc |
| Dark | #101418 | #202122 | #27292d | #eaecf0, secondary #a2a9b1 | #88a3e8 |
| Black | #000000 | #000000 | #202122 | #eaecf0, secondary #a2a9b1 | #88a3e8 |
Rules and dividers sit on #cbc8c1 in Sepia and #54595d in Dark and Black. [Measured on a device]
The reading theme is chosen in a sheet on the article screen, which also carries a text size slider, a choice between a sans and a serif article face, a reading focus mode, and switches for matching the system theme and dimming images in the dark theme. While "Match system theme" is on, which is its default, the Dark and Black buttons are disabled and the app follows the system setting instead. Turning it off enables all four. The theme the system produces and the theme the in-app Dark button produces measured identical. [Measured on a device]
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.
The app uses standard UINavigationController conventions, so the system back chevron and the edge swipe apply. [Inferred] Navigation bar styling is themed through shared code that sets chrome background and text color per theme. [Measured]
Primary navigation
Expected on iOS: bottom tab bar, about five items.
A themed UITabBar at the bottom. Tab icons exist for Explore, Nearby (places), Save and Recent, and the tab labels use the system caption1 text style. [Measured] The exact tab order must be confirmed on a device. [Inferred]
Main action
Expected on iOS: nav bar or bottom bar button.
There is no floating action button, which fits iOS. Primary actions sit in the navigation bar and in content. [Inferred]
Sheets, dialogs and messages
Expected on iOS: action sheets, alerts, modals.
Popovers and hint banners use dedicated theme colors: a popover background per theme and a subtle blue hint background on Light and Sepia. [Measured] System alerts and action sheets are used for confirmation. [Inferred]
Controls
Expected on iOS: Cupertino switches, pickers, segmented controls.
Standard iOS controls tinted with the theme's link color. [Inferred] A font size slider screen lets readers scale article text. [Measured]
Text sizing
Expected on iOS: Dynamic Type.
Fully supported. The WMFFont wrapper builds every style from UIFont.preferredFont(forTextStyle:) (body, callout, caption1, footnote, headline, subheadline, title1 to title3), so text follows the system size setting. Georgia styles exist for article titles. [Measured]
Touch and pointer targets
Expected on iOS: 44pt minimum.
Not verified in the files read. Standard iOS controls meet 44pt. [Standard]
Insets and system bars
Expected on iOS: safe areas, status bar.
Standard safe-area handling with themed navigation and tab bars. [Inferred]
Icons
Expected on iOS: SF Symbols or custom.
Custom PDF icon assets in the asset catalog, for example the tab bar icons. [Measured]
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 a Wikimedia account. No third-party social sign-in appeared in the files read, so Guideline 4.8 is likely not triggered. Account deletion behavior was not checked. [Inferred] Checked: 2026-10-06 against source only.
Platform conformance
Expected on iOS: follow system components and Dynamic Type.
The app follows iOS closely: system tab bar, system text styles, edge-swipe navigation. The deviations are its theme system (four reading themes with their own chrome colors) and Georgia for article titles. These serve long-form reading. [Inferred]
Platform: Android
How the Android app looks and behaves. Values marked as measured on a device come from the running app on an Android phone at font scale 1.0. Every size is given in dp, so it is independent of the screen it was read from.
Back and up navigation
Expected on Android: system back and gesture, up arrow in the top bar.
Uses the Material 3 light theme without a default action bar and draws its own top bars, with system back handling. [Measured] The top bar is 64dp tall on every screen captured, and carries a back arrow in a 56dp target on the nested screens. [Measured on a device]
Back unwinds the screen stack rather than returning to Home. From an article it goes to the search results, then to the Search tab, then to the feed, then out to the device home screen. [Observed on a device]
The source sets a 4dp top bar elevation, but no shadow renders beneath the top bar in the shipping build, at rest or with content scrolled under it. [Measured on a device]
Primary navigation
Expected on Android: navigation bar, rail on tablets.
A bottom navigation bar with five tabs, in this order: Home, Saved, Search, Activity, More. [Measured on a device] Each tab is 77dp wide, the icons are 24dp, and the label box measures 13.2dp tall at font scale 1.0, which matches an 11sp label. [Measured on a device]
The bar measures 80dp tall, not the 72dp the source token suggests, and a 1px hairline separates it from the content above. The selected tab carries the Material 3 pill indicator, 64x32dp filled #e8f0ff, with the icon and label in the progressive blue and unselected items in #72777d. Tabs can show a 6dp dot in #b32424 for unread items. [Measured on a device]
The More tab opens a bottom sheet, measured 244dp tall, holding the account entry, Games, Places, Settings and Donate as 48dp rows. [Measured on a device]
Main action
Expected on Android: floating action button.
There is no floating action button anywhere. Twenty screen captures covering the feed, Saved, Search, search results, an article, the More sheet, Settings, the sign-in screen and four bottom sheets contain no floating action button. [Observed on a device]
The article carries the app's real main action set instead: a 72dp bottom action bar with five evenly divided items, Save, Language, Find in article, Theme and Contents, each an icon above a label. Elsewhere actions live in the top bar and in the cards themselves. This deviates from the Material habit of a single floating action, and suits a product whose main act is reading rather than creating. [Measured on a device]
Sheets, dialogs and messages
Expected on Android: bottom sheets, dialogs, snackbars.
Bottom sheets carry the app's secondary surfaces. Measured rendered heights: the More menu 244dp, the save-to-collection sheet 457dp, the reading theme sheet 466dp, and a promotional sheet 391dp. These are the heights the sheets actually settle at, which do not match the fixed peek heights named in the source, so sheet height is content driven in the shipping build. [Measured on a device]
Sheets sit on the canvas color with white rows inside, use a 4dp tall drag handle in #a2a9b1 measured at 24dp and 32dp wide, and dim the screen behind them with a scrim measured at #adadad over white, which is 32 percent black. [Measured on a device] Material 3 alert dialogs with themed text, and Material 3 snackbars on the border color. [Measured]
Controls
Expected on Android: Material switches, pickers, chips.
Material 3 widgets recolored through theme attributes, which the device confirms: the navigation indicator, switches and buttons are the Material 3 shapes carrying Wikimedia colors. [Measured on a device]
Chips do not use the canvas fill. The language chip on the feed has a paper fill with a dark gray stroke and strongly rounded corners, holding a dark rounded badge and a caret. [Measured on a device] Text fields are 56dp tall and filled with the canvas color. The primary button is 48dp tall, filled with the progressive blue with white text, and its disabled fill measured #99b3e6. [Measured on a device] The search field on the Search tab is a pill filled #e0e1e1 on an #e6e6e6 surface, neither of which belongs to the documented gray ladder. [Measured on a device]
Text sizing
Expected on Android: font scale.
Sizes are in sp, so system font scale applies. The in-app article text size runs from 50 percent to 180 percent in 10 percent steps, which is the -5 to +8 multiplier in steps of 0.1, confirmed by stepping the slider to both ends on the device. The default is 100 percent. [Measured on a device]
At a system font scale of 1.3 the chrome does not reflow: the top bar stays 64dp and the article action bar stays 72dp. The longest action label, "Find in article", wraps onto a second line and that line is clipped by the fixed bar height. [Measured on a device]
Touch and pointer targets
Expected on Android: 48dp minimum.
48dp rows hold across the menu sheet, the search field and the list section titles, and every tap target measured at least 48dp. [Measured on a device]
Two row figures from the source do not hold. Settings section headers measure 35dp, not 56dp, and no 56dp header appeared on any captured screen. Settings rows are not a fixed height either: they run from 58dp to 136dp because the summary line wraps. Search results are 88dp two-line rows with a 56dp thumbnail. [Measured on a device]
Insets and system bars
Expected on Android: edge to edge, system bars.
The app draws edge to edge under the system bars and tints them to match the surface beneath, so they read white on Light and #202122 on Dark. [Measured on a device]
Measured on an Android phone using gesture navigation: the status bar inset is 29dp, the display cutout takes the same 29dp and is a centred hole punch about 20dp wide, and the navigation bar inset is 0dp because gesture navigation draws no bar. A 32dp mandatory gesture region sits along the bottom edge and 30dp gesture regions run down both sides, so content near those edges competes with the system gestures. [Measured on a device]
The source also defines a splash theme that sets the status and navigation bar colors to #f8f9fa, plus full-screen and translucent variants for media. The splash could not be captured because it completes faster than a frame grab. [Measured from the public source files]
Icons
Expected on Android: Material Symbols or custom.
Custom vector drawables with state selectors for the tab bar. [Measured] On screen the icons are simple line glyphs on a 24dp box, in #72777d when unselected and the progressive blue when selected. [Measured on a device]
Account and sign-in rules
Expected on Android: account deletion and data safety requirements. Note the date checked.
Sign-in is a Wikimedia account and reading never requires it. The account entry sits at the top of the More sheet as "Log in / join Wikipedia" and opens a create-account screen with Username, Password, Repeat password and an optional Email, each a 56dp field on the canvas fill, a primary Next button, a "Log in" button for existing accounts, a human-check disclaimer, and links for a forgotten password and the privacy policy. There is no third-party or social sign-in anywhere on that screen, so Apple's Guideline 4.8 equivalent login requirement is not triggered. [Observed on a device] No account was created and no credentials were entered, so everything past this screen is unseen. Account deletion and the data safety form were not checked. [Inferred] Checked: 2026-10-07 on the device for the sign-in entry, 2026-10-06 against source for the rest.
Platform conformance
Expected on Android: Material 3 components and roles.
The app maps its palette onto Material roles: primary is the progressive blue, every surface role resolves to the same paper color, and primary container is paper too. So Material components are used but flattened into the Wikimedia look. Deviation: no floating action button and no tonal color depth. [Measured]
The device shows the flattening is not complete. The Search tab sits on an #e6e6e6 surface with an #e0e1e1 field, and the navigation indicator is #e8f0ff rather than the documented #e8eeff, so a few surfaces carry neutral grays from outside the Wikimedia ladder. Corner radius has also moved away from near-square on the newer feed and search surfaces. [Measured on a device]
Platform: Web
The wikipedia.org site and the Codex design system that powers it.
Back and up navigation
Expected on Web: browser back, breadcrumbs.
Relies on browser back and linked article titles. Article pages show a "From Wikipedia" subtitle and language links rather than breadcrumbs. [Inferred]
Primary navigation
Expected on Web: top nav or sidebar.
The Vector 2022 skin has a persistent left menu, a top bar with search and account links, and a sticky table of contents on article pages. [Inferred]
Main action
Expected on Web: page-level button.
Search is the primary action, placed in the top bar. Edit and other page actions are text-link tabs. [Inferred]
Sheets, dialogs and messages
Expected on Web: modals, toasts.
Codex provides dialogs, messages with progressive, destructive, warning and success tones, and popovers. [Measured]
Controls
Expected on Web: native or custom.
Codex components: buttons at 32px default height, text inputs, toggle switches, checkboxes, radio buttons, menus and typeahead search. [Measured]
Text sizing
Expected on Web: browser zoom.
Sizes are in rem, so browser zoom and default font size apply. [Measured]
Touch and pointer targets
Expected on Web: pointer and keyboard.
Default controls are 32px tall on desktop. Coarse-pointer sizing was not checked. [Measured]
Insets and system bars
Expected on Web: viewport, scrollbars.
Standard responsive layout. Breakpoints found in the stylesheets read include 875px, 500px and 360px. [Measured]
Icons
Expected on Web: any.
Codex icon set, inline SVG at 20px (size-icon-medium). [Inferred]
Account and sign-in rules
Expected on Web: not applicable unless the product has accounts.
Accounts are optional; reading never requires sign-in. [Inferred]
Platform conformance
Expected on Web: web norms for links and forms.
Standard web behavior. Link color is the same blue as the apps, with a darker visited tone for red links. Dark mode is available through Codex's dark theme tokens. [Measured]
Cross-platform consistency
The same palette, the same single action blue, and the same serif-for-articles idea hold on every platform. [Measured]
What intentionally differs:
- Mobile adds Sepia and Black reading themes. The web has light and dark only.
- Corner radius is
2pxon web, while Android keeps small radii on controls but uses about24dpon its newer feed and search surfaces. - The web uses a Helvetica-first sans while the apps use each platform's system font.
- Navigation: bottom tab bar on both apps, left menu and top search on the web.
Do's and Don'ts
Do
- Use
#3366ccas the only action color, and darken it on hover and press. - Set article titles in a serif and everything else in sans.
- Keep corners small: 2px to 4px on controls, 12px on cards.
- Build every screen from the gray ladder and keep paper white (or the theme paper).
- Offer Light, Sepia, Dark and Black themes on mobile reading screens.
- Respect system text size on every platform.
Don't
- Don't add a second brand color or gradients.
- Don't use heavy drop shadows. Use thin rings and soft low shadows.
- Don't use pill buttons for primary actions. The pill is for the search field, not for buttons.
- Don't use a floating action button on Android. The product doesn't.
- Don't recolor links per section. A link is always the action blue.
Known Gaps
Now verified on a device (Android only)
The Android section was measured on an Android phone running app build 50610-r-2026-10-06, on 2026-10-07. Verified: the five tabs and their order, the absence of a floating action button, the text size range, list row heights, the four reading themes, real insets, back behavior, and the Light, Sepia, Dark and Black colors.
Where the shipping app contradicts the source
The source was read one day before the capture, yet these values did not match what the app draws. The measured value is used in this file.
- Bottom navigation bar height is
80dp, not72dp. The72dpfigure matches the article bottom action bar, which measured exactly72dp. - Section headers in Settings are
35dp, not56dp, and no56dpheader was found on any captured screen. - The top bar draws no shadow, so the
4dpelevation in the source has no visible effect. - Bottom sheets settle at content-driven heights (
244dp,391dp,457dp,466dp) rather than the fixed peek heights named in the source (320dp,360dp,464dp,280dp). - Dark theme colors differ. Measured paper
#101418, chrome#202122, fields#27292d, text#eaecf0, links#88a3e8. The source values#2e3136and#6699ffdid not appear anywhere in the capture. - Chips use a paper fill with a dark gray stroke, not the canvas fill.
- The Search tab surface
#e6e6e6and its field#e0e1e1, and the navigation indicator#e8f0ffagainst the documented#e8eeff, are outside the documented gray ladder. - The Android destructive red
#b32424is confirmed on screen, as the unread dot on the navigation tabs. The web destructive token stays#bf3c2c. This resolves an earlier gap.
Still not verified
- The splash screen could not be captured. It completes faster than a frame grab, so the
#f8f9fastatus and navigation bar colors remain source-only. - Typeface names cannot come from a device capture, because the accessibility hierarchy carries no font information. All font families in this file are read from the public source files. Text sizes in
spare inferred from measured box heights in dp, not read directly. - Motion, transitions and gestures were not recorded, so no timing or easing is claimed.
- Everything behind a Wikimedia account is unseen. No account was created and no credentials were entered, so the signed-in states, account deletion and the data safety form are unverified.
- The Activity tab contents were not captured, only its entry in the navigation bar.
- iOS is entirely uncaptured and stays inferred. There is no iOS capture path on the machine used, so the iOS tab order and count, corner radii, spacing and component sizes are still unconfirmed.
- Web values come from the published Codex tokens and a short look at the Vector 2022 stylesheet. The page was not measured at multiple widths.
- Accessibility: at a system font scale of 1.3 the article action bar does not grow, and the "Find in article" label wraps and clips. This is a real defect in the shipping build, recorded rather than silenced.
- The checker reports no contrast warnings for this file.