
Imagine you're a data analyst at a growing marketing agency. Your team creates dozens of Power BI reports each month for different clients, but every report looks different — different colors, fonts, layouts, and styling. Clients complain about inconsistency, your manager spends hours reformatting reports to match brand guidelines, and new team members struggle to create professional-looking dashboards. Sound familiar?
This chaos is exactly what Power BI templates and theme files are designed to solve. Templates provide a complete report structure you can reuse, while theme files ensure consistent colors, fonts, and styling across all your reports. Together, they transform your reporting workflow from a time-consuming design challenge into a streamlined, professional process.
By the end of this lesson, you'll have the practical skills to create branded, consistent reports that save time and impress stakeholders.
What you'll learn:
To follow along with this lesson, you'll need:
Before diving into creation, let's clarify what we're working with. Think of Power BI templates and themes like architectural blueprints and interior design guidelines for a house.
A Power BI template (.pbit file) is like a complete house blueprint. It contains the entire structure of your report: page layouts, visual arrangements, formatting, measures, and even data model relationships. However, it doesn't contain the actual data — just like a blueprint doesn't contain the furniture. When someone uses your template, they connect their own data source to populate the pre-built structure.
A Power BI theme (.json file) is like an interior design guide. It defines colors, fonts, and visual styling that can be applied to any report. Themes focus purely on appearance — they don't change your data or visual types, but they ensure everything follows consistent branding guidelines.
Here's when to use each:
Use templates when:
Use themes when:
Let's start by building a template for a monthly sales performance dashboard that your team can reuse for different clients or time periods.
First, create a new report in Power BI Desktop that will serve as your template foundation. For our example, we'll build a sales dashboard structure:
Now create a structured layout with these elements:
Page 1: Executive Summary
Page 2: Detailed Analysis
The key to a good template is creating a structure that works with different data sources. Here's how to make your template flexible:
Use descriptive titles and labels: Instead of "Q1 2023 Sales," use "Monthly Sales Performance" or include placeholder text like "[Period] Sales Results"
Create logical page organization: Structure your pages so they tell a story (Overview → Details → Analysis)
Add guidance text boxes: Include instructions like "Connect your sales data source here" or "Update date slicer for current period"
Set up flexible measures: Create DAX measures that work with standard column names:
Total Sales = SUM(Sales[Amount])
Sales Growth =
VAR PreviousPeriod = CALCULATE([Total Sales], DATEADD(Sales[Date], -1, MONTH))
RETURN DIVIDE([Total Sales] - PreviousPeriod, PreviousPeriod, 0)
Once your master report structure is complete:
The template file is now ready for reuse. Anyone can open this .pbit file, connect their own data source, and instantly have a professionally structured dashboard.
Now let's tackle the visual branding side with custom themes. We'll create a professional theme that could work for a corporate environment.
Power BI themes are JSON (JavaScript Object Notation) files that define color palettes and text formatting. Here's the basic structure:
{
"name": "Corporate Theme",
"dataColors": [
"#1f4e79",
"#2e75b6",
"#9dc3e6",
"#c5d9ed",
"#e1ecf7"
],
"background": "#ffffff",
"foreground": "#252525",
"tableAccent": "#1f4e79"
}
Let's break down each element:
Create a new text file and save it with a .json extension (like "corporate_theme.json"). Here's a complete professional theme:
{
"name": "Professional Blue",
"dataColors": [
"#1f4e79",
"#2e75b6",
"#70ad47",
"#ffc000",
"#c5504b",
"#9dc3e6",
"#a5a5a5",
"#595959",
"#c5d9ed",
"#e1ecf7"
],
"background": "#ffffff",
"foregroundLight": "#605e5c",
"foreground": "#323130",
"foregroundNeutralSecondary": "#605e5c",
"foregroundNeutralTertiary": "#a19f9d",
"backgroundLight": "#faf9f8",
"backgroundNeutral": "#f3f2f1",
"tableAccent": "#1f4e79",
"textClasses": {
"callout": {
"fontSize": 45,
"fontFace": "Segoe UI",
"color": "#323130"
},
"title": {
"fontSize": 24,
"fontFace": "Segoe UI Semibold",
"color": "#1f4e79"
},
"header": {
"fontSize": 18,
"fontFace": "Segoe UI Semibold",
"color": "#323130"
},
"label": {
"fontSize": 12,
"fontFace": "Segoe UI",
"color": "#605e5c"
}
}
}
This theme creates a professional appearance with:
To use your theme in Power BI:
Power BI immediately applies the theme to all visuals on all pages. You'll see:
Tip: Always test your theme on reports with multiple visual types (charts, tables, cards, maps) to ensure all colors work well together and maintain readability.
Professional organizations often need multiple theme variations for different purposes. Here's how to create a theme family:
Light Theme (for presentations and screens):
{
"name": "Corporate Light",
"background": "#ffffff",
"foreground": "#252525"
}
Dark Theme (for executive dashboards):
{
"name": "Corporate Dark",
"background": "#1e1e1e",
"foreground": "#ffffff",
"dataColors": [
"#4fc3f7",
"#81c784",
"#ffb74d",
"#f06292",
"#ba68c8"
]
}
When creating templates for team use, follow these guidelines:
1. Include Documentation Pages Add a "Read Me" page to your template with:
2. Use Consistent Naming Conventions Establish naming patterns:
3. Create Modular Templates Build templates with interchangeable sections:
For organizations managing multiple themes:
1. Organize by Purpose
2. Version Control Include version numbers in theme names:
{
"name": "Corporate Theme v2.1",
"version": "2.1",
"lastUpdated": "2024-01-15"
}
3. Test Across Scenarios Validate themes with:
Let's put everything together by creating a complete branded template system for a fictional consulting company called "DataWise Analytics."
Create a new JSON file called "datawise_theme.json":
{
"name": "DataWise Professional",
"dataColors": [
"#2c5aa0",
"#5b9bd5",
"#a5c5ed",
"#0066cc",
"#004080",
"#70ad47",
"#ffc000",
"#c5504b",
"#7030a0",
"#375623"
],
"background": "#ffffff",
"foreground": "#2c2c2c",
"foregroundLight": "#666666",
"backgroundLight": "#f8f9fa",
"backgroundNeutral": "#e9ecef",
"tableAccent": "#2c5aa0",
"textClasses": {
"callout": {
"fontSize": 48,
"fontFace": "Segoe UI Light",
"color": "#2c5aa0"
},
"title": {
"fontSize": 28,
"fontFace": "Segoe UI Semibold",
"color": "#2c2c2c"
},
"header": {
"fontSize": 16,
"fontFace": "Segoe UI Semibold",
"color": "#2c5aa0"
},
"label": {
"fontSize": 11,
"fontFace": "Segoe UI",
"color": "#666666"
}
}
}
Page 1: Executive Dashboard
Page 2: Product Analysis
Page 3: Geographic Insights
Add instruction text boxes on each page with guidance like:
Create standardized measure names:
KPI_Total_Sales = SUM(Sales[Sales])
KPI_Total_Profit = SUM(Sales[Profit])
KPI_Profit_Margin = DIVIDE([KPI_Total_Profit], [KPI_Total_Sales], 0)
Problem: Template doesn't work with new data source Solution: Check column name matching. Create generic measures that reference standard column names, or include mapping instructions in your template documentation.
Problem: Visuals break when loading template Solution: Avoid using calculated columns in templates — use measures instead. Calculated columns don't transfer well between different data sources.
Problem: Template file size is too large Solution: Remove sample data before saving as template. Use File → Transform data → Close & Apply without loading actual data rows.
Problem: Theme colors don't appear correctly Solution: Verify JSON syntax with an online JSON validator. Common issues include missing commas, incorrect quotation marks, or malformed color codes.
Problem: Some visuals don't adopt theme colors Solution: Check if visuals have manual color overrides. Reset visual formatting or create the visual after applying the theme.
Problem: Text appears unreadable with theme Solution: Test contrast ratios between background and foreground colors. Use online accessibility tools to verify readability standards.
Problem: Theme files don't appear in Power BI Solution: Ensure files have .json extension and valid JSON structure. Check file permissions and location accessibility.
Problem: Can't share templates with team members Solution: Store template and theme files in shared locations (SharePoint, OneDrive, network drives). Document file locations and access procedures.
Warning: Always test templates and themes thoroughly before distributing to your team. One broken template can disrupt multiple people's workflows.
You now have the practical skills to create professional, consistent Power BI reports using templates and themes. Templates solve the structural consistency challenge by providing reusable report layouts, while themes ensure visual branding consistency across all your reports.
Key takeaways from this lesson:
Your next steps should focus on implementation and refinement:
As you become more comfortable with these basics, explore advanced features like custom visuals integration, programmatic theme generation, and template automation using Power BI REST APIs. The foundation you've built here will support increasingly sophisticated reporting workflows as your Power BI skills develop.
Learning Path: Getting Started with Power BI