How to make a bar graph: give each category one comparable value, draw equal-width bars from zero and label the measure. Use horizontal bars for long names. Check each value against the source, then export the chart or embed it with its data. Build the example below in the bar graph maker.
What are the six steps to build a bar graph?
- Choose the question and one measure for every category.
- Prepare a label column and a numeric value column.
- Choose horizontal bars or vertical columns.
- Keep a zero reference and put categories in a useful order.
- Add a title, units and source; inspect the labels at reading size.
- Check the values, save an editable copy and share the output.
If you’re drawing on paper, the same steps apply. If you’re using software, check what the software imported before choosing colors. A plausible-looking chart can still contain the wrong rows.
What data do you need before you start?
A bar graph compares one numeric measure across named categories, with every bar using the same unit and counting rule. A category is the thing named beside a bar, such as an acquisition channel. Its value might be a count, a cost or an average. Decide which before you copy the rows.
We’ll use fictional signup counts from one week. Each signup has one recorded primary channel. Email newsletter contributes 48, organic search 36, partner referrals 24 and community events 12. These counts total 120. These invented counts illustrate the method; they say nothing about our traffic or which marketing channel works best.
| Primary channel | Signups in the same week |
|---|---|
| Email newsletter | 48 |
| Organic search | 36 |
| Partner referrals | 24 |
| Community events | 12 |
Total repeated categories first. If your sheet contains one row per signup, count the signups in each channel before importing the rows. For a small list, write each distinct channel once, tally its occurrences in the original rows and place that count beside its name. Check that the category counts add up to the number of signup rows you started with. With our one-channel-per-signup rule, that check should give 120. A list of individual events and a list of category totals answer different questions.
Keep the grand total outside the category list. Adding “Total, 120” as another bar would put the combined result beside the parts that produced it. Also inspect dates: a full month for one channel and a single week for another won’t make a fair weekly comparison.
How do you make the example in the online maker?
Use Open in the maker below the live graph to start with its data, or open the bar graph maker and import your own rows. We checked the English interface on October 28, 2026. The import has a preview, so you can inspect the result before replacing the current data.
- Click Paste data. Paste the header and the four rows from the source table, with the channel first and the signup count second.
- Confirm the preview shows four rows and one numeric series. Click Use this data.
- Set Chart title to “Signups by channel, one fictional week”. In Chart shape, choose Bar for horizontal bars.
- Open Design. Use Sort by value when you want a ranking; open More settings to enter the source.
- Open Preview, inspect the chart and use Export when the numbers and labels are ready.
| Label | Signups |
|---|---|
| Email newsletter | 48 |
| Organic search | 36 |
| Partner referrals | 24 |
| Community events | 12 |
Email newsletter has twice the signups of partner referrals: 48 compared with 24. Community events has 12, one quarter of email’s count. Those relationships should remain visible after you change the theme or chart size. If an end label disappears on your phone, read the exact value in the source table above.
Try replacing one value below. Keep a label and a plain number on each line. The live result and its maker link should reflect your change. Use this small editor to check the comparison before adding more detail in the full maker.
Try it with your data
| Label | Value |
|---|---|
| Email newsletter | 48 |
| Organic search | 36 |
| Partner referrals | 24 |
| Community events | 12 |
Which six rules keep the graph readable?
1. Do all bars measure the same thing?
Use the same unit, time period and calculation for every bar in a comparison. A signup count can’t share a meaningful length scale with advertising spend. Two percentages can also hide different meanings: percentage of all signups is different from percentage of each channel’s visitors who signed up.
The second percentage is a conversion rate. Its denominator is the number you divide by: here, the visitor count for each channel. A channel with more signups doesn’t necessarily have a higher conversion rate, because the visitor totals can differ. Our example supplies no visitor counts, so it supports no conversion-rate claim.

If conditions belong in the decision, keep them beside the numbers. The comparison-chart guide shows how a table can preserve those conditions without squeezing them into a bar label.
2. Where should the value axis begin?
For positive bar values, start the value axis at zero so bar lengths preserve the ratios between categories. The value axis is the numeric scale; in our horizontal graph it runs left to right. ONS recommends a zero reference for bar charts because the filled length carries the comparison.
Consider only email and referrals. Their values are 48 and 24, a ratio of two to one. If a chart instead displayed lengths measured from 20, the visible lengths would be 28 and 4, a ratio of seven to one. The counts haven’t changed, but the picture would exaggerate their relationship.
Negative values can extend to the other side of zero, as with a loss or a change below a reference. Enter a negative number with its minus sign, for example Change, -6, and check that the bar extends left of zero in a horizontal graph. For a small difference between large positive values, consider a dot plot rather than truncating the bars. Our guide to graph types explains the alternatives.
3. Should the bars run horizontally or vertically?
Choose horizontal bars when category names need room; use vertical columns when the labels and their sequence fit naturally below the chart. “Partner referrals” remains easier to scan on a horizontal category axis than as a rotated label beneath a narrow column.
The orientation changes where you read the values, not what the values mean. Keep bar widths equal and gaps consistent. Avoid perspective or decorative shapes that make the edge of a bar hard to locate. The bar chart examples show the format with other measures.
For monthly values, preserve the calendar sequence. If the question is about a trend across many dates, a line graph may be a better choice. A horizontal ranking of months would make the biggest month easy to find while hiding the sequence that explains it.
4. Which order helps readers compare categories?
Sort unordered categories by value when readers need a ranking, but preserve a natural sequence such as months or age bands. ONS makes this distinction in its ordering guidance. Choose the order that answers the question.
Our channels have no natural sequence, so 48, 36, 24, 12 puts the largest first. If two values tie, choose a consistent secondary order and retain the tie; their bars should have equal lengths. For categories such as “Other” or “Did not answer”, explain their role and consider keeping them last rather than treating them as ordinary named options.
For a bar graph with several series, keep each series attached to the correct category. Don’t sort one column independently in a spreadsheet: that would pair a label with somebody else’s value.
5. Can readers understand the labels without color?
Label the categories and the measure directly so a reader can understand the comparison without decoding color alone. W3C guidance calls for another visible cue when color conveys meaning. Different colors don’t explain whether a value is a count, a percentage or a currency amount.
Use a title that gives the subject and period. “Signups by channel, one fictional week” tells readers more than “Results”. Keep the source or counting rule nearby. In this example, email has the largest count and twice as many signups as referrals.
A reader should be able to explain what one bar counts before comparing its length with another.
Provide the underlying values as text or a usable table. A short image description identifies a chart; more complex information needs a fuller text alternative. Our source table and adjacent explanation make this example checkable without relying on the illustrated scene or the colors of its bars.

6. Does the finished graph survive a small screen?
Inspect the graph at the size readers will see, with the title, category names and values visible together. On a phone, check the longest label first. Give the graph more height or use horizontal bars before making all its text smaller.
Read the first and last labels, then inspect the two closest values. Can you tell which is larger without guessing from a clipped name? Check light and dark themes if your page offers both. If you publish several charts for comparison, use consistent value scales so identical lengths carry identical meanings.
Keep definitions and limitations in nearby prose so the graph has room for its labels and values. A clear chart with a short explanation is easier to inspect than one crowded with tiny notes.
Try it with your data
New on Meiku Charts
Any currency and your own units in every maker
Find any of 156 currencies by name or code, or put your own unit before or after the number. The Design panel is also shorter.
See what changed →How do you draw the same bar graph on paper?
Draw a horizontal value axis from 0 to 50, using equal steps of 10 for this example. Put the four channel names down the left side. Draw equal-width horizontal bars ending at 48, 36, 24 and 12, with consistent gaps. Add a title and write that the values count signups in one fictional week.
The endpoint 48 sits between the 40 and 50 marks. The bar for 24 sits between 20 and 30. Don’t stretch the spaces between tick marks to fit a long label: move the label or give the drawing more room.
This is also how to make a bar graph with vertical columns: put the category names below and run the value scale upward. The count-to-length relationship stays the same. A maximum of 50 fits these values; your own scale must include the largest value in your dataset.
What should you check when the graph looks wrong?
First compare the imported rows with the source, then inspect the scale and labels. A theme change won’t repair an imported total or a value paired with the wrong category. Use the source table to distinguish a data problem from a display problem.
To check a correction, imagine discovering that referrals had 30 signups rather than 24. The revised total is 126. Email stays at 48, organic search at 36 and community events at 12. Only referrals changes; compare the revised graph with the first one on the same scale.
| Label | Signups |
|---|---|
| Email newsletter | 48 |
| Organic search | 36 |
| Partner referrals | 30 |
| Community events | 12 |
For raw measurements grouped into numeric ranges, such as response times, check whether you need a histogram. The histogram versus bar graph guide handles that distinction. For spreadsheet import, the Google Sheets guide covers preparing the cells.
How do you export the chart and keep it editable?
Use PNG for a slide or document, SVG when you need a scalable image, and an embed when the destination supports live HTML. An embed is code that places the chart on a web page. Save an editing link as well, so a later correction doesn’t require rebuilding the chart from a screenshot.
In the maker, Export contains the image downloads, embed and editing-link options. Free image exports carry the Meiku Charts mark and free third-party embeds carry a credit; Pro removes those marks. Check the exported file at its intended size, especially the longest category label.
A pasted spreadsheet isn’t an automatic feed. A PNG or SVG stays as downloaded. A live embed renders the values supplied in its specification and changes when you supply a revised specification. The embed documentation describes that update path.
After a correction, update the published chart and its nearby explanation together. In our hypothetical revision, replace “120 signups” with 126 and revisit “twice as many as referrals”: 48 divided by 30 is now 1.6. Keep the source rows, editing link and shared output together so the next person can find all three.
Comments