Crypto wallet UI design: a wallet screen taken apart, with measurements

What a crypto wallet screen is built from, measured on a real wallet app one card at a time, with the contrast ratios that justify its colours.

Last updated: 8 September 2026

Hardware wallet app screen composed in Flexdger Wallet: a portfolio named Alder, a total balance and its change for the day above a row of Transfer, Swap and Buy buttons, a market row and a perpetuals card, then the list of holdings with each amount and its move for the day, in a dark theme with a lavender accent.
Composed in Flexdger Wallet. Every figure on it was typed in; nothing is held, sent or received, and no chain is read.

Strong wallet interfaces are built on a handful of repeatable choices: a single figure dominating the top, token rows aligned as two columns, one shortening rule for addresses, green and red kept for gain and loss, and contrast checked against numbers instead of taste. The measurements for each choice follow.

Four blocks, top to bottom

The measured home screen reads as a stack of four things: a tab rail, then the balance header, then a cash row that may or may not be there, then the token list. The canvas is 923 px wide. Cards span 829 px and round their corners at 52 px; each token row is 160 px high, and rows are separated by 19 px. Every card also wears a one-pixel edge with a gradient, paler at the top than at the bottom.

The vertical rhythm

A screen like this hangs from a short list of repeated gaps. If one is off, the result looks nearly correct and nobody can point at the reason. These are the figures read from the build:

BlockHeightSpace above it
Tab rail9417 (under the status bar)
Wallet name42 type79
Balance111 type18
Daily change row5125
Cash card16464
Section heading7059
Token row16032 for the first, 19 after

Six habits the best wallets have in common

Lay five admired wallets next to each other. Their colours and icon styles shout, yet the skeleton is almost the same. Each habit below answers a question every wallet has to answer, and a wallet that ignores one has usually done so by neglect rather than by choice.

A dominant figure

The portfolio total gets three to four times the type size of its neighbours, sits in the first screenful, and has no card, outline or icon around it. Teams often drift the other way and turn the header into a control room: total, 24-hour move, sparkline, network picker and four buttons of similar weight. A quick test is to squint at the screen until it blurs. When more than one thing survives in the top third, nothing is leading.

Precision is chosen, not inherited

The chains store far more digits than a reader can use: 18 decimal places for Ether, 8 for Bitcoin, 6 for the dollar stablecoins on Ethereum. Fiat amounts take two decimals. Token quantities take as many digits as it takes to be unambiguous, and the complete figure belongs, if anywhere, on the detail screen.

Rows behave like two columns

It looks like four items per row, yet it works as two stacks. On the left: icon and name above the quantity. On the right, flush with the edge: the fiat value above the day's change. Digits only form a readable column when their last characters line up, and tabular figures stop the column twitching when a price ticks. The row's dimensions are in the token row section below.

One way to shorten an address

No list shows an address in full. Reliable wallets keep a fixed count of characters at each end (think 0x1a2b…9f8e) and avoid fixing a pixel width, which would yield different counts on different phones. Leave the prefix (0x, bc1) in place so the chain is readable at a glance. Never give the tail fewer characters than the head, because users check the end of an address against what they copied.

Green and red mean direction

This is the rule that gets broken, nearly always by addition. A green success toast and a green “connected” dot appearing beside a green +2.4 % badge teach people that green no longer says up. One green and one red, only for gains and losses, on every surface. The contrast half of the rule is under colour.

Hit areas of 44 pt

Apple’s Human Interface Guidelines call for 44 × 44 pt, Material Design for 48 × 48 dp, and WCAG 2.2 sets the AA floor at 24 × 24 CSS px (criterion 2.5.8). Aim at 44 pt: it satisfies an iOS review and an accessibility audit at once. Padding can supply the size. A 16 pt copy icon inside a 44 pt tappable area is correct; the same icon with a 16 pt tappable area is not.

What the weaker ones do

Inside one token row

From the left edge: a circular icon of 94 px, a 29 px gap, and a block of two lines. The name is set at 42 px; below it, separated by 15 px, the quantity and symbol at 36.4 px in a subdued grey. The right-hand block mirrors that structure, flush right: value at 41 px, day change at 37.4 px. For icon sizes, shapes and what tends to go wrong with them, read token icon sizes, shapes and traps.

A small trap lurks in right-aligned text with negative letter-spacing: the trailing space after the final glyph is still applied, so the column ends 2 px early. Offset it with a matching right margin. Shifting the entire block would only move the error.

The edge that lifts a card

Flat fills make cards look pasted on. Against a #181818 card over black, the measured edge is paler than the fill and graded: about +8 levels at the top, +5 at the sides and +2 at the bottom, as if a lamp hung above the screen.

Expressed as white overlays, that is nearly 3.6 % opacity at the top, 2.2 % at the sides and 0.9 % at the bottom. In practice: a one-pixel ring painted with a vertical gradient, not a border of one even colour.

One pixel, not two. At 3× device scale, a single screen pixel equals 2.3 canvas pixels on a 923 px design. A round 2 px border comes out a little thin and a 3 px one a little heavy, and at this contrast you can see the difference in how solid the card feels.

Type

Apple's system font changes optical size with scale: SF Pro Text below about 27 px, SF Pro Display above it. A mockup that uses a single size for every string misshapes the letters of the balance, the biggest and most examined piece of text on the page.

The method that works: derive the font size from the ink height of a string whose content you know, then the letter-spacing from its width, doing each string separately and never assuming a type scale.

Colour, and a rule worth enforcing

Of all the colours on a wallet screen, gain and loss carry the most meaning, so they have to agree everywhere: header, badge, rows. A total in one green and a row's change in a slightly different one looks like a bug. Put dark text on the badge, too. A bright green or red is light, and white lettering on a fill that saturated usually fails contrast; the worked numbers are further down. To see these rules on a populated, measured screen, there is a page for crypto wallet app builders.

Dark mode contrast: two thresholds, then a palette

No separate standard exists for dark themes. Body text needs 4.5:1 against the surface under it, and large text or the parts of a control that identify it need 3:1 (WCAG AA). The ratio is (L1 + 0.05) / (L2 + 0.05) using relative luminance, topping out at 21:1 for pure white on pure black.

A very dark background makes passing easy, and that is the catch. When every element clears the bar with room to spare, nothing is quieter than anything else, and a screen that scores perfectly has lost its hierarchy. On dark surfaces, contrast is the hierarchy.

A real dark palette, measured

Each ratio below uses the WCAG formula against #0a0811, this site's background. It is not the wallet screen's palette (that one sits on black with #181818 cards), so take it as a demonstration of the method:

RoleHexRatioResult
Cream, headings#fffdf819.6:1Passes AAA
Ink, body text#eceaf616.7:1Passes AAA
Light violet#e3c4ff9.3:1Passes AAA
Grey, secondary text#9b95ae6.9:1Passes AA, not AAA
Violet, links#d4a0ff5.7:1Passes AA, not AAA
Deep violet#b87ef55.0:1Passes AA
Dim grey, metadata#6d66843.7:1Large text only
Hairline border#241f361.3:1Decorative only

The last two lines are cautions, not scores. Dim grey at 3.7:1 sits under the body-text bar: acceptable for a timestamp that is only decoration, wrong for anything the reader needs. The hairline's 1.3:1 is far from 3:1, and that is right for a divider, since 3:1 governs borders that identify a control rather than every rule on the page. The same arithmetic explains the dark badge label from the colour section: white on violet #d4a0ff gives 3.5:1 and fails, near-black on that violet gives 5.7:1 and passes.

Pure white on pure black is a mistake

21:1 is the ceiling, not a goal. Bright type on true black causes halation, where letters seem to glow outward, and long stretches at maximum contrast tire the eye in ways a checker will not report. The usual practice is an off-black surface with off-white text. Material Design's dark baseline is #121212, which still reaches 18.7:1 with white.

A short audit

Questions

What traits do the better crypto wallet designs share?

One dominant number, a token list laid out as two aligned columns, addresses shortened by the same rule everywhere, a single green and a single red reserved for gains and losses, touch targets of at least 44 pt, and body text at 4.5:1 contrast or more.

Why two columns instead of free-form rows?

Because people compare amounts by scanning straight down. If each row arranges its pieces differently, the eye has to relocate for every value. Numbers also only read as a column when they are right-aligned.

What does a wallet home screen consist of?

Four blocks stacked vertically: a tab rail, the balance header, an optional cash row and the token list.

What are the measured dimensions of the cards?

On a 923 px canvas, 829 px wide with a 52 px corner radius. Token rows stand 160 px tall and are 19 px apart.