---
title: "How to vary marker size by zoom level"
description: "Make circle markers grow or shrink as viewers zoom the map, using up to six zoom stops. This is scale-dependent sizing for point layers."
sidebar:
  label: "Vary marker size by zoom"
---

Turn on `Vary size by zoom level`, and circle markers change size as viewers zoom: small at country level, larger at street level. It works only on `Circle` markers, and switching the layer to another marker type deletes your zoom stops.

**[See it on an example map](https://mangomap-staging.com/examples-staging/maps/042tb3tl/world-point-styling-lab)**

Open the World Point Styling Lab. In the legend, turn on the `Zoom Styling` folder. This also turns on `Major Cities — Zoom Styling`. Turn off the `Size and Colour` folder, then zoom in. The markers grow. In the `Two Fields` folder, `Major Cities — Population, Zoom Scaled` is the saved version of the scale stops on a sized layer.

{/* video-content: id=vary-marker-size-by-zoom
Start: A fully loaded map with the Style tab open for a point layer. Marker type
is Circle, Size markers by is Uniform size, and the marker size is 8 px. The map
shows the layer at about zoom 3, with many small markers.

Show:

1. Click the Vary size by zoom level button at the end of the marker size row.
   Two zoom stops appear: zoom 1 at 4 px and zoom 12 at 8 px.
2. Drag the size slider on the zoom 12 stop to 20 px. The curve chart rises.
3. Click Add stop. Type 14 in the new stop's Zoom box, and drag its size slider
   to 40 px, the largest size.
4. Click Save.
5. Zoom the map in with the map's zoom-in control from zoom 3 to zoom 14. The
   markers grow from about 7 px to 40 px.

End: The map at zoom 14, with two very large markers (Rome and Vatican City).

Exclude: Authentication, loading screens, fixture setup, the Curve slider,
Remove stop, other marker types, and size by a field. The spec must
restore the layer's original style after capture, outside the recording.
*/}
{/* walkthrough: id=vary-marker-size-by-zoom */}
<video
  src="/_assets/walkthroughs/vary-marker-size-by-zoom.webm"
  controls muted playsInline width="960">
  <track kind="captions" src="/_assets/walkthroughs/vary-marker-size-by-zoom.vtt" srclang="en" default />
</video>

{/* /walkthrough */}

## Before you start

- The layer must be a point layer with `Marker type` set to `Circle`. `Icon`, `Custom Icon`, and `Heatmap` markers can't vary their size by zoom.
- You need edit access to the map.
- Decide roughly how big markers should be when the map is zoomed out and when it's zoomed in. For typical zoom levels, see [How to set the zoom range a layer is visible at](/docs/styling-layers/set-layer-zoom-visibility).

## Open the Style tab

In the layer panel, select your point layer. Click the `Style` tab.

## Turn on zoom sizing

1. Check that `Size markers by` is set to `Uniform size`.
2. At the end of the marker size row, click the `Vary size by zoom level` button.

If `Size markers by` is set to a field, see "If you also size markers by a field" below.

The size slider is replaced by a list of zoom stops. A zoom stop is a zoom level and the marker size at that zoom. You start with two stops. With the default 8 px marker, that is 4 px at zoom 1 and 8 px at zoom 12.

<img src="/_assets/styling-layers/vary-marker-size-by-zoom--zoom-stops.png" alt="Style section of the Major Cities — Zoom Styling layer with Size markers by set to Uniform size and the note Size varies by zoom level, the Curve slider at 1.0, a curve chart rising from 4px at z1 to 8px at z12, two zoom stops (zoom 1 at 4 px, zoom 12 at 8 px), Add stop, and Save" width="1600" height="960" />

## Set the size at each stop

For each stop:

1. Type the zoom level in the `Zoom` box. Use a value from 1 to 22, in steps of 0.5.
2. Drag the slider to set the marker size, from 3 to 40 px.

To add a stop, click `Add stop`, then set its zoom and size. To remove a stop, click its `Remove stop` button. A layer needs at least 2 stops and can have up to 6.

Stops stay in zoom order, at least 0.5 zoom levels apart. A zoom that is too close to a neighbouring stop moves to the nearest allowed value when you leave the box.

Between two stops, the marker size changes gradually. Zoomed out past the first stop, markers keep the first stop's size. Zoomed in past the last stop, markers keep the last stop's size.

## (Optional) Shape the curve

The `Curve` slider sets how quickly the size changes between each pair of stops. The chart shows the result, with a dashed line for a steady change.

- **`1`** (the default) — the size changes at a steady rate.
- **Above 1, up to 4** — the size changes slowly at first, then quickly near the higher zoom.
- **Below 1, down to −3** — the size changes quickly near the lower zoom, then levels off.

The chart below shows three stops: 4 px at zoom 6, 20 px at zoom 12, and 40 px at zoom 14. It compares a `Curve` of 1 with a `Curve` of 2, and shows the size staying fixed before the first stop and after the last.

{/* diagram:marker-size-zoom-curve */}
<svg class="dark:hidden" style="width: 100%; height: auto" viewBox="0 0 640 408" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="marker-size-zoom-curve-inline-title marker-size-zoom-curve-inline-desc">
  <title id="marker-size-zoom-curve-inline-title">Marker size at each zoom</title>
  <desc id="marker-size-zoom-curve-inline-desc">Line chart of marker size against map zoom for three stops, 4 px at zoom 6, 20 px at zoom 12 and 40 px at zoom 14: markers stay 4 px below zoom 6 and 40 px above zoom 14, and between stops the size changes steadily at Curve 1.0, or slowly at first and then quickly at Curve 2.0.</desc>
  <defs>
    <marker id="marker-size-zoom-curve-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="marker-size-zoom-curve-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"/>
  <rect x="56" y="40" width="133.33" height="272" fill="rgba(23,23,23,0.05)"/>
  <rect x="402.67" y="40" width="213.33" height="272" fill="rgba(23,23,23,0.05)"/>
  <line x1="56" y1="312" x2="616" y2="312" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="48" y="316" fill="#525252" font-size="12" font-family="inherit" text-anchor="end">0</text>
  <line x1="56" y1="252" x2="616" y2="252" stroke="rgba(23,23,23,0.12)" stroke-width="1"/>
  <text x="48" y="256" fill="#525252" font-size="12" font-family="inherit" text-anchor="end">10</text>
  <line x1="56" y1="192" x2="616" y2="192" stroke="rgba(23,23,23,0.12)" stroke-width="1"/>
  <text x="48" y="196" fill="#525252" font-size="12" font-family="inherit" text-anchor="end">20</text>
  <line x1="56" y1="132" x2="616" y2="132" stroke="rgba(23,23,23,0.12)" stroke-width="1"/>
  <text x="48" y="136" fill="#525252" font-size="12" font-family="inherit" text-anchor="end">30</text>
  <line x1="56" y1="72" x2="616" y2="72" stroke="rgba(23,23,23,0.12)" stroke-width="1"/>
  <text x="48" y="76" fill="#525252" font-size="12" font-family="inherit" text-anchor="end">40</text>
  <text x="48" y="24" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="start">MARKER SIZE (PX)</text>
  <line x1="56" y1="312" x2="56" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="56" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">1</text>
  <line x1="82.67" y1="312" x2="82.67" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="109.33" y1="312" x2="109.33" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="136" y1="312" x2="136" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="136" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">4</text>
  <line x1="162.67" y1="312" x2="162.67" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="189.33" y1="312" x2="189.33" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="189.33" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">6</text>
  <line x1="216" y1="312" x2="216" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="242.67" y1="312" x2="242.67" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="242.67" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">8</text>
  <line x1="269.33" y1="312" x2="269.33" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="296" y1="312" x2="296" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="296" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">10</text>
  <line x1="322.67" y1="312" x2="322.67" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="349.33" y1="312" x2="349.33" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="349.33" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">12</text>
  <line x1="376" y1="312" x2="376" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="402.67" y1="312" x2="402.67" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="402.67" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">14</text>
  <line x1="429.33" y1="312" x2="429.33" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="456" y1="312" x2="456" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="456" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">16</text>
  <line x1="482.67" y1="312" x2="482.67" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="509.33" y1="312" x2="509.33" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="509.33" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">18</text>
  <line x1="536" y1="312" x2="536" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="562.67" y1="312" x2="562.67" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="562.67" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">20</text>
  <line x1="589.33" y1="312" x2="589.33" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <line x1="616" y1="312" x2="616" y2="316" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="616" y="332" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">22</text>
  <text x="616" y="356" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="end">MAP ZOOM</text>
  <text x="122.67" y="54" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">BEFORE THE</text>
  <text x="122.67" y="68" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">FIRST STOP</text>
  <text x="509.33" y="54" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">PAST THE LAST STOP</text>
  <text x="296" y="54" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">BETWEEN STOPS</text>
  <text x="122.67" y="276" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">stays 4 px</text>
  <text x="509.33" y="94" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">stays 40 px</text>
  <polyline points="56,288 59.33,288 62.67,288 66,288 69.33,288 72.67,288 76,288 79.33,288 82.67,288 86,288 89.33,288 92.67,288 96,288 99.33,288 102.67,288 106,288 109.33,288 112.67,288 116,288 119.33,288 122.67,288 126,288 129.33,288 132.67,288 136,288 139.33,288 142.67,288 146,288 149.33,288 152.67,288 156,288 159.33,288 162.67,288 166,288 169.33,288 172.67,288 176,288 179.33,288 182.67,288 186,288 189.33,288 192.67,286 196,284 199.33,282 202.67,280 206,278 209.33,276 212.67,274 216,272 219.33,270 222.67,268 226,266 229.33,264 232.67,262 236,260 239.33,258 242.67,256 246,254 249.33,252 252.67,250 256,248 259.33,246 262.67,244 266,242 269.33,240 272.67,238 276,236 279.33,234 282.67,232 286,230 289.33,228 292.67,226 296,224 299.33,222 302.67,220 306,218 309.33,216 312.67,214 316,212 319.33,210 322.67,208 326,206 329.33,204 332.67,202 336,200 339.33,198 342.67,196 346,194 349.33,192 352.67,184.5 356,177 359.33,169.5 362.67,162 366,154.5 369.33,147 372.67,139.5 376,132 379.33,124.5 382.67,117 386,109.5 389.33,102 392.67,94.5 396,87 399.33,79.5 402.67,72 406,72 409.33,72 412.67,72 416,72 419.33,72 422.67,72 426,72 429.33,72 432.67,72 436,72 439.33,72 442.67,72 446,72 449.33,72 452.67,72 456,72 459.33,72 462.67,72 466,72 469.33,72 472.67,72 476,72 479.33,72 482.67,72 486,72 489.33,72 492.67,72 496,72 499.33,72 502.67,72 506,72 509.33,72 512.67,72 516,72 519.33,72 522.67,72 526,72 529.33,72 532.67,72 536,72 539.33,72 542.67,72 546,72 549.33,72 552.67,72 556,72 559.33,72 562.67,72 566,72 569.33,72 572.67,72 576,72 579.33,72 582.67,72 586,72 589.33,72 592.67,72 596,72 599.33,72 602.67,72 606,72 609.33,72 612.67,72 616,72" fill="none" stroke="#525252" stroke-width="1.4" stroke-dasharray="5,4" stroke-linejoin="round"/>
  <polyline points="56,288 59.33,288 62.67,288 66,288 69.33,288 72.67,288 76,288 79.33,288 82.67,288 86,288 89.33,288 92.67,288 96,288 99.33,288 102.67,288 106,288 109.33,288 112.67,288 116,288 119.33,288 122.67,288 126,288 129.33,288 132.67,288 136,288 139.33,288 142.67,288 146,288 149.33,288 152.67,288 156,288 159.33,288 162.67,288 166,288 169.33,288 172.67,288 176,288 179.33,288 182.67,288 186,288 189.33,288 192.67,287.86 196,287.71 199.33,287.55 202.67,287.37 206,287.17 209.33,286.96 212.67,286.73 216,286.48 219.33,286.2 222.67,285.9 226,285.57 229.33,285.21 232.67,284.82 236,284.4 239.33,283.93 242.67,283.43 246,282.88 249.33,282.28 252.67,281.62 256,280.9 259.33,280.12 262.67,279.27 266,278.35 269.33,277.33 272.67,276.23 276,275.03 279.33,273.71 282.67,272.28 286,270.72 289.33,269.02 292.67,267.17 296,265.14 299.33,262.94 302.67,260.53 306,257.91 309.33,255.04 312.67,251.92 316,248.52 319.33,244.81 322.67,240.76 326,236.35 329.33,231.54 332.67,226.29 336,220.56 339.33,214.32 342.67,207.52 346,200.09 349.33,192 352.67,188.38 356,184.43 359.33,180.13 362.67,175.43 366,170.31 369.33,164.73 372.67,158.64 376,152 379.33,144.76 382.67,136.86 386,128.25 389.33,118.86 392.67,108.62 396,97.46 399.33,85.28 402.67,72 406,72 409.33,72 412.67,72 416,72 419.33,72 422.67,72 426,72 429.33,72 432.67,72 436,72 439.33,72 442.67,72 446,72 449.33,72 452.67,72 456,72 459.33,72 462.67,72 466,72 469.33,72 472.67,72 476,72 479.33,72 482.67,72 486,72 489.33,72 492.67,72 496,72 499.33,72 502.67,72 506,72 509.33,72 512.67,72 516,72 519.33,72 522.67,72 526,72 529.33,72 532.67,72 536,72 539.33,72 542.67,72 546,72 549.33,72 552.67,72 556,72 559.33,72 562.67,72 566,72 569.33,72 572.67,72 576,72 579.33,72 582.67,72 586,72 589.33,72 592.67,72 596,72 599.33,72 602.67,72 606,72 609.33,72 612.67,72 616,72" fill="none" stroke="#c4360c" stroke-width="2" stroke-linejoin="round"/>
  <circle cx="189.33" cy="288" r="4" fill="#f5f5f5" stroke="#c4360c" stroke-width="2"/>
  <circle cx="349.33" cy="192" r="4" fill="#f5f5f5" stroke="#c4360c" stroke-width="2"/>
  <circle cx="402.67" cy="72" r="4" fill="#f5f5f5" stroke="#c4360c" stroke-width="2"/>
  <text x="359.33" y="208" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">20 px at zoom 12</text>
  <text x="189.33" y="308" fill="#171717" font-size="12" font-family="inherit" text-anchor="middle">4 px at zoom 6</text>
  <text x="392.67" y="76" fill="#171717" font-size="12" font-family="inherit" text-anchor="end">40 px at zoom 14</text>
  <line x1="16" y1="368" x2="616" y2="368" stroke="rgba(23,23,23,0.12)" stroke-width="1"/>
  <line x1="16" y1="388" x2="40" y2="388" stroke="#c4360c" stroke-width="2"/>
  <text x="48" y="392" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Curve 2.0: slowly at first, then quickly</text>
  <line x1="356" y1="388" x2="380" y2="388" stroke="#525252" stroke-width="1.4" stroke-dasharray="5,4"/>
  <text x="388" y="392" fill="#171717" font-size="12" font-family="inherit" text-anchor="start">Curve 1.0: a steady change</text>
</svg>
<svg class="hidden dark:block" style="width: 100%; height: auto" viewBox="0 0 640 408" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="marker-size-zoom-curve-inline-dark-title marker-size-zoom-curve-inline-dark-desc">
  <title id="marker-size-zoom-curve-inline-dark-title">Marker size at each zoom</title>
  <desc id="marker-size-zoom-curve-inline-dark-desc">Line chart of marker size against map zoom for three stops, 4 px at zoom 6, 20 px at zoom 12 and 40 px at zoom 14: markers stay 4 px below zoom 6 and 40 px above zoom 14, and between stops the size changes steadily at Curve 1.0, or slowly at first and then quickly at Curve 2.0.</desc>
  <defs>
    <marker id="marker-size-zoom-curve-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="marker-size-zoom-curve-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"/>
  <rect x="56" y="40" width="133.33" height="272" fill="rgba(242,242,242,0.06)"/>
  <rect x="402.67" y="40" width="213.33" height="272" fill="rgba(242,242,242,0.06)"/>
  <line x1="56" y1="312" x2="616" y2="312" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="48" y="316" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="end">0</text>
  <line x1="56" y1="252" x2="616" y2="252" stroke="rgba(242,242,242,0.14)" stroke-width="1"/>
  <text x="48" y="256" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="end">10</text>
  <line x1="56" y1="192" x2="616" y2="192" stroke="rgba(242,242,242,0.14)" stroke-width="1"/>
  <text x="48" y="196" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="end">20</text>
  <line x1="56" y1="132" x2="616" y2="132" stroke="rgba(242,242,242,0.14)" stroke-width="1"/>
  <text x="48" y="136" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="end">30</text>
  <line x1="56" y1="72" x2="616" y2="72" stroke="rgba(242,242,242,0.14)" stroke-width="1"/>
  <text x="48" y="76" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="end">40</text>
  <text x="48" y="24" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="start">MARKER SIZE (PX)</text>
  <line x1="56" y1="312" x2="56" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="56" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">1</text>
  <line x1="82.67" y1="312" x2="82.67" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="109.33" y1="312" x2="109.33" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="136" y1="312" x2="136" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="136" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">4</text>
  <line x1="162.67" y1="312" x2="162.67" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="189.33" y1="312" x2="189.33" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="189.33" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">6</text>
  <line x1="216" y1="312" x2="216" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="242.67" y1="312" x2="242.67" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="242.67" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">8</text>
  <line x1="269.33" y1="312" x2="269.33" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="296" y1="312" x2="296" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="296" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">10</text>
  <line x1="322.67" y1="312" x2="322.67" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="349.33" y1="312" x2="349.33" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="349.33" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">12</text>
  <line x1="376" y1="312" x2="376" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="402.67" y1="312" x2="402.67" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="402.67" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">14</text>
  <line x1="429.33" y1="312" x2="429.33" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="456" y1="312" x2="456" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="456" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">16</text>
  <line x1="482.67" y1="312" x2="482.67" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="509.33" y1="312" x2="509.33" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="509.33" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">18</text>
  <line x1="536" y1="312" x2="536" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="562.67" y1="312" x2="562.67" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="562.67" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">20</text>
  <line x1="589.33" y1="312" x2="589.33" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <line x1="616" y1="312" x2="616" y2="316" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="616" y="332" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">22</text>
  <text x="616" y="356" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="end">MAP ZOOM</text>
  <text x="122.67" y="54" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">BEFORE THE</text>
  <text x="122.67" y="68" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">FIRST STOP</text>
  <text x="509.33" y="54" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">PAST THE LAST STOP</text>
  <text x="296" y="54" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">BETWEEN STOPS</text>
  <text x="122.67" y="276" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">stays 4 px</text>
  <text x="509.33" y="94" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">stays 40 px</text>
  <polyline points="56,288 59.33,288 62.67,288 66,288 69.33,288 72.67,288 76,288 79.33,288 82.67,288 86,288 89.33,288 92.67,288 96,288 99.33,288 102.67,288 106,288 109.33,288 112.67,288 116,288 119.33,288 122.67,288 126,288 129.33,288 132.67,288 136,288 139.33,288 142.67,288 146,288 149.33,288 152.67,288 156,288 159.33,288 162.67,288 166,288 169.33,288 172.67,288 176,288 179.33,288 182.67,288 186,288 189.33,288 192.67,286 196,284 199.33,282 202.67,280 206,278 209.33,276 212.67,274 216,272 219.33,270 222.67,268 226,266 229.33,264 232.67,262 236,260 239.33,258 242.67,256 246,254 249.33,252 252.67,250 256,248 259.33,246 262.67,244 266,242 269.33,240 272.67,238 276,236 279.33,234 282.67,232 286,230 289.33,228 292.67,226 296,224 299.33,222 302.67,220 306,218 309.33,216 312.67,214 316,212 319.33,210 322.67,208 326,206 329.33,204 332.67,202 336,200 339.33,198 342.67,196 346,194 349.33,192 352.67,184.5 356,177 359.33,169.5 362.67,162 366,154.5 369.33,147 372.67,139.5 376,132 379.33,124.5 382.67,117 386,109.5 389.33,102 392.67,94.5 396,87 399.33,79.5 402.67,72 406,72 409.33,72 412.67,72 416,72 419.33,72 422.67,72 426,72 429.33,72 432.67,72 436,72 439.33,72 442.67,72 446,72 449.33,72 452.67,72 456,72 459.33,72 462.67,72 466,72 469.33,72 472.67,72 476,72 479.33,72 482.67,72 486,72 489.33,72 492.67,72 496,72 499.33,72 502.67,72 506,72 509.33,72 512.67,72 516,72 519.33,72 522.67,72 526,72 529.33,72 532.67,72 536,72 539.33,72 542.67,72 546,72 549.33,72 552.67,72 556,72 559.33,72 562.67,72 566,72 569.33,72 572.67,72 576,72 579.33,72 582.67,72 586,72 589.33,72 592.67,72 596,72 599.33,72 602.67,72 606,72 609.33,72 612.67,72 616,72" fill="none" stroke="#a3a3a3" stroke-width="1.4" stroke-dasharray="5,4" stroke-linejoin="round"/>
  <polyline points="56,288 59.33,288 62.67,288 66,288 69.33,288 72.67,288 76,288 79.33,288 82.67,288 86,288 89.33,288 92.67,288 96,288 99.33,288 102.67,288 106,288 109.33,288 112.67,288 116,288 119.33,288 122.67,288 126,288 129.33,288 132.67,288 136,288 139.33,288 142.67,288 146,288 149.33,288 152.67,288 156,288 159.33,288 162.67,288 166,288 169.33,288 172.67,288 176,288 179.33,288 182.67,288 186,288 189.33,288 192.67,287.86 196,287.71 199.33,287.55 202.67,287.37 206,287.17 209.33,286.96 212.67,286.73 216,286.48 219.33,286.2 222.67,285.9 226,285.57 229.33,285.21 232.67,284.82 236,284.4 239.33,283.93 242.67,283.43 246,282.88 249.33,282.28 252.67,281.62 256,280.9 259.33,280.12 262.67,279.27 266,278.35 269.33,277.33 272.67,276.23 276,275.03 279.33,273.71 282.67,272.28 286,270.72 289.33,269.02 292.67,267.17 296,265.14 299.33,262.94 302.67,260.53 306,257.91 309.33,255.04 312.67,251.92 316,248.52 319.33,244.81 322.67,240.76 326,236.35 329.33,231.54 332.67,226.29 336,220.56 339.33,214.32 342.67,207.52 346,200.09 349.33,192 352.67,188.38 356,184.43 359.33,180.13 362.67,175.43 366,170.31 369.33,164.73 372.67,158.64 376,152 379.33,144.76 382.67,136.86 386,128.25 389.33,118.86 392.67,108.62 396,97.46 399.33,85.28 402.67,72 406,72 409.33,72 412.67,72 416,72 419.33,72 422.67,72 426,72 429.33,72 432.67,72 436,72 439.33,72 442.67,72 446,72 449.33,72 452.67,72 456,72 459.33,72 462.67,72 466,72 469.33,72 472.67,72 476,72 479.33,72 482.67,72 486,72 489.33,72 492.67,72 496,72 499.33,72 502.67,72 506,72 509.33,72 512.67,72 516,72 519.33,72 522.67,72 526,72 529.33,72 532.67,72 536,72 539.33,72 542.67,72 546,72 549.33,72 552.67,72 556,72 559.33,72 562.67,72 566,72 569.33,72 572.67,72 576,72 579.33,72 582.67,72 586,72 589.33,72 592.67,72 596,72 599.33,72 602.67,72 606,72 609.33,72 612.67,72 616,72" fill="none" stroke="#ff7a4d" stroke-width="2" stroke-linejoin="round"/>
  <circle cx="189.33" cy="288" r="4" fill="#141414" stroke="#ff7a4d" stroke-width="2"/>
  <circle cx="349.33" cy="192" r="4" fill="#141414" stroke="#ff7a4d" stroke-width="2"/>
  <circle cx="402.67" cy="72" r="4" fill="#141414" stroke="#ff7a4d" stroke-width="2"/>
  <text x="359.33" y="208" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">20 px at zoom 12</text>
  <text x="189.33" y="308" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="middle">4 px at zoom 6</text>
  <text x="392.67" y="76" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="end">40 px at zoom 14</text>
  <line x1="16" y1="368" x2="616" y2="368" stroke="rgba(242,242,242,0.14)" stroke-width="1"/>
  <line x1="16" y1="388" x2="40" y2="388" stroke="#ff7a4d" stroke-width="2"/>
  <text x="48" y="392" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Curve 2.0: slowly at first, then quickly</text>
  <line x1="356" y1="388" x2="380" y2="388" stroke="#a3a3a3" stroke-width="1.4" stroke-dasharray="5,4"/>
  <text x="388" y="392" fill="#f2f2f2" font-size="12" font-family="inherit" text-anchor="start">Curve 1.0: a steady change</text>
</svg>
{/* /diagram:marker-size-zoom-curve */}

## Save

Click `Save` at the bottom of the panel. Zoom the map in and out between your first and last stop to check the marker sizes.

If the map doesn't update, you probably didn't click `Save`. See [Troubleshooting: my style change isn't appearing on the map](/docs/styling-layers/troubleshoot-style-not-applying).

## If you also size markers by a field

When `Size markers by` is set to a numeric field, the same button scales the whole size range with zoom. Each stop holds a `Scale` value instead of a size in pixels:

- At `×1.0`, markers use the `Minimum size` and `Maximum size` you set.
- At `×0.5`, both sizes are halved at that zoom. At `×2.0`, both are doubled.
- The range is `×0.2` to `×3.0`. The default stops are `×0.5` at zoom 1 and `×1.5` at zoom 18.

<img src="/_assets/styling-layers/vary-marker-size-by-zoom--field-scale.png" alt="Style section of the Centroids — Bubble layer with Size markers by set to pop_est, sizes 4 px to 20 px, the Curve slider at 1.0, a curve chart rising from ×0.5 at z1 to ×1.5 at z18, two stops under Zoom and Scale (zoom 1 at 0.5, zoom 18 at 1.5), Add stop, and Save" width="1600" height="960" />

A saved layer with three scale stops, so markers draw at less than half size at world scale and twice their size by zoom 9:

<img src="/_assets/styling-layers/vary-marker-size-by-zoom--field-scale-saved.png" alt="Style section of the Major Cities — Population, Zoom Scaled layer with Size markers by set to population, sizes 3 px to 18 px, the note Size varies by zoom level, and three Scale stops: zoom 2 at ×0.4, zoom 5 at ×1.0, and zoom 9 at ×2.0" width="1600" height="960" />

Small values still draw smaller than large values at every zoom. The size key in the legend doesn't change with zoom. See [How to size points by a number](/docs/styling-layers/size-points-by-a-number) for the size range itself.

## If the layer uses categories or class breaks

Zoom sizing replaces the marker size you set for each category or class. While zoom sizing is on, the per-row size controls in `Customise categories` and `Customise Class Breaks` are greyed out. MangoMap keeps your per-row sizes and uses them again when you turn zoom sizing off.

Rows that use an `Icon` or `Custom Icon` marker keep their fixed size. Only circle markers change size with zoom.

## Turn zoom sizing off

1. Click the `Reset to fixed size` button at the end of the marker size row.
2. Click `Save`.

Markers go back to the fixed size they had before, and the zoom stops are deleted.

## What viewers see in the legend

The legend doesn't show the size change. A layer with one marker size keeps a fixed-size swatch in the legend at every zoom.

## Troubleshooting

**The `Vary size by zoom level` button is missing.** Set `Marker type` to `Circle`.

**I changed the marker type and my zoom stops are gone.** Switching away from `Circle` deletes every zoom stop on the layer, for size and colour. It also sets `Colour markers by` back to `Single colour`. If you haven't clicked `Save`, close the layer settings to discard the change. Otherwise, switch back to `Circle` and set the stops again.

**`Add stop` is greyed out.** The layer already has 6 stops. Remove a stop first.

**Markers are the same size at every zoom.** Check that you clicked `Save`, and that your stops have different sizes. Outside the first and last stop, the size stays fixed.

## Related

- [How to change marker colour by zoom level](/docs/styling-layers/colour-markers-by-zoom) — use it with zoom sizing on the same layer.
- [How to size points by a number](/docs/styling-layers/size-points-by-a-number)
- [How to set the zoom range a layer is visible at](/docs/styling-layers/set-layer-zoom-visibility) — hide a layer outside a zoom range instead of resizing it.
- [How to set a uniform style on a point layer](/docs/styling-layers/set-a-uniform-point-style)
- [Point layer style controls](/docs/styling-layers/point-style-reference)
- [How layer styling works in MangoMap](/docs/styling-layers/concepts-layer-styling)
