# Sankey and path > Quantity flows from sources to destinations and the viewer needs to see the split. - Canonical: https://patterns.konigi.com/dashboards/sankey-and-path - Group: Visual representation - Level: implementation - Status: published - Updated: September 10, 2026 - Also called: flow diagram, user path, alluvial --- ## Problem Four thousand people landed on the pricing page. A funnel says how many reached checkout. It does not say that eight hundred went to the docs first, or that the ones who did converted at three times the rate. ## Solution Draw the flow. Nodes are states, links are movements between them, and link width encodes volume. The eye follows the thick bands and the branching is visible rather than inferred. The pattern's ancestry is worth knowing because it explains the encoding. Sankey diagrams come from engineering, where they were used to show energy and material flows and where conservation held: what enters a node leaves it. That conservation is what makes width readable as quantity, and it is also what most product analytics violate, because people leave, sessions expire, and requests time out. A flow diagram whose bands do not conserve needs an explicit "exit" or "drop" destination, or the widths quietly stop adding up. Where a funnel says how many survived each step, a Sankey says which route they took, and that difference matters exactly when the route varies. The interesting output is usually a path nobody designed: a loop back to search, a detour through help, a retry that succeeds. Layout is the hard engineering problem. Node ordering within a column determines how many links cross, and crossings are what turn the diagram from legible to decorative. Good implementations minimise crossings and keep the ordering stable between renders, because a diagram that reshuffles on refresh cannot be learned. ## Use when The path branches, the branching is the question, and there are few enough distinct routes to draw. Attribution, user journeys, request routing, cost allocation, energy and material flow. ## Don't use when The sequence is fixed, where a funnel is clearer and cheaper. Or when the paths are long-tailed: real user journeys have thousands of distinct routes, and a diagram of the top eight plus "other" is either a lie by omission or an unreadable hairball. ## Trade-offs Sankeys are the most impressive-looking chart in this collection and one of the least often necessary, which is a dangerous combination in a stakeholder review. Reading exact values off a band is near-impossible, so they answer "roughly where" and never "how many". They need space, and shrunk into a dashboard panel they become texture. Crossing links degrade legibility fast. And truncating the long tail into "other" often hides precisely the surprising route the diagram was built to find. ## Checklist - Do the flows conserve, and if not, is there an explicit exit node? - How many distinct paths exist, and what fraction is shown before "other"? - Does "other" carry a count, so the viewer can size what is hidden? - Are crossings minimised, and is node order stable between refreshes? - Can the viewer get an exact number for a band? - Is the direction of flow unambiguous? - Does colour encode anything, or is it decoration? - Is there a minimum band width below which a path is dropped, and is that stated? - Would a funnel or a table answer this question with less machinery? - Does the diagram still work at the panel size it will actually render at? ## Compare **Amplitude** and **Mixpanel** offer path analysis where the Sankey is generated from event streams and each node is clickable into the underlying users, which turns a picture into a starting point. **Google Analytics** has shipped several versions of a flow report over the years and each has struggled with the same long-tail problem, which is a useful demonstration that this is inherent rather than an implementation failure. **Grafana** has no core Sankey panel and relies on community plugins, so it appears on dashboards rarely and usually as a one-off. **Datadog** applies the encoding to service dependencies and request routing rather than to people, where conservation actually holds better and the node set is bounded. ## Related Funnel is the simpler pattern for a fixed sequence and usually the right answer. Service map shows the same relationships as topology rather than as volume. Stacked composition is the static part-to-whole version. Drill-down is what a node click owes the viewer. Cohort grid is where you go when the question turns from route to time. ## Examples ### Tableau Public (Salesforce) Thousands of dashboards made by people who are not designers, published without a review step. The best available sample of what the pattern language looks like in the wild. **Energy flows in the Regional scenario** — captured September 11, 2026, Tableau Public embed view; workbook published by Chia Yu Lin. analytical, medium density, light theme, desktop-web. A Sankey doing the job it was invented for, published by an analyst rather than designed by Tableau. The entry argues that the form comes from engineering, where what enters a node leaves it, and that conservation is what makes band width readable as quantity—and that product analytics breaks it because people leave and nothing accounts for them. Here conservation holds and is stated: primary supply 546 TWh at the bottom left, final demand 476 TWh at the bottom right, and the missing 70 TWh has its own destination node called Conversion losses. Nothing disappears off the edge of the diagram. Colour is doing identity rather than status—blue for electricity, green for hydrogen, teal for biomass, orange for heat—and it stays consistent across all three columns, so a carrier can be traced from supply to end use without a legend. The one oddity is that the author has exposed the layout parameters as live controls, including a squish ratio printed to nine decimal places. Hotspots in this capture: - [Sankey and path](https://patterns.konigi.com/dashboards/sankey-and-path) *(this pattern)* — Three columns of nodes, link width as volume, and crossings kept to the few places where a carrier genuinely switches rank. - [Sankey and path](https://patterns.konigi.com/dashboards/sankey-and-path) *(this pattern)* — Conversion losses as an explicit destination. This is the node product analytics leaves out, and the reason its widths stop adding up. - [Ratio and rate](https://patterns.konigi.com/dashboards/ratio-and-rate) — 546 TWh in, 476 TWh out, both stated. The diagram's own arithmetic is checkable from the page. - [Categorical series palette](https://patterns.konigi.com/dashboards/categorical-series-palette) — Five carriers, five hues, held constant across every column so a band can be followed end to end. - [Dashboard builder](https://patterns.konigi.com/dashboards/dashboard-builder) — Curve type, whitespace and squish ratio exposed as reader-facing controls. The last one reads 0.484057971. ## Related patterns - [Funnel](https://patterns.konigi.com/dashboards/funnel) — People move through steps and the viewer needs to see where they leave. - [Service map](https://patterns.konigi.com/dashboards/service-map) — The viewer needs to know what depends on what, and which edge is unhealthy. - [Stacked composition](https://patterns.konigi.com/dashboards/stacked-composition) — A total is made of parts, and the viewer needs both the total and the mix over time. - [Drill-down](https://patterns.konigi.com/dashboards/drill-down) — The overview shows that something is wrong; the viewer needs to get to what, in one click. - [Cohort grid](https://patterns.konigi.com/dashboards/cohort-grid) — Retention differs by when people arrived; the viewer needs cohorts side by side over time. ## Sources - [Sankey diagram](https://en.wikipedia.org/wiki/Sankey_diagram) - [Funnel chart](https://en.wikipedia.org/wiki/Funnel_chart) - [Bach et al., Dashboard Design Patterns](https://dashboarddesignpatterns.github.io/patterns.html) --- Screenshots on patterns.konigi.com are reproduced for commentary and criticism. Product names and marks belong to their owners.