Check Out the Chart.js Course: Chart.js, The Missing Manual Course

Spacing Out Your Bars in Chart.js: Understanding barPercentage vs. categoryPercentage

Imagine you’re creating a bar chart in Chart.js to show how many hours different people spent studying. You want to see who studied the most, but the bars are all bunched up! It’s hard to tell which bar is higher. Here’s where barPercentage and categoryPercentage come in to help you space out your bars and make your chart clearer.

But what’s the difference between these two settings?

Both barPercentage and categoryPercentage affect spacing in your chart, but they target different things:

1. barPercentage:

  • Controls the width (horizontal bars) or height (vertical bars) of each individual bar relative to the total space available for all bars.
  • Think of it like a pie chart for all the bars in your chart. barPercentage determines the size of the slice of pie each individual bar gets.
  • Default value: 0.9 (90% of available space used by the bar)
  • Values: 0 to 1 (0: no bar width/height, 1: full width/height)

2. categoryPercentage:

  • Controls the space allocated for the bars themselves within the overall width or height of the chart area.
  • Imagine each category (like “John,” “Mary,” etc. on the x-axis) as a slice of a bigger pie representing the entire chart area. categoryPercentage determines how big that slice is for the bars.
  • Default value: 0.8 (80% of category space used by bars)
  • Values: 0 to 1 (0: no space for bars, 1: full space for bars)

Here’s a table to help you remember:

ControlsWidth/height of individual barsSpace for bars within category
AffectsSpace between barsSpace between categories and bars
Imaginary pieIndividual bar sliceCategory slice
Default value0.90.8
Values0 to 10 to 1
Understanding barPercentage vs. categoryPercentage


Think of your bar chart like a parking lot with rows (categories) and individual parking spaces (bars).

  • barPercentage controls the width of each parking space relative to the total space available in a row.
  • categoryPercentage controls the overall space allocated for parking within a row, leaving space for driving lanes between rows.

Choosing the Right Option:

  • Use barPercentage to adjust the width/height of individual bars for better readability when many bars are close in value.
  • Use categoryPercentage to control the overall spacing between bars and categories, especially if you have many categories or want to show additional information on the axes.

By understanding these differences, you can effectively control the spacing in your Chart.js bar charts, making them easier to read and understand for everyone!