Skip to main content

Logos in Headers Reference

CrossTable InCell Charts uses a different mechanism

This page describes CrossTable's fixed logo data roles (colLogoLvN/rowLogoLvN) and its Logos card. CrossTable InCell Charts replaced both with a unified, uncapped ⚙ editor and a zero-cost label→logo lookup — see Table Headers instead.

Overview

Logos let you display images inside row and column headers — for example company or brand logos in a competitor comparison, or product icons in a key-account table.

Each header level has its own image field. You bind a DAX measure that returns a base64 image to that field, then control how and how big the logo appears from the Logos card in the Format pane.

No external URLs

Logos are provided as base64 data URIs through the visual's data fields — never as an external URL. Every image is passed through sanitizeImageDataUri before being rendered, keeping the visual certification-safe (see Security & certification).


Data Fields (Series)

Logos are bound through five dedicated data fields, one per header level:

FieldApplies toHeader level
colLogoLv1ColumnsLevel 1 (outermost)
colLogoLv2ColumnsLevel 2
colLogoLv3ColumnsLevel 3
rowLogoLv1RowsLevel 1 (outermost)
rowLogoLv2RowsLevel 2

Each field accepts a measure returning a base64-encoded image (PNG, JPEG…), typically in the form:

data:image/png;base64,iVBORw0KGgoAAAANS...

A common pattern is a DAX measure that looks up the logo for the current header value:

Brand Logo =
SELECTEDVALUE( Brands[LogoBase64] )

Bind that measure to the field matching the level where the brand appears (colLogoLv1 if brands are the first column level, rowLogoLv1 if they are the first row level, and so on).

Logo data fields — Column Logo Lv1/Lv2/Lv3 and Row Logo Lv1/Lv2 wells


Logos Settings (Format pane)

All display options live in the Logos card of the Format pane.

Show logos

Setting: Show logos
Type: Toggle
Default: Off

Master switch. When off, no logo is rendered even if the image fields are bound.

Display mode (per level)

Setting: Display mode — configurable independently for each of the 5 levels
Options: Logo only, Logo above text, Logo under text

Controls how the logo is combined with the existing header label:

ModeEffect
Logo onlyThe logo replaces the header text
Logo above textThe logo is shown above the header label
Logo under textThe logo is shown below the header label

Size (per level)

Setting: Logo size (px) — one value per level

Sets the logo height (in pixels) for that level. Defaults:

LevelDefault size
Column Lv132 px
Column Lv224 px
Column Lv320 px
Row Lv124 px
Row Lv220 px

Outer levels default to larger logos than inner levels, so the hierarchy stays visually balanced. Adjust each level so logos of different source resolutions align consistently.

Logos card in the Format pane — Show logos toggle, Logo sizes and Logo display modes sub-cards, one value per level


Interaction with Tile Mode

When logos are enabled in Tile mode, tiles can be wider than usual and logos may have different natural sizes. Set Tile width to auto so every tile matches the widest header logo (measured after image decoding), keeping columns aligned.

See Tile Mode → Logos in headers for details.


Security & certification

  • Logo images are supplied as base64 data URIs only — no external URL is ever requested.
  • Every image is sanitized through sanitizeImageDataUri before rendering, so a malformed or unsafe data URI is rejected rather than displayed.
  • This keeps the logos feature compliant with Microsoft Power BI certification requirements (no external network access from the visual).

Examples

Column logos on level 1, Logo above text mode — an avatar sits above each age-group header:

Column logos displayed above age-group column headers

Row logos used as header icons — the same avatars identify each row group in a row-oriented layout:

Row logos displayed as row header icons


Troubleshooting

Logos don't appear
Check that Show logos is on and that the matching image field (colLogoLvN / rowLogoLvN) is bound to a measure returning a valid base64 data URI.

A logo shows for some headers but not others
The measure returns an empty/blank value for those header members. Ensure your logo lookup returns a base64 string for every value at that level.

The image is blank or broken
The data URI is malformed or was rejected by the sanitizer. Verify the string starts with data:image/…;base64, and contains valid base64 content.

Logos are misaligned or columns have uneven widths (Tile mode)
Set Tile width to auto so tiles equalize to the widest decoded logo. See Tile Mode.

Logos are too big/small at one level
Adjust the Logo size (px) for that specific level — each of the five levels has its own size setting.


For more help, see the Quick Start Guide or the Explore Table Features walkthrough.