Controlling Tile Size with Drop and Coalesce Flags

Tippecanoe enforces a hard per-tile ceiling of 500 KB and 200,000 features; the drop and coalesce flags do not change that ceiling, they decide how features are shed to stay beneath it — --drop-densest-as-needed and -r/--drop-rate thin features spatially, --coalesce-smallest-as-needed merges neighbours instead of deleting them, and --extend-zooms-if-still-dropping buys extra zoom levels rather than accepting the loss.

When to Use Each

The right flag depends on geometry type and on whether losing individual features is acceptable for your layer.

Situation Reach for Why
Dense point clouds (GPS traces, sensor readings, POIs) --drop-densest-as-needed + -r Points are interchangeable at low zoom; dropping the spatially densest cluster members is visually invisible.
Polygon layers where every feature must survive (parcels, admin units, land-cover) --coalesce-smallest-as-needed Merges adjacent same-attribute polygons instead of deleting them, so coverage stays complete.
Line networks (roads, rail, rivers) that overflow only in city cores --drop-densest-as-needed + --extend-zooms-if-still-dropping Extra zoom levels appear only where needed; minor roads survive at higher zoom.
“Never drop anything, just add zoom” --extend-zooms-if-still-dropping alone Pushes detail into deeper zooms until each tile fits, at the cost of a larger archive.
A choropleth or thematic layer where a missing feature breaks the story none of the dropping flags — reduce attributes or detail instead Silent thinning corrupts the data narrative; shrink payload elsewhere.

The distinction that matters most: dropping is destructive (features leave the tile), coalescing is lossy-but-complete (features merge but coverage remains), and extending zooms is non-destructive but inflates the archive.

Specification Detail

Flag Default Accepted values Effect
--drop-densest-as-needed off presence Drops the spatially densest features per tile until it fits the byte/feature budget.
--coalesce-smallest-as-needed off presence Merges the smallest adjacent features with matching attributes to recover space before dropping.
--coalesce-densest-as-needed off presence Merges the densest cluster of same-attribute features; pairs with dropping on very dense polygon layers.
--extend-zooms-if-still-dropping off presence Adds zoom levels beyond -z in regions still over budget after dropping.
-r / --drop-rate 2.5 float ≥ 1 Base thinning ratio: fraction of features carried from one zoom to the next-lower zoom. Lower = keep more.
-al / --drop-lines off presence Allows line features to be dropped by the density passes (off by default; lines are normally preserved).
-ad / --drop-polygons off presence Allows polygon features to be dropped as a last resort when coalescing cannot recover enough space.
--no-tile-size-limit off presence Removes the 500 KB ceiling entirely — emits oversized tiles. Diagnostic use only.
-M / --maximum-tile-bytes 500000 integer bytes Lowers (or raises) the byte budget that triggers dropping/coalescing.

-r is the quietest of these: it operates on every build, dropping roughly 1/drop_rate of features at each step down the zoom pyramid, long before any tile approaches the size limit. Setting -r1 keeps every feature at every zoom (equivalent to -rg guessing disabled), which almost always overflows low zooms; the default 2.5 is a sane starting point for mixed point data.

Production Command

A realistic build for a national POI point layer targeting .pmtiles output for range-request delivery:

bash
tippecanoe \
  --output=pois.pmtiles \
  --layer=pois \
  --minimum-zoom=4 \
  --maximum-zoom=14 \
  --drop-densest-as-needed \
  --coalesce-smallest-as-needed \
  --extend-zooms-if-still-dropping \
  --drop-rate=2.5 \
  --maximum-tile-bytes=480000 \
  --force \
  pois_4326.geojson

Setting -M slightly under the 500 KB hard limit (here 480000) leaves headroom for the gzip variance between the size Tippecanoe estimates during encoding and the final compressed tile, so tiles never land marginally over budget on the CDN. For a polygon build the shape changes — coalescing leads, dropping is a fallback:

bash
tippecanoe \
  --output=landcover.pmtiles \
  --layer=landcover \
  --minimum-zoom=3 \
  --maximum-zoom=12 \
  --coalesce-smallest-as-needed \
  --coalesce-densest-as-needed \
  --drop-densest-as-needed \
  --extend-zooms-if-still-dropping \
  --maximum-tile-bytes=500000 \
  --force \
  landcover_4326.geojson

Verify no tile exceeds budget after the build:

bash
pmtiles verify landcover.pmtiles
# then spot-check the largest tiles
tippecanoe-decode landcover.pmtiles 12 2048 1361 | wc -c

Interaction Effects

With simplification and --detail. Dropping and coalescing reduce the number of features; tuning simplification with the detail flag reduces the vertices per feature. They compose: if a polygon layer still overflows after coalescing, lowering --detail from 12 to 11 halves the coordinate grid resolution and often clears the budget without dropping a single feature. Reach for simplification first on vertex-heavy geometry (coastlines, contours) and for dropping first on feature-heavy geometry (point swarms).

With overzooming. --extend-zooms-if-still-dropping and a fixed -z ceiling are two answers to the same congestion. Extending zooms bakes deeper levels into the archive; the alternative is to stop at a lower --maximum-zoom and let the client overzoom. The trade-off between overzooming versus generating a higher max zoom is a storage-versus-fidelity decision: extended zooms add tiles (and bytes) but render crisp detail; overzoom keeps the archive small but upscales the deepest generated tile.

With attribute filtering. Coalescing can only merge features whose attribute sets match exactly, and every retained attribute adds bytes that push tiles toward the limit. Trimming properties with dropping unused attributes to reduce tile size both increases coalesce hit rate (fewer distinguishing fields) and lowers per-feature payload, so fewer features need to be dropped at all. Filter attributes before you tune drop flags.

Performance Impact

Flag Feature retention Tile size Build time
--drop-densest-as-needed Lower at congested zooms Capped at budget +5–15% for density scan
--coalesce-smallest-as-needed Full (features merged, not deleted) 10–35% smaller on polygons +10–20% for adjacency matching
--extend-zooms-if-still-dropping Full Unchanged per tile; more tiles total Can 1.5–2× on dense layers
-r lower than 2.5 Higher at low zooms Larger low-zoom tiles Slightly higher
-r higher than 2.5 Lower at low zooms Smaller low-zoom tiles Slightly lower
--no-tile-size-limit Full Unbounded (can exceed 2 MB) Fastest (no shedding passes)

Directionally: dropping trades visual density for a guaranteed byte ceiling; coalescing trades CPU and boundary crispness for complete coverage; extending zooms trades archive size and build time for zero feature loss. On a 40-million-point dataset, --drop-densest-as-needed with the default drop rate typically holds tiles at 300–450 KB while retaining every feature by zoom 14; adding --extend-zooms-if-still-dropping pushes a handful of dense metro tiles to zoom 15–16 and grows the archive 15–25%.

Common Mistakes

1. Reaching for --no-tile-size-limit to “fix” dropping warnings

Seeing Tile ... is too big in stderr tempts operators to silence it with --no-tile-size-limit. That ships 1–3 MB tiles that MapLibre GL JS decodes slowly and that many CDNs and serverless tile functions reject outright.

Symptom: first paint stalls on dense tiles; browser console shows long main-thread decode times; pmtiles verify reports tiles far over 500 KB.

Fix: remove the flag and let the encoder shed features properly:

bash
tippecanoe --drop-densest-as-needed --coalesce-smallest-as-needed \
  --extend-zooms-if-still-dropping --maximum-tile-bytes=480000 \
  --output=pois.pmtiles --force pois_4326.geojson

2. --drop-densest-as-needed silently thinning a choropleth

On a thematic polygon layer where every unit carries a value, dropping deletes whole polygons in dense regions, leaving holes that read as “no data.”

Symptom: gaps appear in the fill only at low zoom and only in dense areas; feature counts per tile fall below the source count.

Fix: switch the shedding strategy from deletion to merging, and never enable -ad/--drop-polygons:

bash
tippecanoe --coalesce-smallest-as-needed --coalesce-densest-as-needed \
  --output=choropleth.pmtiles --force choropleth_4326.geojson

3. Setting -r too aggressively and losing needed points

Bumping --drop-rate to 5 or higher to shrink an archive throws away three-quarters of features per zoom step, so landmarks and labels vanish at mid zooms long before the size limit would have forced any drop.

Symptom: important POIs missing at zoom 8–11 even though those tiles are well under 500 KB; the map looks empty compared to the source.

Fix: return to the default and let the size-aware passes do the thinning only where required:

bash
tippecanoe --drop-rate=2.5 --drop-densest-as-needed \
  --output=pois.pmtiles --force pois_4326.geojson

Parent: Tippecanoe CLI Fundamentals