Agile Sprint Burndown Chart — Highcharts

A sprint burndown chart tracks the amount of remaining work in an agile sprint over time, plotted as a step (or line) series that descends as tasks are completed. A straight ideal-burndown guideline runs diagonally from the total committed scope on day one down to zero on the final day, giving the team an at-a-glance reference for whether they are ahead of or behind schedule. It is one of the most widely used project-management visualizations in software development, surfacing scope creep, stalled progress, and end-of-sprint risk early enough to act on.

Agile Sprint Burndown Chart rendered with Highcharts

JavaScript source (Highcharts)

// anyplot.ai
// burndown-sprint: Agile Sprint Burndown Chart
// Library: highcharts 12.6.0 | JavaScript 22.22.3
// Quality: 91/100 | Created: 2026-06-14
//# anyplot-orientation: landscape

const THEME = window.ANYPLOT_THEME || "light";
const t = window.ANYPLOT_TOKENS;

// Sprint data: 10 working days (Jun 2–13 2025), initial scope 40 story points
const categories = [
  "Start",  "Jun 2", "Jun 3", "Jun 4",  "Jun 5",
  "Jun 6",  "Jun 7", "Jun 8", "Jun 9",  "Jun 10",
  "Jun 11", "Jun 12", "Jun 13"
];

// Actual remaining story points (step series);
// +8 scope added end of Jun 5 (Thu, day 4) — team finishes at zero by sprint end
const actualRemaining = [40, 37, 33, 30, 34, 30, 30, 30, 24, 18, 10, 5, 0];

// Ideal burndown: 40 → 0 linearly over 10 working days (flat on weekends)
const idealRemaining  = [40, 36, 32, 28, 24, 20, 20, 20, 16, 12,  8, 4, 0];

// Weekend band: subtly distinct from the page background
const weekendColor = THEME === "light"
  ? "rgba(26,26,23,0.06)"
  : "rgba(240,239,232,0.08)";

Highcharts.chart("container", {
  chart: {
    backgroundColor: "transparent",
    animation: false,
    style: { fontFamily: "inherit" },
    marginTop: 60,
    marginRight: 40,
    marginBottom: 80,
    marginLeft: 80,
  },
  credits: { enabled: false },
  colors: t.palette,
  title: {
    text: "burndown-sprint · javascript · highcharts · anyplot.ai",
    style: { color: t.ink, fontSize: "22px", fontWeight: "600" },
    margin: 20,
  },
  xAxis: {
    categories,
    lineColor: t.inkSoft,
    tickColor: t.inkSoft,
    labels: { style: { color: t.inkSoft, fontSize: "13px" }, rotation: -30 },
    title: {
      text: "Sprint Day",
      style: { color: t.inkSoft, fontSize: "16px" },
      margin: 15,
    },
    plotBands: [
      {
        from: 5.5,
        to: 7.5,
        color: weekendColor,
        label: {
          text: "Weekend",
          style: { color: t.inkSoft, fontSize: "12px" },
          align: "center",
          verticalAlign: "top",
          y: 15,
        },
      },
    ],
    plotLines: [
      {
        value: 4,
        color: "#DDCC77",
        dashStyle: "ShortDash",
        width: 2,
        zIndex: 5,
        label: {
          text: "Scope +8 pts",
          style: { color: "#DDCC77", fontSize: "12px", fontWeight: "600" },
          align: "left",
          rotation: 0,
          x: 5,
          y: 80,
        },
      },
    ],
  },
  yAxis: {
    title: {
      text: "Remaining Story Points",
      style: { color: t.inkSoft, fontSize: "16px" },
    },
    min: 0,
    gridLineColor: t.grid,
    lineColor: t.inkSoft,
    tickColor: t.inkSoft,
    labels: { style: { color: t.inkSoft, fontSize: "14px" } },
  },
  legend: {
    enabled: true,
    itemStyle: { color: t.inkSoft, fontSize: "14px" },
    itemHoverStyle: { color: t.ink },
    backgroundColor: "transparent",
    borderWidth: 0,
  },
  plotOptions: {
    series: {
      animation: false,
      marker: { enabled: false },
    },
  },
  series: [
    {
      name: "Actual Remaining",
      data: actualRemaining,
      type: "line",
      step: "left",
      color: t.palette[0],
      lineWidth: 2.5,
      zIndex: 2,
    },
    {
      name: "Ideal Burndown",
      data: idealRemaining,
      type: "line",
      color: t.inkSoft,
      dashStyle: "ShortDash",
      lineWidth: 2,
      zIndex: 1,
    },
  ],
});

Part of Agile Sprint Burndown Chart on anyplot.ai.

Other implementations