Use Custom Formatting Themes

Tableau comes installed with many formatting options so that you can customize your visualizations and dashboards to suit your needs. If you use the same formatting for many workbooks, or if you have special fonts and colors that work better for your business, you can use a custom formatting theme to save time. Custom themes quickly apply your formatting choices to the entire Tableau workbook.

You can add a custom theme to your Tableau workbook by importing a JSON file that specifies your formatting choices. Likewise, if you’re viewing a workbook and you want to use the same theme on another workbook, you can export the custom theme file.

Note: This feature is available only in Tableau Desktop 2025.1.

Import a custom theme

  1. Open Tableau Desktop and create a worksheet.

  2. From the toolbar, select Format.

  3. Select Import Custom Theme…

    A format menu with "Import Custom Theme" option chosen.

  4. Select a JSON file to import and select Open.

    A dialog appears with options to Override or Preserve any existing formatting edits that you've made.

    A dialog box offering the choice to use a custom theme to either replace or maintain the current formatting.

    You can choose to have the custom theme override all formatting changes made to your Tableau workbook before importing the custom theme. You can also choose to keep changes made through the formatting pane before importing the custom theme.

    Note: If you choose to have the custom theme override existing formatting edits, it will only override style changes that you have included in the JSON file. It also will not override style changes made through the rich text editor.

    Override: The custom theme file will override any formatting done to your Tableau workbook.

    Preserve: The custom theme file will preserve any formatting done to your Tableau workbook.

  5. Select Override or Preserve.

Your custom theme imports and applies formatting to your workbook.

Export a custom theme

You can export a custom theme in two ways: You can export the custom theme file, or you can export a workbook with a custom theme applied. When you export a theme, the export file includes the formatting choices made on the worksheet you selected. For example, if you have different formatting choices on two different worksheets within a workbook, the custom theme file you export will reflect the formatting choices on the worksheet you selected when you exported the file. Only style elements that are supported and present in the custom theme file will be exported.

Export a JSON file that contains a custom theme

  1. From the toolbar, select Format.

  2. Select Export Custom Theme…

    A format menu with "Export Custom Theme" option chosen.

  3. Navigate to the folder where you'd like to save the custom theme file and press Save.

You can now find the custom theme file locally. This theme file can be imported to and used with other workbooks.

Export a workbook with a custom theme applied

  1. From the toolbar on a worksheet, select File and then choose Save As.

    Alternatively, you can select Export Packaged Workbook.

  2. Save the workbook as a .twb or a .twbx file.

When you reopen the workbook in Tableau, the custom theme will be applied.

Create the JSON theme file

A JSON file is where the styles in your custom theme are defined. You can create a file using your favorite text editor, making sure to include the style elements you want for your custom theme. Use the example file as a template for creating your file.

There are many third-party resources that can help you validate your file, such as https://www.jsonschemavalidator.net.

Copy the JSON schema file needed to validate your theme file here.

Elements to include in the custom theme file

Your custom theme file should contain a version, base theme, style elements, style attributes, and formatting choices.

Version

The first line of the custom theme file should contain the version. As of Tableau 25.1, the version number is 1.0.0, and the line should look like this: "version": "1.0.0".

The version number may be updated in future versions of Tableau.

Base-theme

The second entry of the custom theme file should contain the base-theme. The base theme corresponds to existing workbook themes available in Tableau, and are based on different versions of Tableau Desktop. Any formatting styles specified in the json theme file will be applied on top of the base theme.

Base theme Corresponds with Entry in the theme file
Smooth Tableau Desktop Versions 10.x and newer "base-theme": "smooth"
Clean Tableau Desktop Versions 8.0.x – 9.3.x "base-theme": "clean"
Modern Tableau Desktop Versions 3.5 – 7.0. "base-theme": "modern"
Classic Tableau Desktop Versions 1.0 – 3.2 "base-theme": "classic"

For more information on workbook themes, see Upgrade or change your workbook theme (Tableau Desktop only)

Style elements

The style elements specify at what level the formatting choices will be applied. For example, All fonts, filter titles, or just tooltip fonts. See the style elements table for a list of available elements to specify.

Style attributes

The style attributes specify the part of the style element that you'd like the formatting choices to be applied to. For example, font-color and font-size for the All style element.

Be sure to check the list of attributes for the style element you’re using. For example, while the highlighter style element supports a background color style attribute, the highlighter-title element does not.

Formatting choices

The formatting choices specify what you'd like to apply to the style element and style attribute. For example, a font color, font family, and font size. The formatting choice must be entered as a string or an integer, depending on the style attribute. Colors must be entered as a hex color code, such as #FF0000.

A string input type contains text.

An integer input type contains whole numbers.

Example custom theme file

Copy
{   "version": "1.0.0",
    "base-theme": "smooth",
    "styles": {
        "all": {
            "font-color": "#d16302",
            "font-family": "Tableau Bold"
        },
        "worksheet": {
            "font-color": "#d16302",
            "font-family": "Tableau Bold",
            "font-size": 14
        },
        "worksheet-title": {
            "font-color": "#d16302",
            "font-family": "Tableau Bold",
            "font-size": 14
        },
        "view": {
            "background-color": "#ffb370"
        }
    }
}

Style elements supported with custom themes

This table contains a list of supported style elements and their corresponding supported style attributes. While not all style elements available in Tableau are currently supported for custom themes, we will be adding more style elements in future releases. When you import a custom theme file, its style elements will apply to all worksheets in the workbook.

Style Element Description Style Attributes Input Type Formatting Choice
all Formats all fonts across the entire workbook. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
worksheet Formats the worksheet default font. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
worksheet-title Formats the worksheet title font. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
tooltip Formats the tooltip font. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
dashboard-title Formats the dashboard title. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
font-weight String String specified as normal or bold.
story-title Formats the story title font. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
header Formats the header font. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
legend Formats the legend body font and background color. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
background-color String String that follows the format of a hex color code, such as #FF0000. This element also supports two additional digits for transparency, such as #FF000080.
legend-title Formats the legend title font on all worksheets. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
filter Formats the filter body font and background color on all worksheets. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
background-color String String that follows the format of a hex color code, such as #FF0000. This element also supports two additional digits for transparency, such as #FF000080.
filter-title Formats the filter title font on all worksheets. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
parameter-ctrl Formats the parameter body font and background color on all worksheets. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
background-color String String that follows the format of a hex color code, such as #FF0000. This element also supports two additional digits for transparency, such as #FF000080.
parameter-ctrl-title Formats the parameter control title font on all worksheets. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
highlighter Formats the highlighter body font and background color on all worksheets. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
background-color String String that follows the format of a hex color code, such as #FF0000. This element also supports two additional digits for transparency, such as #FF000080.
Highlighter-title Formats the highlighter control title font on all worksheets. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
font-size Integer Integer with a minimum value of 1 and a maximum value of 99.
page-ctrl-title Formats the page card title font on all worksheets. font-color String String that follows the format of a hex color code, such as #FF0000.
font-family String String with a maximum length of 50 characters.
gridline Formats the gridlines on a view. line-visibility String String specified as on or off.
line-pattern String String specified as dotted, dashed, or solid.
line-width Integer Integer with a minimum value of 1 and a maximum value of 99.
line-color String String that follows the format of a hex color code, such as #FF0000. This element also supports two additional digits for transparency, such as #FF000080.
zeroline Formats the zeroline on a view. line-visibility String String specified as on or off.
line-pattern String String specified as dotted, dashed, or solid.
line-width Integer Integer with a minimum value of 1 and a maximum value of 99.
line-color String String that follows the format of a hex color code, such as #FF0000. This element also supports two additional digits for transparency, such as #FF000080.
mark Formats the mark color on a view. mark-color String String that follows the format of a hex color code, such as #FF0000.
view Formats the background color on a view.   String String that follows the format of a hex color code, such as #FF0000.

Troubleshoot importing custom theme files

Some of my style elements aren't applied

Invalid font type
Formatting was applied through the rich text editor

Can't import the theme file

The theme file contains an error
The theme file size is too large
The theme file path is too long