---
title: "How attribute formatting works in MangoMap"
description: "The Format tab changes how attribute values show in popups and search, not the stored data. See how renaming, formatting, and hiding differ."
seo:
  title: "How attribute formatting works"
sidebar:
  label: "How formatting works"
---

This page explains where attribute formatting applies and where it does not. It also explains the difference between renaming, hiding, and formatting an attribute.

## The Format tab in one sentence

The `Format` tab in the layer settings panel controls how each attribute on a layer **displays** in popups and search results. The underlying value in your data is never changed — formatting changes only how the value appears.

## The three things you can change per attribute

Each row on the Format tab has three independent controls:

- **Alias** — the text input on the left. The display label for the attribute. Renaming `pop_2024_estimate` to `Population (2024)` changes how popups, search results, and the legend name the field. The underlying field name in your data is unchanged.
- **Format** — the chip + pencil in the middle. The display format for the attribute's _value_. Changes how the value appears (`12345` as `12,345.00`, `$12,345`, `12.3 km`, `9 May 2026`). The underlying value is unchanged.
- **Visibility** — the eye toggle on the right. Whether the attribute appears in the default popup and data search results at all. Hiding an attribute does not delete it.

These three settings are independent. You can rename without changing the format, hide without renaming, or set a format on a hidden attribute (the format takes effect if you turn visibility back on later).

## Where formatting takes effect

Each value takes one of two paths: through the `Format` tab to what people read, or straight from your data to everything that filters, styles, or exports it.

<!-- diagram:attribute-formatting-flow -->
<svg class="dark:hidden" style="width: 100%; height: auto" viewBox="0 0 640 412" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="attribute-formatting-flow-inline-title attribute-formatting-flow-inline-desc">
  <title id="attribute-formatting-flow-inline-title">Formatted or raw</title>
  <desc id="attribute-formatting-flow-inline-desc">Data flow: a stored attribute value goes through the Format tab's alias, format and visibility to the default popup, custom popup variables, data search cards, print popups and the legend's field name and gradient or size numbers; filters and queries, styling, map labels, class break and category labels, and data exports use the value as stored.</desc>
  <defs>
    <marker id="attribute-formatting-flow-inline-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#525252"/></marker>
    <marker id="attribute-formatting-flow-inline-arrow-accent" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#c4360c"/></marker>
  </defs>
  <rect width="100%" height="100%" fill="#f5f5f5"/>
  <path d="M88 176 L88 96 Q88 88 96 88 L206 88" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#attribute-formatting-flow-inline-arrow)"/>
  <path d="M376 88 L406 88" fill="none" stroke="#c4360c" stroke-width="1.4" marker-end="url(#attribute-formatting-flow-inline-arrow-accent)"/>
  <path d="M88 240 L88 308 Q88 316 96 316 L406 316" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#attribute-formatting-flow-inline-arrow)"/>
  <rect x="108" y="64" width="64" height="16" rx="2" fill="#f5f5f5"/><text x="140" y="76" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">DISPLAY</text>
  <rect x="208" y="292" width="80" height="16" rx="2" fill="#f5f5f5"/><text x="248" y="304" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">AS STORED</text>
  <rect x="16" y="176" width="144" height="64" rx="6" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="88" y="205" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Raw value</text><text x="88" y="223" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">12345.6789</text>
  <rect x="208" y="56" width="168" height="64" rx="6" fill="rgba(196,54,12,0.08)" stroke="#c4360c" stroke-width="1.4"/><text x="292" y="85" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Format tab</text><text x="292" y="103" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">alias, format, visibility</text>
  <rect x="408" y="16" width="216" height="180" rx="6" fill="#ffffff" stroke="#171717" stroke-width="1"/><line x1="408" y1="64" x2="624" y2="64" stroke="rgba(23,23,23,0.12)" stroke-width="1"/><text x="424" y="38" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="start">Shown formatted</text><text x="424" y="55" fill="#525252" font-size="12" font-family="inherit" text-anchor="start">for example 12,346</text><text x="424" y="84" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Default popup and side panel</text><text x="424" y="104" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Custom popup variables</text><text x="424" y="124" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Data search cards</text><text x="424" y="144" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Print popups</text><text x="424" y="164" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Legend field name</text><text x="424" y="184" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Gradient and size legend ends</text>
  <rect x="408" y="236" width="216" height="160" rx="6" fill="#ffffff" stroke="#171717" stroke-width="1"/><line x1="408" y1="284" x2="624" y2="284" stroke="rgba(23,23,23,0.12)" stroke-width="1"/><text x="424" y="258" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="start">Used as stored</text><text x="424" y="275" fill="#525252" font-size="12" font-family="inherit" text-anchor="start">for example 12345.6789</text><text x="424" y="304" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Filters and queries</text><text x="424" y="324" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Styling rules</text><text x="424" y="344" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Map labels</text><text x="424" y="364" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Class and category labels</text><text x="424" y="384" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Data exports</text>
</svg>
<svg class="hidden dark:block" style="width: 100%; height: auto" viewBox="0 0 640 412" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="attribute-formatting-flow-inline-dark-title attribute-formatting-flow-inline-dark-desc">
  <title id="attribute-formatting-flow-inline-dark-title">Formatted or raw</title>
  <desc id="attribute-formatting-flow-inline-dark-desc">Data flow: a stored attribute value goes through the Format tab's alias, format and visibility to the default popup, custom popup variables, data search cards, print popups and the legend's field name and gradient or size numbers; filters and queries, styling, map labels, class break and category labels, and data exports use the value as stored.</desc>
  <defs>
    <marker id="attribute-formatting-flow-inline-dark-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#a3a3a3"/></marker>
    <marker id="attribute-formatting-flow-inline-dark-arrow-accent" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#ff7a4d"/></marker>
  </defs>
  <rect width="100%" height="100%" fill="#141414"/>
  <path d="M88 176 L88 96 Q88 88 96 88 L206 88" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#attribute-formatting-flow-inline-dark-arrow)"/>
  <path d="M376 88 L406 88" fill="none" stroke="#ff7a4d" stroke-width="1.4" marker-end="url(#attribute-formatting-flow-inline-dark-arrow-accent)"/>
  <path d="M88 240 L88 308 Q88 316 96 316 L406 316" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#attribute-formatting-flow-inline-dark-arrow)"/>
  <rect x="108" y="64" width="64" height="16" rx="2" fill="#141414"/><text x="140" y="76" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">DISPLAY</text>
  <rect x="208" y="292" width="80" height="16" rx="2" fill="#141414"/><text x="248" y="304" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">AS STORED</text>
  <rect x="16" y="176" width="144" height="64" rx="6" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="88" y="205" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Raw value</text><text x="88" y="223" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">12345.6789</text>
  <rect x="208" y="56" width="168" height="64" rx="6" fill="rgba(255,122,77,0.10)" stroke="#ff7a4d" stroke-width="1.4"/><text x="292" y="85" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Format tab</text><text x="292" y="103" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">alias, format, visibility</text>
  <rect x="408" y="16" width="216" height="180" rx="6" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><line x1="408" y1="64" x2="624" y2="64" stroke="rgba(242,242,242,0.14)" stroke-width="1"/><text x="424" y="38" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="start">Shown formatted</text><text x="424" y="55" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="start">for example 12,346</text><text x="424" y="84" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Default popup and side panel</text><text x="424" y="104" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Custom popup variables</text><text x="424" y="124" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Data search cards</text><text x="424" y="144" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Print popups</text><text x="424" y="164" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Legend field name</text><text x="424" y="184" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Gradient and size legend ends</text>
  <rect x="408" y="236" width="216" height="160" rx="6" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><line x1="408" y1="284" x2="624" y2="284" stroke="rgba(242,242,242,0.14)" stroke-width="1"/><text x="424" y="258" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="start">Used as stored</text><text x="424" y="275" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="start">for example 12345.6789</text><text x="424" y="304" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Filters and queries</text><text x="424" y="324" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Styling rules</text><text x="424" y="344" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Map labels</text><text x="424" y="364" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Class and category labels</text><text x="424" y="384" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Data exports</text>
</svg>
<!-- /diagram:attribute-formatting-flow -->

Formatted values appear in:

- **The default popup** — what users see when they click a feature on the map.
- **Custom popup templates** — variables you embed (like `{population}`) substitute the formatted value, not the raw value. Hiding an attribute doesn't remove it from a custom template.
- **Data search results** — the result cards on the data search panel.
- **Gradient and size legends** — the numbers at the ends of a continuous colour gradient and beside a size key.
- **Print and export popup overlays** — popups in printed maps or PDFs use the formatted value.
- **The default popup side panel** — the inline panel version of the popup.

If you set `population` to `Number` → `Integer`, every place above shows `12,346` instead of `12345.6789`.

## Where formatting does NOT take effect

A few surfaces always use the raw value:

- **Legend class breaks** for quantity-styled layers set to a class count. The legend uses raw numeric values for class boundaries. Setting a `Number` format on the field doesn't change those labels.
- **Filters and queries**. Filtering by `population > 10000` operates on the raw number. Currency formatting doesn't change the comparison.
- **Styling rules and category labels**. Category and quantity styles read the raw value, and category labels in the legend show it as stored. To change a category or class label, edit it in the style's `Customise categories` or `Customise Class Breaks` panel.
- **Map labels**. Labels on the map show the value as stored.
- **Exports of the underlying data**. Downloading a layer as CSV or GeoJSON exports raw values without formatting.

Formatting changes display only. Analysis, filtering, styling, and export use raw values.

## Why some columns have no format options

The `Format` tab shows alias and visibility controls for every attribute, but the format chip and pencil only appear for columns that have something to format. Text, true/false, ID, and nested-data columns always display as their raw values — there's no decimals or currency to apply.

The columns that get format options are the ones holding numbers, dates, or measurements.

## Auto detect — what the default does

New attributes default to `Auto detect`, which means MangoMap picks a sensible format based on the value.

`Auto detect` is fine for most casual use. Set an explicit format (`Number`, `Currency`, `Measurement`, `Date & Time`) when you want consistent precision, a specific symbol, or a particular date pattern across every feature.

## A common confusion

**"My class breaks in the legend show 17.34219 instead of 17."** Class-break labels use the raw value, not the `Format` settings. Round the boundaries in the style's `Customise Class Breaks` panel. Those edits live with the style, not the format. Gradient and size-key numbers do follow the `Format` settings.

**"I renamed my field but a category still shows its old text."** The alias renames the field, and the legend uses it wherever it names the field. It doesn't rename the values in the field. Category and class labels live in the style; edit them in `Customise categories` or `Customise Class Breaks`. See [How to customise category and class break symbology](/docs/styling-layers/customise-category-and-class-break-symbology).

**"I set a format but my popup looks unchanged."** Two likely causes. Either the popup is configured as `None` (which means no popup at all), or the attribute is hidden via the visibility eye. Check both before assuming the format isn't applying.

## Related

- [Attribute format controls](/docs/formatting-attributes/attribute-format-reference)
- [How to format a number column](/docs/formatting-attributes/format-numbers)
- [How to format a date column](/docs/formatting-attributes/format-dates)
- [How to rename an attribute label](/docs/formatting-attributes/rename-attribute)
- [How to hide an attribute from popups](/docs/formatting-attributes/hide-attribute)

---
