Skip to content
DocsChartsWaterfallLast updated Nov 2, 2026

Waterfall

Opening to closing value, one step at a time. Sample data: Q3 2026 cash bridge, $1.82M opening to $1.91M closing.

Open in
Cash bridge, Q3Cash from the opening balance of $1.82M to the closing balance of $1.91M: sales in, refunds, staff, cloud and tax out.4M3M2M1M0OPEN+1.24MSALES−0.09MREFUND−0.71MSTAFF−0.23MCLOUD−0.12MTAXCLOSEBALANCEINFLOWOUTFLOW
Cash bridge, Q3
StepChangeBalance
Open$1.82M
Sales+$1.24M$3.06M
Refund−$0.09M$2.97M
Staff−$0.71M$2.26M
Cloud−$0.23M$2.03M
Tax−$0.12M$1.91M
Close$1.91M
Cash bridge, Q3Cash from the opening balance of $1.82M to the closing balance of $1.91M: sales in, refunds, staff, cloud and tax out.4M3M2M1M0OPENREFUNDCLOUDCLOSEBALANCEINFLOWOUTFLOW
Cash bridge, Q3
StepChangeBalance
Open$1.82M
Sales+$1.24M$3.06M
Refund−$0.09M$2.97M
Staff−$0.71M$2.26M
Cloud−$0.23M$2.03M
Tax−$0.12M$1.91M
Close$1.91M

Installation

  1. 1

    Set up the registry once

    This chart is free in Hearth and MIT licensed: no token. Add @chartory to components.json once (the URL alone, no headers), or skip this when another chart is already installed.

    Installation guide
  2. 2

    Add the chart

    One command adds the Waterfall component to your project.

    npx shadcn add @chartory/waterfall
  3. 3

    Use it

    Pass your data. size and legend are the Figma properties.

    usage.tsx
    import { Waterfall }  from "@/components/chartory/waterfall"<Waterfall  data={cashBridge}  size="m"  legend/>

Props

<Waterfall>

Every prop but data is a Figma property with the same name and values.

PropTypeDefault
data: The chart's data. The tables below list every field.WaterfallDataRequired
size: The size class. Each one is laid out again from the data."xs" | "s" | "m" | "l""m"
legend: Shows the legend row under the plot.booleantrue
color: The data colour of the primary marks (data/primary)."cat-1" | "cat-2" | "cat-3" | "cat-4""cat-1"

WaterfallData

The data prop: one object for the whole chart.

PropTypeDefault
max: The top of the value scale.numberRequired
ticks: The axis tick labels.string[]Required
fmt: Formats a value for its label.(v: number) => stringRequired
steps: One entry per step.WaterfallStep[]Required
stagger?: Step names wider than their column: every other one on a second row (the plot's base rises one row). "auto" (site cards with long names): one row, or two when two names would touch, so no x label is ever dropped."auto" | boolean—

WaterfallStep

One object per entry in steps.

PropTypeDefault
label: The name shown on the chart.stringRequired
v: The value.numberRequired
total?: Draws the bar up from zero, as a total.booleanfalse

The data as a JSON Schema: schemas/waterfall.json

Waterfall chart: a React and Figma chart in four sizes

At a glance

Data shape
Opening total, signed steps, closing total
Good for
Cash bridges, profit walks, budget against actual
Avoid when
Steps have no order, or the parts make up one whole
Sizes
XS, S, M and L, re-laid out from the data

What does a waterfall chart show?

A waterfall chart shows how an opening value turns into a closing value through a run of gains and losses. Each bar starts where the last one ended, so you see which step moved the total and by how much.

Chartory ships it as a Figma component and a React component with the same name. The code installs from the shadcn registry with one command and lands in your project as a file you own.

What is the Waterfall chart?

It is one <Waterfall> component driven by data, size, legend and color. The data is an opening total, signed steps and a closing total: steps with a label, a value v and, for the totals, total, plus the scale (max, ticks) and a fmt for the labels.

Sizes XS, S, M and L re-lay the chart out from the data instead of scaling it, so labels stay readable at every size.

When should I use it?

  • One total turns into another: Opening cash to closing cash, revenue to profit.
  • The steps run in a set order: Sales, then refunds, staff, cloud and tax.
  • Gains and losses share one axis: Rises and drops start from the same running total.

When does another type fit better?

  • The parts make up one whole: No order and no running total: use a Treemap.
  • You follow one value over time: A trend, not a bridge between two totals: use a Line chart.
  • Flows split into several paths: A step feeds more than one next step: use a Sankey.

Waterfall questions

Installing, data, Figma and plans.

  • Yes. It installs through the shadcn registry with the shadcn CLI, and the file lands in your project.

Stay in the loop

New charts, by email.

Get an email when new chart types and releases ship.

Unsubscribe any time.