Skip to content

4. Labeling

Goal: Add clean, professional labels that don't overlap, follow line geometry, and look great at print scale.


Two label engines

Engine When
Standard Label Engine Quick, low overhead. Limited placement rules.
Maplex Label Engine Use this. Far more rules: weight, fitting strategy, conflict resolution.

Switch: Map ribbon → Label → More → Use Maplex Label Engine.

Turn on labels

  1. Right-click layer → Label.
  2. Or click the layer in Contents and toggle the Label button on the Feature Layer ribbon.
  3. By default it labels on the layer's Name field.

Pick the field & format

Open the Labeling ribbon (appears when a layer with labels is selected):

  • Field — pick the attribute to label
  • Symbol — font, size, color, halo
  • Position — placement strategy

Use a label expression

For multi-field or formatted labels, click Expression. Choose Python or Arcade (newer, recommended).

$feature.NAME + TextFormatting.NewLine + "Pop: " + Text($feature.POPULATION, "#,###")

Output:

Atlanta
Pop: 498,715

Maplex placement rules

Open the Labeling tab → Position → click ⚙ for full Maplex options.

Feature type Common rule
Points Best position (auto), then prefer right-of-point
Lines "Curved" (follows the line), "Parallel" for straight roads
Polygons "Horizontal" for compact polygons, "Curved" for elongated shapes (rivers)

Conflict resolution

When labels collide, Maplex resolves by weight:

  • Feature weight — how important is the feature itself?
  • Label weight — how important is this label vs others?
  • Background weight — push labels off (e.g., off other layers)

Set high weights for crucial features (state capitals) so they win when crowded.

Halos and callouts

A halo is a soft outline around the text — improves legibility on busy basemaps.

  • White halo, 1 pt, 50% transparency = clean, readable.
  • Avoid black halos (looks heavy).

For polygon callouts, use a leader line that links the label to the polygon.

Avoid these mistakes

Common labeling mistakes

  • 🚫 Too small (<8 pt at print scale)
  • 🚫 No halo on a complex basemap (unreadable)
  • 🚫 Labeling every feature when only the most important matter
  • 🚫 Wrong placement type (curved labels on a bunch of points)

Annotation (frozen labels)

Once labels are perfect, convert to annotation (right-click layer → Convert Labels → Annotation). Annotations are real features — you can move each one manually. Good for print maps where placement must be precise.


Practice

Labeled cities map

  1. Add a US Cities point layer.
  2. Filter to cities with POP > 100000.
  3. Label by NAME with a Python expression: "{} ({:,})".format(!NAME!, !POP!).
  4. Maplex → Best Position → Curved.
  5. White halo, 1 pt.
  6. Set scale-dependent labeling: only show below 1:5,000,000.

→ Next: Attribute Tables.