Bar Chart Maker
Enter your category names on the left, one per line, and the matching numbers on the right in the same order. Press Generate and the chart is drawn in your browser — you can flip it to horizontal, sort the bars, set a title and colour, and download a PNG. Nothing is uploaded.
When a Bar Chart Beats the Alternatives
A bar chart answers one question well: how do these categories compare in size? It is the right pick when the things on your axis are discrete and unrelated to each other — products, regions, support channels, survey options, teams.
Reach for something else when:
- The x-axis is time. Use a line chart. Lines make trends, turning points and rate of change visible in a way that a row of separate bars does not, and they handle unevenly spaced observations. Bars are defensible for a handful of yearly totals; they are wrong for daily readings.
- You are showing parts of one whole and there are few parts. A pie chart is acceptable for two or three slices. Beyond that, bars beat it: the classic Cleveland and McGill perception experiments in 1984 ranked position along a common scale as the most accurately judged visual encoding, with angle and area well below it — which is exactly the comparison a pie asks you to make.
- You care about the shape of a distribution. Use a histogram for one continuous variable or a box plot when you need to compare spread across groups.
- You are looking for a relationship between two numeric variables. That is a scatter plot.
The data shape a bar chart needs is minimal: one categorical field and one numeric measure, with exactly one value per category. If a category appears twice in your labels you have two bars competing to represent it — aggregate first.
The Zero Baseline Is Not Optional
This is the one rule that separates an honest bar chart from a misleading one, and it follows directly from how bars encode data. A line chart marks a value with a point, and the eye reads its height. A bar marks a value with a rectangle, and the eye reads its length. Length only means something when it is measured from zero.
Truncate the axis and the ratios on the page stop matching the ratios in the data. Take two real values, 1,482 and 1,103 — a difference of 34%. Start the axis at 1,000 and the drawn bars are 482 and 103 units long, a difference of 368%. Nothing on the chart looks wrong. A reader who does not stop to read the axis numbers walks away with a figure that is off by a factor of three and a half.
Because of this, line charts may be truncated and bar charts may not. If the interesting variation really does sit in a narrow band near the top, the honest fixes are to plot the difference from a baseline instead of the raw totals, to plot the percentage change, or to switch to a line chart or dot plot where a non-zero axis is legitimate.
Worth checking if you rebuild a chart elsewhere: spreadsheet software often picks a "nice" axis minimum automatically, and when your values are clustered well above zero that minimum will not be zero. Set it explicitly rather than trusting the default.
Horizontal or Vertical
Vertical bars — properly called a column chart — are the default and suit short labels and up to roughly a dozen categories.
Switch to horizontal when either of these is true:
- The labels are long. "Help centre contact form" written under a vertical bar has to be rotated 45 or 90 degrees, and rotated text is measurably slower to read. Horizontal bars put labels on the left, running the same direction as the rest of your text, at any length.
- There are many categories. A chart of 20 vertical bars is either very wide or has bars too thin to compare. Twenty horizontal bars is a tall chart that scrolls, which is fine on a page and much better on a phone.
There is a third argument, softer but real: with horizontal bars sorted by value, the chart reads top to bottom in rank order, which is the order people scan a list anyway.
Ordering the Bars
Sorting is part of the analysis, not decoration. The default should be descending by value, so the chart's message — which category dominates, where the drop-off happens — appears without the reader doing any work.
Keep the original order only when the categories have their own sequence: months, quarters, age bands, days of the week, sizes from small to large, or a Likert scale from "strongly disagree" to "strongly agree". Re-sorting those by value destroys information, because the gap between adjacent categories is itself meaningful.
Alphabetical order is the choice to avoid. It sorts your data by the spelling of the labels, which correlates with nothing, and it scatters related categories across the chart. The one exception is a reference chart people will use for lookup — but a table does lookup better than any chart.
Grouped and Stacked Bars
Once you have more than one measure per category you have two options, and they answer different questions.
Grouped (clustered) bars put each series side by side within a category. Every bar starts from the same baseline, so any bar can be compared to any other bar. This is the right default when the question is "how does each series compare?"
Stacked bars put the series end to end within one bar. The advantage is that the total is visible, and the series at the bottom of the stack still sits on the common baseline so it can be read accurately. The cost is that every segment above the bottom one floats — it starts wherever the segment below it ended — so comparing the middle of one bar to the middle of the next is genuinely hard. Readability falls off quickly past about three series; beyond that a stacked chart becomes a decorative block of colour.
If composition matters more than totals, a 100% stacked bar normalises every bar to the same length and shows share instead. You lose the totals entirely, so label them or pair the chart with the raw numbers.
This tool draws a single series. For a grouped comparison, generate one chart per series with the same categories in the same order and place them side by side — small multiples are often easier to read than a grouped chart anyway.
A Worked Example: Support Tickets by Channel
Here is a month of support volume by the channel it arrived through:
| Channel | Tickets |
|---|---|
| 1,482 | |
| Live chat | 1,103 |
| Phone | 640 |
| Help centre form | 318 |
| Social | 96 |
Paste the channel names into the labels box and the numbers into the values box, in the same order. Choose horizontal, because "Help centre form" is too long to sit under a vertical bar, and sort descending.
The chart earns its place immediately. Total volume is 3,639 tickets. Email and live chat together account for 2,585 of them — 71% — so those two bars fill most of the width and everything else is visibly a tail. Email leads live chat by a factor of 1.34, a modest gap that the chart shows as a modest gap. Social, at 96 tickets, is 15 times smaller than email, and on a zero-based axis its bar is a stub you can barely see. That is not a flaw in the chart; it is the finding. A channel carrying 2.6% of volume should not be getting equal staffing.
Now imagine the same chart with the axis starting at 1,000. Only the top two bars survive at all, email appears nearly five times larger than live chat, and the tail vanishes. Same data, opposite conclusion.
Common Mistakes
- Mismatched labels and values. The two boxes are matched line by line, so a blank line or an extra heading row in one box shifts every value onto the wrong category. The tool refuses to draw and tells you the two counts when they differ.
- Mixing units or scales in one chart. Revenue in dollars and headcount in people do not belong on the same axis. Use two charts.
- Plotting counts when you mean rates. Bigger regions have more of everything. If the question is "which region performs best", plot per-capita or per-customer figures.
- Adding a third dimension. Depth on a bar makes the front face read at a different length from the back, which is a distortion for no information gained.
- Chasing colour. A single-series bar chart needs one colour. Giving each bar its own colour implies a grouping that does not exist. The exception is highlighting: grey for everything, one accent colour for the bar you are discussing.