Blog
Charts from data

CSV to grouped bar chart online

Use grouped bars when every category has two or three numbers that need to be compared directly — plan against actual, this year against last year, two products across the same regions. The bars stand side by side so the eye compares heights within a group first.

Your data never leaves this device

Your data

Paste a table straight from Excel or Google Sheets, or drop a CSV file. Nothing is uploaded anywhere — the whole calculation runs inside this browser tab.

CSV, TSV or plain text. Files saved in windows-1251 are detected and re-read automatically, so Cyrillic headers do not turn into garbage.

Parsing options

Columns

Result

The drawing library is downloaded only when you press the button, and only on this page.

This page has no server side at all. The table you paste is parsed by JavaScript inside your own browser, the chart is drawn on a canvas element on your machine, and the export file is assembled locally. Nothing is uploaded, stored or written to any log. You can disconnect from the network after the page has loaded and everything will still work — which is the simplest way to verify the claim yourself.

Facts and limits of this method

Best for Comparing 2–3 series across the same categories
Series limit Three is comfortable, four is crowded, five is unreadable
Category limit Categories × series bars in total — twelve groups of three is already 36 bars
Comparison priority Within a group first, across groups second — that is what grouping does to perception
Zero baseline Mandatory
Output PNG at 2× scale, plus CSV, JSON and Markdown

When it misleads you

How it is calculated

The label column defines the groups. Every remaining numeric column becomes one bar inside each group, in the order the columns appear in your table, with a fixed colour per series carried across all groups.

The axis starts at zero, as with any bar chart, and cannot be moved. Grouping magnifies the effect of a truncated axis rather than reducing it, because the reader is comparing two nearby bars directly.

Bar width adapts to the number of groups and series so that the clusters stay visually separated. When the data would produce bars thinner than a couple of pixels, the honest answer is fewer categories, not a wider canvas.

Missing values leave a gap in the cluster rather than drawing a zero-height bar. A missing measurement should not look like a measured zero, especially in a plan-versus-actual chart where a zero is meaningful news.

Questions and answers

Grouped or stacked — which do I need?

Grouped when the values are alternatives to be compared (plan versus actual). Stacked when they are parts of one whole (revenue split by channel). Asking whether the sum of the values means anything usually settles it.

Can I compare more than three series?

Technically yes, but the chart stops working. Four series across eight categories is 32 bars and no reader can hold that. Split into several charts or switch to a line chart.

Why is my time series hard to follow?

Because grouping optimises for comparison inside a category, not for tracking a series across categories. For time, use the multi-series line chart.

How do I control which column comes first?

Reorder the columns in your pasted table. Series are drawn strictly left to right in column order.

Is my data sent anywhere?

No. Everything runs in your browser and the page works with the network disconnected.

Related tools

All tools