Open my wallet

Token icons: sizes, shapes and the traps

What size to draw them, why the circle is not really negotiable, and the four things that break a token icon on a dark screen.

Published:

Draw token icons at one logical size — 32 to 40 pt in a list row, which is 96 to 120 px at 3× — clip them to a circle, keep a 256 px square master of every asset, and put a plate behind any monochrome logo, because near-black marks disappear on a dark screen and near-white marks disappear on a light one.

One size, decided once

The single most common mistake is having three icon sizes because three screens were designed by three people. Pick one size for list rows, one for detail headers, and stop. Everything else is arithmetic: a logical size in points multiplied by the device scale factor.

ContextLogical sizeAt 2×At 3×
Compact row, secondary list28 pt56 px84 px
Standard token row32 pt64 px96 px
Roomy token row40 pt80 px120 px
Detail screen header48 pt96 px144 px
Master asset on file256 px square

Two consequences worth stating plainly. First, the icon is not the row height: a 40 pt icon inside a 44 pt tappable row leaves 2 pt of breathing space, which is too tight — either the icon shrinks or the row grows. Second, the icon does not set the vertical rhythm. The two stacked text lines beside it do, and the icon is sized to match their combined height rather than the other way round. The full row geometry is in our anatomy of a wallet portfolio screen.

Circle, squircle or square

Token icons in lists are circles almost universally, and the reason is mechanical rather than aesthetic. Source logos arrive in every proportion and with every amount of internal padding. A circular mask normalises them: the visual weight of a circle is predictable regardless of what is inside it, whereas a square mask makes a logo with tight padding look 20 % larger than its neighbour with generous padding.

Two shape notes that cost time when you get them wrong:

The four traps

TrapSymptomFix
Monochrome logoIcon vanishes on one themeCircular plate behind it
Alpha channelStore upload rejectedFlatten for export only
Non-square sourceIcon squashed or off-centrePad to square before masking
Remote icon URLBlank circles on load or offlineBundle the set locally

1. Monochrome logos

A meaningful share of major token marks are pure black, pure white, or a single flat colour. On a dark interface the black ones become a hole and the white ones become a bright disc that outshouts everything around it. Neither is fixable by resizing.

The fix that scales is a plate: fill the circular mask with the brand colour, or a neutral surface, and place the mark on top with consistent internal padding. It also solves the padding problem in one move, since the mark now occupies a fixed fraction of the circle rather than whatever the source file decided.

2. Alpha, which you need and cannot ship

Icons need transparency in the app and must not have it in a store screenshot — a PNG with an alpha channel is rejected by App Store Connect even when nothing visibly appears transparent. Flatten at export, once, as the last step, and keep the transparent masters. The rest of the export rules are in App Store screenshot sizes.

3. Sources that are not square

Community assets arrive as wordmarks, as tall symbols, as SVGs with a viewBox that does not match the artwork. Dropping one into a square slot either distorts it or off-centres it. Pad every source to a square canvas first, with the mark optically centred rather than mathematically centred — a triangle centred by its bounding box always looks low.

On SVG specifically: strokes that are not converted to outlines scale incorrectly, and a stroke width that looks right at 256 px becomes a hairline at 32 pt. Outline the strokes.

4. Icons loaded from somewhere else

Pulling icons from a remote host at render time gives you blank circles on a slow connection, blank circles offline, and blank circles the day the host changes its URL scheme. A strict Content Security Policy will refuse them outright, which is how we ended up bundling every icon locally in My Larp Wallet — a constraint that turned out to be the right design anyway.

The chain badge

A small badge indicating the network usually sits at the bottom-right of the icon. Three rules, no invented numbers:

Contrast still applies

An icon that identifies something is a graphical object, and the parts that carry the meaning need 3:1 against their background under WCAG. In practice this catches dark logos on dark plates and pale logos on pale plates — the two cases that also look bad. Fixing the contrast and fixing the appearance are the same edit here, which is not always true.

A short checklist

Compose the screen instead of describing it

My Larp Wallet lays out a wallet screen in the browser and exports it at 1179 × 2556 px, the native resolution of an iPhone 14 Pro. What comes out is a mockup, and it says so. One plan, $19/month.

Open my wallet

Keep reading