Stat Tile
Also called KPI tile, metric card, big number, scorecard
A small block presenting one measurement with its label and enough context to interpret it.
Example
Active projects
1,284 active projects
up 12.4%
vs last month
Weekly signups
318 weekly signups
down 4.1%
vs last week
Median build time
42 seconds median build time
down 18.0%
vs last week
Reading order, as announced
- Active projects · 1,284 active projects · up 12.4% vs last month
- Weekly signups · 318 weekly signups · down 4.1% vs last week
- Median build time · 42 seconds median build time · down 18.0% vs last week
The third tile is the one worth studying: its arrow points down and its colour is green, because a shorter build is better. Direction and judgement are two different things, and only one of them belongs in the colour.
When to use it
- A handful of headline numbers should be readable before anyone scrolls — the top strip of a dashboard.
- The number is checked repeatedly, so it needs to be found in the same place every time.
- The comparison matters as much as the value: this week against last, actual against target.
When not to
- The number only makes sense as a series. A single figure hides the shape — use a chart.
- There are more than about six of them. Past that they stop being headlines and become a table with worse alignment.
- The tile would need a paragraph to explain it. That is a card, or a chart with a caption.
Trade-offs
- The size hierarchy does the work: the number is read first, everything else on demand.
- Cheap to scan in a row, which is why dashboards open with them.
- Carries its own comparison, so “is this good?” is answered in place.
- Strips away all context that is not printed on it — a spike and a data outage look identical.
- Invites vanity metrics, because a number that is easy to draw is not necessarily worth watching.
- The delta is easy to mislabel: “+12%” compared with what is a question every tile has to answer explicitly.
Accessibility
What this pattern needs in order to work for everyone.
- Keyboard
- A tile is content, not a control. If it links to a detail view, it is one tab stop with a name that includes the metric — not “View”.
- Never make the number itself focusable just to hang a tooltip on it; put the explanation in the tile.
- Roles and state
- Order the DOM the way it should be read: label, then value, then change. Visual order can differ, but the reading order is what a screen reader announces.
- Direction must not rest on colour. Pair the tint with a sign, an arrow, and a word — “up 12.4%” survives greyscale and colour blindness.
- Format the number for reading, not for parsing: `aria-label="1,284 active projects"` beats a bare “1284” when the visual uses abbreviations like 1.3k.
- A sparkline beside the value is decoration when the number is already text — mark it `aria-hidden` rather than describing every point.
- Focus
- Nothing takes focus on its own. If a tile is a link, the whole tile is the target, not a small chevron in its corner.
In the wild
- Stripe Dashboard — Value, comparison period and a sparkline in one block, with the period spelled out rather than implied.
- Vercel Analytics — Four tiles across the top, each linking to the full breakdown of that metric.