KPI card design: anatomy, examples and React code for dashboard metric cards

By Wolfpixel4 min read

A good KPI card answers three questions in under five seconds: what is the number, is it good or bad, and compared with what. Give it a plain label, one large value with its unit, a comparison stated in words (“+12% vs last month”), a colour that means something, and optionally a small trend line. Then put three to five of them at the top of the screen, ordered by the decision they drive.

Summarize withChatGPTClaudePerplexity

On this page
  1. The anatomy of a KPI card
  2. Rules for the comparison
  3. Sparklines: when they help and when they lie
  4. KPI rows and strips
  5. KPI cards by product type
  6. Accessibility and responsiveness
  7. Common mistakes

We are Wolfpixel. KPI cards are the most copied and least questioned piece of dashboard design. Across the six Ingot UI systems there are 67 KPI and stats components, drawn for very different products. This guide is what we learned designing them.

The anatomy of a KPI card

  1. 1Label. Plain words the user would say: “Revenue this month”, not “MRR_Δ”. Put the period in the label if it is not obvious.
  2. 2Value. The largest text on the card, with its unit. Use tabular numbers so values line up across cards.
  3. 3Comparison. Change against a baseline the user cares about (last period, target, plan). Write the baseline in words.
  4. 4Status colour. Green and red only when up is clearly good or bad. Churn going up is red, even though the arrow points up.
  5. 5Trend (optional). A small sparkline or bar strip for shape, not exact reading.
  6. 6Action (optional). A link to the list behind the number: “View 14 at-risk accounts”.
KPI Card component preview
KPI CardVantageCode Pro
KPI, Running now component preview
KPI, Running nowAutonCode Pro
Stat Failure rate component preview
Stat Failure rateAxonCode Pro
Four KPI cards from different systems: the same anatomy, tuned to each domain.

Rules for the comparison

  • Match the period. Compare this week with last week, not with a monthly average.
  • Prefer targets for goals. “82% of target” tells a sales lead more than “+4% vs last month”.
  • Show absolute and relative change when small numbers would make percentages look dramatic. Going from 2 to 4 is “+100%”.
  • Say when there is no baseline. “New this month” is better than an empty comparison slot.
  • Do not rely on colour alone. Pair colour with a sign or arrow and text so colour-blind users read it too.

Sparklines: when they help and when they lie

A sparkline shows shape: rising, falling, spiky, flat. Use it when the trend changes the decision. Leave it out when the series has fewer than about six points, when the axis would need to start far from zero to show any movement, or when every card would show the same gentle slope. A row of identical squiggles is decoration.

KPI rows and strips

Three to five cards is the useful range. Order them by the decision they drive, left to right, and give the most important one either more width or the first position. When you need more than five, use a compact strip or mini KPIs and move detail to the page below.

KPI strip component preview
KPI stripVantageCode Pro
Mini KPIs component preview
Mini KPIsVantageCode Pro
Stats component preview
StatsMailPulseCode Pro
SLA stats component preview
SLA statsVeriqCode Pro
KPI strips and compact stat rows for screens that track more than five numbers.

KPI cards by product type

ProductTypical top-row KPIsSystem to start from
Subscription businessMRR, net revenue retention, churn, at-risk accountsVantage, 17 KPI components
AI agent platformRegistered agents, running now, active policies, pending approvalsAuton, 15
Workflow automationRuns, failure rate, items in review queue, latencyAxon, 9
Security toolOpen criticals, fixes this cycle, SLA met, verified fixesVeriq, 11
Newsletter or emailSubscribers, open rate, click rate, revenue per sendMailPulse, 9
Marketing analyticsAudience growth, conversion, revenue, top sourceLoopo, 6 plus the coded KPI card

Accessibility and responsiveness

  • Keep label and comparison text at 4.5:1 contrast. Muted greys on soft green backgrounds often fail; Ingot tokens include separate text tones for this (--fu-positive-text).
  • Give the card one accessible name: label, value and comparison read in order.
  • On mobile, stack cards two across, never four tiny ones. Shorten labels before you shrink the value.
  • Decide truncation up front: long labels wrap to two lines; values never truncate.

Common mistakes

  • Showing every metric the database has. If nobody acts on it, it does not belong in the top row.
  • Rounding inconsistently: 12.4k next to 12,391.
  • Green for “up” on metrics where up is bad (costs, churn, errors).
  • Comparisons against a period that is not finished yet, which makes every month look like a drop until the last day.

Frequently asked questions

What should a KPI card include?

A plain label, one value with its unit, a comparison against a stated baseline, a status colour backed by text or an arrow, and optionally a sparkline and a link to the detail.

How many KPI cards should a dashboard have?

Three to five in the top row, ordered by the decision they drive. Use a compact strip if you truly need more.

Should KPI cards have sparklines?

Only when the shape of the trend changes the decision and there are enough data points. Otherwise they are decoration.

Is there a free KPI card React component?

Yes. The Loopo KPI card in Ingot UI is free React and Tailwind code, installable with npx ingotui add kpi-card or the shadcn CLI.

About the author

Wolfpixel is the product design studio that designed the six Ingot UI systems from real dashboard projects, and checks every generated React component against its Figma original before it ships. Read more on wolfpixel.agency.

Components in this guide

KPI strip component preview
KPI stripVantageCode Pro
KPI, Running now component preview
KPI, Running nowAutonCode Pro
12.4%3.1%0.8%
Delta chipLoopoCodeFree

Keep reading