Examples · Bullet chart

Bullet chart examples

A bullet chart answers the performance question in one thin bar per row: the actual reaches along the scale, a mark stands where the target is, and muted background bands say what counts as poor or good. It was designed as the sober replacement for dashboard gauges — same question, a fraction of the ink.

When to use it

  • KPIs with explicit targets: revenue vs plan, satisfaction vs goal, uptime vs SLA
  • Several measures on one card — each row is a complete actual-versus-target statement
  • Replacing gauges: the same at-a-glance verdict without a speedometer per number

Not the right shape?

Measures without a meaningful target — a bullet without its mark is only a thin bar. And a trend over time still belongs to a line graph; the bullet is a snapshot.


Real-world examples

Revenue against plan

The second column is each row's own target, so every region carries its own mark. One glance ranks the regions and says who cleared plan — two facts per row, no legend.

Open in maker with this data

View the spec
{
  "type": "bullet",
  "theme": "ink",
  "title": "Revenue against plan (thousands)",
  "source": "Finance, unaudited",
  "options": {
    "format": "currency:USD"
  },
  "data": {
    "labels": [
      "EMEA",
      "Americas",
      "APAC"
    ],
    "series": [
      {
        "name": "Actual",
        "values": [
          420,
          380,
          510
        ]
      },
      {
        "name": "Plan",
        "values": [
          400,
          400,
          480
        ]
      }
    ]
  }
}

Bands that say what good means

options.bands shade the scale into qualitative zones — up to five, labelled at your choice. The actual then reads in context: 74% isn't merely short of target, it's still inside the middle band.

Open in maker with this data

View the spec
{
  "type": "bullet",
  "theme": "neon",
  "title": "Satisfaction by channel",
  "source": "Post-ticket surveys, quarter to date",
  "options": {
    "format": "percent",
    "bands": [
      {
        "to": 60,
        "label": "low"
      },
      {
        "to": 80
      },
      {
        "to": 100,
        "label": "good"
      }
    ]
  },
  "data": {
    "labels": [
      "Chat",
      "Email",
      "Phone"
    ],
    "series": [
      {
        "name": "Actual",
        "values": [
          86,
          74,
          91
        ]
      },
      {
        "name": "Goal",
        "values": [
          85,
          85,
          85
        ]
      }
    ]
  }
}
Open this chart in a maker Chart maker from scratch


Questions people ask

What is a bullet chart?

A compact performance chart from Stephen Few: a thin bar for the actual value, a perpendicular mark for the target, and muted background bands for qualitative ranges. One row states 'where we are, where we should be, and how that rates' without a legend.

Bullet chart or gauge?

A gauge spends a whole dial on one number and still hides the target in tiny tick marks. A bullet says the same thing in one flat row, so a dashboard fits five of them in a gauge's footprint — which is exactly why Few designed it.

What do the bands mean?

Whatever ranges make your measure judgeable — poor, acceptable, good is the classic trio. They come from options.bands as increasing 'to' stops, they stay deliberately muted so the actual and target keep the foreground, and they're optional.