gizmobench

Sankey Diagram Maker

Build a directed flow diagram from source, target and weight columns. Map CSV fields or edit the complete paginated table, customize node labels, groups, colors and order, and inspect incoming, outgoing and net flow at every node. Export the same layout as SVG or PNG, plus cleaned CSV and an editable JSON project.

Supplied flows

Up to 500 links and 100 nodes. Columns follow the longest upstream path. Large diagrams expand beyond the minimum size to keep full labels and node gaps.

Current diagram

Your complete flow diagram will appear here.

Widths share one global scale. Zero flows have exactly zero width and remain in the flow table. Dashed boxes identify zero-throughput nodes; their box size is not a flow value. Select a node in the diagram or dropdown to edit it.

Node labels, groups and colors

Groups control vertical order when Group name ordering is selected. Move buttons set the order within a column and group. Remove a node only after removing all links that use it.

All flow rows

Flow page 1 of 1; 0 total rows
SourceTargetWeightEdit

No flow rows yet. Add a flow and enter its weight, or build from CSV.

Paste weighted flows or use the editable table, then build a diagram.

Current flows
Pending
Nodes
Pending
Connected components
Pending
SVG dimensions
Pending

PNG renders the same geometry as SVG and keeps its aspect ratio. Exports include every link. Cleaned CSV guards spreadsheet formulas; project JSON is the lossless copy of labels, groups, colors, order and layout settings. All processing stays in this page.

Accuracy. Flow widths encode supplied weights; disconnected nodes and flow imbalances are visible. Support directed acyclic graphs initially and reject cycles explicitly.

Common questions

How do I create a Sankey diagram from CSV?
Paste CSV or import a local CSV file, choose whether the first row contains headings, and map three different columns to source, target and weight. Build the diagram after checking the mappings. Quoted commas, multiline labels and Unicode are supported. Labels are trimmed and reused across flow rows to identify the same node.
What do the flow widths and node sizes mean?
Every link uses the same global weight-to-width scale, so weights 10 and 30 have a 1:3 width ratio. A node's throughput is the greater of its incoming and outgoing weight. Its colored bar has the corresponding height. Zero-weight links retain exactly zero width and stay in the full data table. Dashed boxes mark zero-throughput nodes without assigning them a flow value.
How are cycles, imbalances and disconnected nodes handled?
The layout accepts directed acyclic graphs. A return edge, including a zero-weight cycle, causes an explicit error naming affected rows. The node table shows incoming, outgoing, throughput and incoming-minus-outgoing balance. Separate connected components and isolated nodes remain visible. Sources and sinks normally have nonzero balances; the tool does not fill gaps or invent balancing flows.
Can I change node colors, groups and order?
Yes. Select a node in the interactive diagram or dropdown, then edit its label, group or color. Move buttons control vertical order within each column. Group ordering sorts by group name and keeps manual order within a group. Columns follow the longest upstream path so all links move left to right. Apply changes with Build diagram; preview and exports then use the same geometry.
Which exports are available?
Download SVG for scalable artwork, PNG at a chosen width, cleaned source-target-weight CSV, or version 1 project JSON. SVG and PNG preserve every link and full wrapped labels. CSV prefixes potential spreadsheet formulas with an apostrophe; JSON preserves the original text exactly and retains node styling, grouping, order and layout controls.
What are the working limits?
A diagram supports up to 500 links and 100 nodes, with a full paginated editor. CSV and JSON reads are bounded to 1,000,000 characters. Numeric weights must be finite and nonnegative; an unrepresentable sum or weight range produces an error. PNG supports widths from 100 to 4,096 pixels within a 16-million-pixel and 16,384-pixel-side budget. Large vector diagrams expand to preserve full labels and can be inspected with scrollbars.
Are my data uploaded?
No. Parsing, layout and export happen in this page. Valid built projects are saved in this browser when local storage is available. If saving is blocked or full, export project JSON. Imported projects are validated completely before replacing the current diagram.

Flow widths encode supplied weights; disconnected nodes and flow imbalances are visible. Support directed acyclic graphs initially and reject cycles explicitly.