Specialized
Bullet Sparkline
Compact inline bullet chart for tables and dense dashboards.
KPI Dashboard
Actual vs target with 12-period trend
View data (6 rows)
| Actual | KPI | Target | Trend | Min | Max |
|---|---|---|---|---|---|
| 275 | Revenue | 250 | 210,225,235,228,240,252,248,260,268,272,270,275 | 0 | 300 |
| 1800 | Customers | 2000 | 1450,1520,1580,1610,1650,1690,1720,1750,1770,1790,1795,1800 | 0 | 2500 |
| 4.20 | Satisfaction | 4.50 | 3.8,3.9,4.0,4.1,4.0,4.1,4.2,4.1,4.2,4.3,4.2,4.2 | 0 | 5 |
| 99.50 | Uptime | 99.90 | 98.2,98.5,99.0,99.2,99.6,99.4,99.7,99.3,99.5,99.6,99.4,99.5 | 95 | 100 |
| 120 | Latency | 100 | 180,170,155,140,135,128,132,125,118,122,124,120 | 0 | 200 |
| 850 | Throughput | 800 | 620,650,680,710,720,750,770,790,810,830,840,850 | 0 | 1000 |
Use a bullet sparkline when…
- KPI tables
- Dense dashboards
- Actual vs target inline
Avoid when…
- Standalone display (use full bullet chart)
- When detail matters
Data it needs
| Property | Value |
|---|---|
| Min Rows | 1 |
| Min Columns | 3 |
| Column Types | stringnumbernumber |
| Notes | Required: label + actual + target. Optional: min/max for the qualitative bands and a Trend column (comma-separated numbers in a string, e.g., '210,225,235,...') for the inline sparkline. |
Visual anatomy
Marks
rectangleline
Channels
lengthcolor
Axes
x-quantitative (inline)
Guiding principles
Consider instead
Common mistakes
Missing the target marker
No context for the background ranges
History
Miniaturized version of Stephen Few's bullet chart (2005).
Accessibility notes
Expose actual, target, and a one-line trend summary (direction + last value, e.g., 'rising, latest 275') as text so screen-reader users get the spark plus the bullet, not just the headline number.
Related reading
Got data? Let's see what works.
Drop your CSV. You'll get a Bullet Sparkline plus four alternatives - ranked by which one actually fits your data best.