Power BI matrix column width sizing

I’ve been working with Power BI a lot lately on a “passion project” for myself. I’ll be starting to share more about that in the coming days but first I wanted to share a little tip (that I wish we didn’t need!) for sizing columns on Matrix visuals in Power BI.

I’ve read a number of other posts and suggestions around creating a measure with all “X’s” but they have never worked for me. I’m probably doing something wrong! ;)

The Problem: columns not aligning nicely

The scenario I had was two visuals with identical information, displayed in different units of measure (one in hours and one in dollars). I wanted the columns to line up visually when the visuals were stacked above each other. It seems like such a simple request!

This is what a couple of my visuals looked like, with red lines drawn for emphasis. I’ve blurred the data but you can tell from my headings that things are not lined up.

Screenshot of 2 nearly identical Power BI matrix visuals on a page, one above the other. The bottom visual’s columns are not aligned with the top visual.

“Before” the hack - columns not in alignment

The Solution

What I’m about to describe I had already done on the top visual initially and realized I should share this hack. (And yes, it is a hack!) This suggestion will work for other similar scenarios such as wanting to have the column widths equal for all columns.

TL;DR version

The steps I performed are:

  1. Rename each column with a text string the width I wanted the columns to be.
  2. Turn on Auto-size Column Width under Column Headers, then turn it off again.
  3. Rename the columns back the way I wanted.

Step 1 - renamed your columns with X’s

In this example, I used 12 “X’s” to get the width I wanted here. It doesn’t have to be an “X”, pick whatever text string you want. The intent is putting in a text string wider than the width you want the column to be, temporarily. Figure out what the widest column values are and make sure your width is a larger than that (or larger than the largest value you expect in your data).

Remember to take a screenshot before you rename the columns if you think you’ll forget what they were named! :)

Notice how some columns are wrapped text? Don’t worry about that, this will be corrected in Step 2.

Step 1 screeshot showing columns renamed with X’s.

Step 1 - rename columns with X’s

Step 2 - Toggle Auto-size Column Width

With the matrix visual selected, go to the Formatting tab, expand Column Headers, and temporarily turn on “Auto-size column width”. If that is on already, and your columns aren’t auto-sized, toggle it off and on again.

As you can see from the picture, any columns that were wrapped before are not, and all columns are sized to the width of the X’s. The first column got resized too, so I just manually dragged that back to the width I wanted. (I intended to put X’s on that but forgot for this example!)

Before you go to Step 3, turn “Auto-size column width” off. At this point, you do not want the column sizes changing as data refreshes.

Step 2 screenshot showing the formatting tab, column headers expanded and Auto-size column width selected.

Step 2 - auto-size columns enabled

Step 3 - Rename column headers back to what you want

With “auto-size” disabled, go back to your columns and re-set the headers that you want. The columns will stay at the width you’ve set.

Final screenshot showing 2 matrix visuals lined up with columns perfectly aligned to each other.


That’s it for this tip. The only thing I might add is I found I did this and got it looking as I wanted. However, I then proceeded with other changes to the visual that forced me to do it again. Do this last, after your content is finalized!

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy