The bar chart is the most honest default in data visualization: position on a shared baseline, length proportional to value, nothing decorative in the way. That also makes it the most misused. Here's when bars are right, and which chart to reach for when they're not.
If your x-axis is a set of discrete things, regions, product lines, channels, answers to a survey question, bars are usually correct. Human vision judges lengths against a common baseline extremely accurately, which is exactly the comparison you want the viewer making. If your x-axis is a continuous run of time or numbers, a line chart encodes the trend better, and connecting categorical bars with lines is a category error dressed up as sophistication.
Bars encode value by length, so the axis must start at zero; anything else rescales the lengths and manufactures drama. The classic offender is a revenue chart from $4.9M to $5.1M where the bar heights triple despite a 4% change. If a zero baseline makes your effect invisible, the honest responses are: change chart types (dots or lines), or accept that your effect is small. Truncating the axis is persuasion, not visualization.
| Situation | Use |
|---|---|
| Short labels, under ~8 categories | Vertical |
| Long category names | Horizontal |
| Many categories (10+) | Horizontal, sorted |
| Negative and positive values | Either; keep the zero line visible |
| Time on the x-axis (few periods) | Vertical |
Horizontal bars get underrated. Labels sit at full length down the left edge, and rankings read naturally top to bottom. The moment your vertical chart needs rotated or abbreviated labels, flipping it is a free win.
Default to sorting by value, descending. Exceptions where original order matters: time (Jan–Dec), ordinal scales (small–large, agree–disagree), or a sequence the viewer already knows (your product tiers). Sorting an unordered category list turns a table into a story: first, second, and "why is that one last?"
Paste labels and values, choose orientation and sorting, download a clean SVG with value labels.
Open the Bar Chart Maker →Stacked bars answer "what's the total and roughly how is it split?" They stop working past three or four segments, because upper segments float on a moving baseline and comparisons get shaky. Grouped bars answer "how does each category compare within each group?" and stay readable to about five categories times three series. Past that, small multiples (a mini chart per group) beat both.
The last one happens more than you'd think. If there's nothing to compare, there's nothing to chart. And when you're reporting change between two states, a quick percentage change calculation in the text usually lands harder than a two-bar chart.
Because a bar's length encodes its value. Chop the axis and you change the lengths, turning a 4% difference into a visually 300% one. Research on graphical perception, going back to Cleveland and McGill's work in the 1980s, consistently finds length judgments accurate precisely because the baseline is fixed. Line charts may truncate, since position carries the value there; bar charts may not.
A bar chart compares categories, and a histogram shows the distribution of a numeric variable. The visual tell: histogram bars touch, because the x-axis is a continuous number line split into bins, while bar chart bars have gaps, because categories are discrete. Stats classes are strict about the distinction; business decks usually aren't.
Almost always, unless the categories have a natural order people expect, like months, age brackets, or a rating scale. If the x-axis is time, keep chronological order. Otherwise sorting descending turns the chart from a lookup table into a ranking, which is the question viewers usually bring anyway.
For two or three segments, yes: totals stay readable and segment comparison within a bar works. Beyond four segments it gets muddy, because only the bottom segment sits on a common baseline; every segment above it is judged against a moving reference. Grouped bars handle more series but cap out too; past five categories times three series, use small multiples.