You can customize the look and feel of the Power BI reports using the formatting pane for each specific visual or you can speed up the process by using a JSON file.
This feature (the JSON file) has been available for quite a while but the documentation is poor and unfortunately, a lot of the elements wont work even when you add them correctly to the file.
To be able to manage this, I have created my own guide for the JSON file and I am making it available for you to purchase, as well as my complete JSON file:
-
JSON Theme Bundle (Guide +JSON) for Power BI by Curbal 2024449 € (Price excl. VAT: 359 €)
-
Complete JSON Theme for Power BI by Curbal 2024299 € (Price excl. VAT: 239 €)
-
JSON Theme Guide for Power BI by Curbal 2024299 € (Price excl. VAT: 239 €)
User Guide to the JSON Guide Template
Here is a video explaining everything, but if you prefer to read, skip the video and scroll to the text:
I have created a Power BI report that contains the following:
- A Welcome Page, or in other words, your home page with links to all the resources available in the report. Just click on the images to go to different tabs and start customizing your theme.
- A Labels Page, will allow you to search for Power BI visuals to find what labels are available for them. The labels are displayed in the same order as they appear in Power BI. Once you find the label you are looking for , right-click to go to the Properties Page, where all properties and values are listed.
- A Properties Page, is hidden as it is used as a drillthrough for the Labels Page. Here you can see the name of the properties in the JSON file and the type you use for them. Once you are done, click the back arrow to go back to the Labels Page.
- A Bulk Page, will allow you to search for visuals, labels or properties without having to go to the Label Pages. It can also list all the visuals that have a specific property if you want to do bulk editing.
- A Font Page, will show the JSON name for the fonts and show you the default fonts for the Curbal theme.
- and finally, the Color Page, will list all the colors available for this theme and give you their HEX code as well as some best practices.
And the following fields are available for you, so you can start modifying your JSON file:
- PBI Visual Order: Sorts the visuals in the same order they are placed on Power BI Desktop
- PBI Visual: Name of the Power BI visual
- JSON Visual: Name of the Power BI visual in the JSON file
- PBI Label Order: Sorts the labels in the same order they are placed on Power BI Desktop
- PBI Label: Name of the Power BI label
- JSON Label: Name of the Power BI label in the JSON file
- PBI Property Order: Sorts the properties in the same order they are placed on Power BI Desktop
- PBI Property: Name of the Power BI property
- JSON Property: Name of the Power BI property in the JSON file
- Description: Short description of what this property sets in Power BI Desktop
- PBI Value: Explains if the property is a text, number, color, etc and shows the dropdown options available for each property.
- JSON Value: Explains if the property is a text, number, color, etc and shows the dropdown options available for each property and the JSON name for each option.
and the Power BI file contains:
- 2,474 rows with properties,
- 29 visuals,
- 156 (distinct) properties and
- 76 (distinct) labels
This is a snapshot of what you will get.

Comments
- The JSON file included in the Power BI report is the default one with some modifications.
- The properties specified on the report are in the same order as you will find in Power BI Desktop (at the time this was published).
- Keep in mind that some properties are set globally. Locally set properties normally override global properties.
- If you find a question mark on a property, it means that it is either not available yet, not possible or I just couldn’t figure it out.
User guide to the JSON file
If you purchase this product you will get Curbal’s JSON file that contains almost* all of the properties available at the moment of publishing it.
You have also available for purchase the JSON Theme Guide that will explain all the properties used in this file here or you might prefer to get both in this bundle here.
*NOTE: There are around 2% of the properties (60 out of 2.474) that either they are not available yet, not possible to configure using the JSON file or I just couldn’t figure them out. Those properties are marked with “?” in the file.
Contents
The JSON file contains all available and known properties needed to customize your Power BI file with your own theme, including:
- 29 visuals,
- 156 properties and
- 76 labels
Screenshot of the JSON file:

Comments
- The JSON file contains the colors, font and branding theme for Curbal. Feel free to use it in your reports if you like it.
- The properties specified on the JSON file are in the same order as you will find in Power BI Desktop (at the time this was published).
- If the property is not active it will have an underscore at the end of the name: “fontSize_”. To make the property available, just remove the underscore.
- Keep in mind that some properties are set globally. Locally set properties normally override global properties.
- If you find a question mark on a property, it means that it is either not available yet, not possible or I just couldn’t figure it out.
Purchase the guide and JSON file
If you want to customize the guide and JSON file, they are available for you to purchase here:
-
Google Analytics 4 Template App by Curbal449 € (Price excl. VAT: 359 €)
-
JSON Theme Bundle (Guide +JSON) for Power BI by Curbal 2024449 € (Price excl. VAT: 359 €)
-
Complete JSON Theme for Power BI by Curbal 2024299 € (Price excl. VAT: 239 €)
-
JSON Theme Guide for Power BI by Curbal 2024299 € (Price excl. VAT: 239 €)
Hopefully you will find this template as useful as I have and it gets you started creating Power BI templates in no time
Release Notes
Release Date | Version | Notes |
2019-12-XX | v6 | Not released yet |
Thanks a lot for this. it is very helpful. Please is it possible to have access to the power bi file used. Thanks a lot
Sure,
I will post a link shortly!
/Ruth
Thanks for all the help. Are you able to apply a background image using the JSON file?
Unfortunately, not yet, but hopefully soon!
/Ruth
Davi,
a combination of extract after delimiter @ and before delimiter from add column and transform columns does the trick (all buttons, no M code needed).
let
Source = Excel.CurrentWorkbook(){[Name=”Table1″]}[Content],
#”Changed Type” = Table.TransformColumnTypes(Source,{{“Column1″, type text}}),
#”Inserted Text Before Delimiter” = Table.AddColumn(#”Changed Type”, “Username”, each Text.BeforeDelimiter([Column1], “@”, 0), type text),
#”Extracted Text After Delimiter” = Table.TransformColumns(#”Inserted Text Before Delimiter”, {{“Username”, each Text.AfterDelimiter(_, ” “, {0, RelativePosition.FromEnd}), type text}}),
#”Inserted Text After Delimiter” = Table.AddColumn(#”Extracted Text After Delimiter”, “Domain”, each Text.AfterDelimiter([Column1], “@”, 0), type text),
#”Extracted Text Before Delimiter” = Table.TransformColumns(#”Inserted Text After Delimiter”, {{“Domain”, each Text.BeforeDelimiter(_, ” “, 0), type text}}),
#”Merged Columns” = Table.CombineColumns(#”Extracted Text Before Delimiter”,{“Username”, “Domain”},Combiner.CombineTextByDelimiter(“@”, QuoteStyle.None),”Email”)
in
#”Merged Columns”
It could get tricky at the end of the email address. The only thing I might add would be a way of trimming any punctuation and other non-valid characters from the end of the email address. The above scenario works for your cases which have a space before and after the email address.
Hi Ruth, thanks for making our lives easier 😉 having trouble downloading the file, though. I’m getting a 404. Can you maybe e-mail it to me? Thanks a lot!
Hi Leenke,
Here is the new link:
https://curbal.com/wp-content/uploads/2017/11/Curbal_PowerBI_theme.txt
/Ruth
Another very clever article and supporting videos. Certainly removes repetitious and boring work. Thank you.
Thanks Christopher 🙂
/Ruth
Hi, Ruth
Your explanation is really great and it helped me a lot in understanding power bi theme template files. However I have one task that I am still not able to solve. I wonder if it is possible using Power BI Template or other technic that you may know.
We have multiple visuals that present same metric. We display handled/lost call count on “Column chart” with timeline Y-axis, and on “Pie chart” for general overview.
We would like to have the same data colors (handled – green, lost – red) across all different visuals. However Power BI quite often resets the color setting. It takes color from predefined list from Theme file, but still we can’t predict which exact color will be chosen for specific legend category.
I thought it would be possible to solve using JSON template file, but I do not see “Data Colors” among card names for any visual.
Hi Ivan,
Here is how I think it works:
If you override the default settings of a template, they will be maintained until you choose to reset back to default.
Power BI should respect the order in which you add the colors in the template, again, unless you manually override them.
Hope this helps!
/Ruth
Hi Ruth,
This is really fantastic work and extremely helpful, especially with regard to the styles and cards that are uneditable at the moment. It is incredibly frustrating trying to navigate those on your own and Microsoft have as far as I can tell not provided a single shred of documentation on the matter.
Do you know anything about what we can expect with regard to styles and cards that are uneditable at the moment?
Thanks,
Best,
Michel
Hi Michael, thanks!! 🙂
I have no idea and I wish it was yesterday. It is a try and error process until they decide to fix it. Send them a tweet @mspowerbi to remind them 🙂
/Ruth
Hello, I really like your work and the challenges you bring to the Curbal Channel.
I would like to propose a challenge.
Extract an email from a phrase.
Example 01:
My name is David Martins and this is my email: e-mail@example.com
Example 02:
My email is e-mail@example.com to send the channel files.
That is, extract only the emails in a position-independent column using Power Query.
With VBA it is possible! But what about Power Query? This is the challenge proposed for MVPs.
Hi David,
You mean to extract example.com from the email addresses?
/Ruth
Nice post! I too thought the Documentation for Power BI Themes need some work. Thank you for clearing things up. How do you use Drillthrough feature with a Live Power BI report? Right click doesn’t seem to be doing the trick…
Hi David,
Thanks, really happy it is useful 🙂
What do you mean with a Live report? Publish to web, or in powerbi.com or embedd? It should work on all cases though…
/Ruth
Very, very helpful – thank you!
Thank you Amanda! I will continue updating it as I find time for it.
/Ruth