Theme Lab / free, no sign-up

Power BI theme generator with contrast built in.

Drop in your logo and get a complete Power BI theme JSON: brand data colours, readable text, page and visual backgrounds, borders and title fonts. Every text pair is checked against WCAG before you can download it.

Logo → palette WCAG AA / AAA Runs in your browser

Short answer

Is there a free Power BI theme generator?

Theme Lab is a free Power BI theme generator that runs in your browser with no account. Start from your colours, a logo or an existing theme file, set colours and fonts, check the contrast of every colour pair, and download a theme JSON that imports in Power BI Desktop or the Power BI service.

Local calibration bench

Shape the system, then inspect the result.

Files stay in this tab

Logo or image (PNG, JPG, WebP, SVG · 8 MB) or theme JSON (512 KB) · read in this tab, no upload

19/80
Data and semantic color6 data colors
#RRGGBB
#RRGGBB
#RRGGBB
#RRGGBB
#RRGGBB
#RRGGBB
#RRGGBB
#RRGGBB
#RRGGBB
#RRGGBB
Surfaces and borderVisual container defaults
#RRGGBB
#RRGGBB
#RRGGBB
#RRGGBB
#RRGGBB
Type and rhythmTheme + companion tokens
Density

Power BI theme JSON formats visuals, but it cannot enforce page layout spacing. Download the companion token recipe to retain this value for report modernization.

Accessibility target
REPORT SPECIMEN / LOCAL PREVIEW

VizForge Calibrated

comfortable
On-time delivery94.6%+3.2 pts against target
Throughput by lineLast 8 weeks
Healthy 18
Watch 4
Action 2

Contrast ledger

Required text pairs pass.

Export ready
Primary text on pageAA target 4.5:116.82:1
Primary text on visualAA target 4.5:117.74:1
Muted text on pageAA target 4.5:17.17:1
Muted text on visualAA target 4.5:17.56:1
Border on visual surfaceUI target 3.0:11.51:1
Positive indicator on visualUI target 3.0:15.42:1
Warning indicator on visualUI target 3.0:15.76:1
Negative indicator on visualUI target 3.0:16.57:1
Information indicator on visualUI target 3.0:16.70:1
  • Border on visual surface is 1.51:1 against its surface; 3:1 is recommended for non-text UI cues.

Deterministic output

Compile only what Power BI themes can express.

Unsupported imported fields are surfaced before export. No hidden token metadata is inserted into the Power BI theme.

Design the page around this themeOpens a blank 1920×1080 page (the Fluent 2 default) in the Design Studio with these colours and fonts as the brand kit. Export the background, theme and PBIP from there.
Open in Design Studio
Preview compiled JSON
{
  "name": "VizForge Calibrated",
  "dataColors": [
    "#3559E0",
    "#24A9B5",
    "#7A4DD8",
    "#D46B28",
    "#16794C",
    "#B42318"
  ],
  "background": "#F7F9FC",
  "foreground": "#111827",
  "tableAccent": "#1D4ED8",
  "good": "#16794C",
  "neutral": "#8A5D00",
  "bad": "#B42318",
  "maximum": "#16794C",
  "center": "#8A5D00",
  "minimum": "#B42318",
  "null": "#4B5563",
  "textClasses": {
    "callout": {
      "fontFace": "Segoe UI",
      "fontSize": 30,
      "color": "#111827"
    },
    "title": {
      "fontFace": "Segoe UI",
      "fontSize": 13,
      "color": "#111827"
    },
    "header": {
      "fontFace": "Segoe UI",
      "fontSize": 11,
      "color": "#111827"
    },
    "label": {
      "fontFace": "Segoe UI",
      "fontSize": 10,
      "color": "#111827"
    }
  },
  "visualStyles": {
    "page": {
      "*": {
        "background": [
          {
            "color": {
              "solid": {
                "color": "#F7F9FC"
              }
            },
            "transparency": 0
          }
        ]
      }
    },
    "*": {
      "*": {
        "background": [
          {
            "show": true,
            "color": {
              "solid": {
                "color": "#FFFFFF"
              }
            },
            "transparency": 0
          }
        ],
        "border": [
          {
            "show": true,
            "color": {
              "solid": {
                "color": "#CBD3DF"
              }
            },
            "radius": 6
          }
        ],
        "title": [
          {
            "show": true,
            "fontFamily": "Segoe UI",
            "fontSize": 13,
            "fontColor": {
              "solid": {
                "color": "#111827"
              }
            },
            "alignment": "left"
          }
        ]
      }
    }
  }
}

Theme Lab reads selected JSON and images with browser file APIs and a local canvas. The file, token values, extracted colours, diagnostics, and compiled output are not sent to VizForge and are not written to your account or a database. The Design Studio link carries the theme inside the URL itself. Site analytics may still record a page visit.

Theme is ready to export.

Apply it in two minutes

Import the theme JSON in Power BI Desktop

The same steps work for a .pbix file and a PBIP project. In the Power BI service, edit the report and open View → Theme pane instead of the Design ribbon.

  1. Download the theme JSON

    Fix any blockers in the contrast ledger, then choose Download Power BI theme. You get one .json file named after your theme.

  2. Open the Design ribbon in Power BI Desktop

    Open your report and select the Design ribbon. The Themes gallery sits there, with Import theme and Customize theme next to it.

  3. Import theme

    Choose Import theme (or Customize theme → Theme settings → Import theme), pick the downloaded .json file and select Open. Desktop confirms that the theme was imported. In the Power BI service, edit the report and use View → Theme pane. Older Desktop builds: View → Themes → Browse for themes.

  4. Check visuals that ignore the theme

    Visuals that were formatted by hand keep their own colours. Select one and use Reset to default in the Format pane so the theme can apply.

  5. Save it with the report

    Save the .pbix or PBIP project. The theme is stored inside the report, so colleagues see it without importing the file again.

Path: Design ribbon Import theme select your .json (service: View Theme pane)

A precise boundary

A theme is a system of defaults—not a report rewrite.

Expressed in theme JSON

Data and semantic colors, text classes, page and visual backgrounds, visual borders, titles, and supported font sizes.

Retained in token recipe

Density and spacing intent for later PBIR modernization, where layout and explicit per-visual formatting can be patched safely.

Not proven here

Desktop rendering, semantic bindings, bookmarks, visual-level overrides, customer-data behavior, or Microsoft approval.

Questions

Power BI theme generator FAQ

What does a Power BI theme generator actually produce?

A report theme JSON file. This one writes name, dataColors, background, foreground, tableAccent, good, neutral, bad, the diverging maximum/center/minimum colours, textClasses (callout, title, header, label) and visualStyles for the page background plus the default visual background, border, corner radius and title font. Power BI Desktop reads it through Design ribbon → Import theme (the service through View → Theme pane).

How do I build a Power BI theme from my company logo?

Choose Generate from logo and pick a PNG, JPG, WebP or SVG file. The image is decoded in your browser, its colours are grouped with a median-cut algorithm, and the most saturated, most visible colour becomes the accent and first data colour. Text, muted text and borders are then pushed darker or lighter until they pass the WCAG target you picked. Logos on a transparent background give the cleanest result.

Why did my brand colour change slightly?

Bright brand colours such as yellow, lime or sky blue often fall below 3:1 against a white visual. The generator darkens them just enough to reach 3:1 for indicators and 4.5:1 (AA) or 7:1 (AAA) for text, and tells you when it did. You can type the original hex back in; the contrast ledger will show what that costs.

Why are some visuals not changing colour after I import the theme?

Formatting set directly on a visual overrides the theme. Select the visual and use Reset to default on the property (or the whole Format pane section) and it will pick up the theme. Custom visuals only follow a theme if their author reads the theme colours.

Can a theme JSON set a page background image?

Yes. Power BI themes can embed a page background as a base64 data URI. Theme Lab sets the page colour; to design a full background with header bars, cards and your logo, open the theme in the Design Studio and export the background PNG or a theme with the image embedded. In the Format page pane, set Image fit to Fill and transparency to 0%.

What happens to theme properties I leave out?

They fall back to the report's base theme. New reports use the Fluent 2 base theme (Classic 2026 was the previous default), so any data colour, text class or visual style your JSON does not set comes from Fluent 2, including the 1920×1080 default size for new pages. Set a property explicitly when you need the same result in every report, and keep the base theme in mind when you compare a Fluent 2 report with an older Classic one.

Is my file uploaded anywhere?

No. JSON files and images are read with browser file APIs and a local canvas. Nothing is sent to VizForge or stored in a database. The Open in Design Studio link carries the theme inside the URL itself.

Does this work with PBIP and PBIR reports?

Yes. A theme is applied the same way to a .pbix or a PBIP project, and Desktop saves it inside the report folder. PBIR is now the default report format for new reports, so a PBIP project keeps the theme as a readable JSON file you can track in Git.

Need a chart Power BI doesn’t ship?

Describe it in plain English and VizForge generates a custom visual as a .pbiviz file, with its TypeScript source. In the design studio, hand any visual slot to the AI and the brief carries the slot size and your brand colours. Sankey, Gantt, bullet, waterfall and more: see the visual catalog.

Generate a custom visual with AI · starts free →