---
title: "How to edit a feature's geometry"
description: "Move a point, reshape a line or polygon, or remove a vertex. Saving changes the dataset on every map that uses it."
sidebar:
  label: "Edit a feature's geometry"
---

Use `Edit geometry` to move a point or reshape a line or polygon. Saving changes the source dataset and every map that uses it.

{/* video-content: id=edit-feature-geometry
Start: A fully loaded map zoomed to one polygon feature, with that feature's
popup open.

Show:

1. Open the popup's three-dot menu and click Edit geometry. The editor opens on
   the right and vertex handles appear on the polygon.
2. Drag one corner vertex to a new position. The polygon reshapes.
3. Click the midpoint between two corners. A new vertex appears there.
4. Right-click a different corner vertex. That vertex is removed and the polygon
   reshapes.
5. Click Cancel. The handles disappear and the polygon returns to its original
   shape.

End: The polygon in its original shape, with no editing handles.

Exclude: Authentication, loading screens, fixture setup, Save changes, any
change saved to the dataset, multi-part geometry, and the map context menu.
*/}
{/* walkthrough: id=edit-feature-geometry */}
<video
  src="/_assets/walkthroughs/edit-feature-geometry.webm"
  controls muted playsInline width="960">
  <track kind="captions" src="/_assets/walkthroughs/edit-feature-geometry.vtt" srclang="en" default />
</video>

{/* /walkthrough */}

## Before you start

- Sign in with permission to edit features in the dataset.
- Use a vector layer with an enabled popup.
- Confirm that the dataset-wide geometry change is intended.

## Open the geometry editor

1. Select the feature on the map.
2. Open the popup's three-dot menu.
3. Click `Edit geometry`.
The editor opens on the right, and handles appear on the feature on the map.

<img src="/_assets/editing-features/edit-feature-geometry--editing.png" alt="Edit Geometry: Monti I-Pavilion panel on the right, with the note that geometry edits are applied to the source data, the vertex instructions, and the Cancel and Save changes buttons. On the map, vertex handles and midpoint handles surround the polygon" width="1600" height="960" />

## Move or reshape the feature

- **Line** — drag a vertex to move it. Click a midpoint to insert a new vertex.
- **Polygon** — drag a corner to move it. Click a midpoint to insert a new corner.
- **Point** — drag the blue marker to the new place.

For a point from an imported file, the panel shows the instructions for lines and polygons (`Drag a vertex to move it. Click a midpoint to insert a new vertex.`). Ignore them: a point has one marker, and you drag it.

{/* TODO: product - For a point from an imported file (a one-point MultiPoint), the Edit Geometry panel shows the line and polygon instructions ("Drag a vertex to move it. Click a midpoint to insert a new vertex. Right-click a vertex to remove it..."), because getInstructionText has no multipoint case and falls to the default (../mangomap packages/mangomap-ui/src/components/tool-panel/tools/popup/editing/edit-geometry-content.tsx:31-45). Plain points show "Drag the marker to move the point." When multipoint gets the point text, remove the sentence about the panel text and update the alt text of edit-feature-geometry--point.png. See v4-sample-data/DOCS-CAPTURE-COVERAGE.md, "Product issues". */}

<img src="/_assets/editing-features/edit-feature-geometry--point.png" alt="Edit Geometry: Fort Canning Open Air Green panel on the right, with the note that geometry edits are applied to the source data, the line and polygon instructions, and the Cancel and Save changes buttons. On the map, a blue marker sits on the Fort Canning Open Air Green point" width="1600" height="960" />

## Remove a vertex

Right-click a vertex on a line or polygon to remove it. A vertex is removed only when the shape stays valid, so a line or polygon can't lose the vertices it needs.

## Multi-part features and polygons with holes

The editor works on one line or one polygon ring at a time. So that no part is lost, it does not open for:

- A feature with more than one part, such as a multipolygon with two islands, or a multipoint with two points.
- A polygon with a hole.

For these features, and for large changes, edit the data in a desktop GIS and [update the dataset from a file](/docs/data-updates/update-a-dataset-from-a-file).

## Save or cancel

After moving at least one coordinate, click `Save changes`. On success, the editor closes.

Click `Cancel` to remove the editing overlay without saving.

## Change geometry type

The editor preserves the feature's geometry family. It does not convert a point to a line, or a line to a polygon. Use a dataset with the required geometry type instead.

## If the editor doesn't open

Follow the checks in order to find out why the editor didn't open:

{/* diagram:edit-geometry-checks */}
<svg class="dark:hidden" style="width: 100%; height: auto" viewBox="0 0 640 708" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="edit-geometry-checks-inline-title edit-geometry-checks-inline-desc">
  <title id="edit-geometry-checks-inline-title">Will Edit geometry open?</title>
  <desc id="edit-geometry-checks-inline-desc">Flowchart: Edit geometry needs a popup with the three-dot menu, a feature of 30,000 vertices or fewer and 1 MB or less, an exact geometry that loads, and one part with no hole; a feature that is too large or has several parts or a hole must be edited in a desktop GIS and updated from a file, and a geometry that does not load needs a retry.</desc>
  <defs>
    <marker id="edit-geometry-checks-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="edit-geometry-checks-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="M192 60 L192 86" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-arrow)"/>
  <path d="M316 136 L358 136" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-arrow)"/>
  <path d="M316 272 L358 272" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-arrow)"/>
  <path d="M316 408 L358 408" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-arrow)"/>
  <path d="M316 544 L358 544" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-arrow)"/>
  <path d="M192 184 L192 222" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-arrow)"/>
  <path d="M192 320 L192 358" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-arrow)"/>
  <path d="M192 456 L192 494" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-arrow)"/>
  <path d="M192 592 L192 630" fill="none" stroke="#c4360c" stroke-width="1.4" marker-end="url(#edit-geometry-checks-inline-arrow-accent)"/>
  <rect x="322" y="112" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="335" y="124" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="322" y="248" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="335" y="260" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="322" y="384" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="335" y="396" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="322" y="520" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="335" y="532" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="200" y="195" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="217" y="207" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="200" y="331" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="217" y="343" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="200" y="467" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="217" y="479" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="200" y="603" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="217" y="615" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="76" y="16" width="232" height="44" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="192" y="43" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">You select a feature</text>
  <polygon points="192,88 316,136 192,184 68,136" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="192" y="131" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Popup has the</text><text x="192" y="149" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">three-dot menu?</text>
  <polygon points="192,224 316,272 192,320 68,272" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="192" y="267" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">30,000 vertices or</text><text x="192" y="285" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">fewer, 1 MB or less?</text>
  <polygon points="192,360 316,408 192,456 68,408" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="192" y="403" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Exact geometry</text><text x="192" y="421" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">loaded?</text>
  <polygon points="192,496 316,544 192,592 68,544" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="192" y="539" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">One part,</text><text x="192" y="557" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">and no hole?</text>
  <rect x="360" y="100" width="264" height="72" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="492" y="122" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">No Edit geometry</text><text x="492" y="142" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">the panel shows Details could</text><text x="492" y="158" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">not be loaded instead</text>
  <rect x="360" y="236" width="264" height="72" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="492" y="258" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Too large to edit safely</text><text x="492" y="278" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">edit it in a desktop GIS,</text><text x="492" y="294" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">then update from a file</text>
  <rect x="360" y="372" width="264" height="72" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="492" y="394" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Could not be loaded</text><text x="492" y="414" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">close the popup, click the</text><text x="492" y="430" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">feature again and retry</text>
  <rect x="360" y="508" width="264" height="72" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="492" y="530" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Not supported safely</text><text x="492" y="550" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">edit it in a desktop GIS,</text><text x="492" y="566" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">then update from a file</text>
  <rect x="62" y="632" width="260" height="60" rx="20" fill="rgba(196,54,12,0.08)" stroke="#c4360c" stroke-width="1.4"/>
  <text x="192" y="657" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">The editor opens</text>
  <text x="192" y="675" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">handles appear on the feature</text>
</svg>
<svg class="hidden dark:block" style="width: 100%; height: auto" viewBox="0 0 640 708" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="edit-geometry-checks-inline-dark-title edit-geometry-checks-inline-dark-desc">
  <title id="edit-geometry-checks-inline-dark-title">Will Edit geometry open?</title>
  <desc id="edit-geometry-checks-inline-dark-desc">Flowchart: Edit geometry needs a popup with the three-dot menu, a feature of 30,000 vertices or fewer and 1 MB or less, an exact geometry that loads, and one part with no hole; a feature that is too large or has several parts or a hole must be edited in a desktop GIS and updated from a file, and a geometry that does not load needs a retry.</desc>
  <defs>
    <marker id="edit-geometry-checks-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="edit-geometry-checks-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="M192 60 L192 86" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-dark-arrow)"/>
  <path d="M316 136 L358 136" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-dark-arrow)"/>
  <path d="M316 272 L358 272" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-dark-arrow)"/>
  <path d="M316 408 L358 408" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-dark-arrow)"/>
  <path d="M316 544 L358 544" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-dark-arrow)"/>
  <path d="M192 184 L192 222" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-dark-arrow)"/>
  <path d="M192 320 L192 358" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-dark-arrow)"/>
  <path d="M192 456 L192 494" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#edit-geometry-checks-inline-dark-arrow)"/>
  <path d="M192 592 L192 630" fill="none" stroke="#ff7a4d" stroke-width="1.4" marker-end="url(#edit-geometry-checks-inline-dark-arrow-accent)"/>
  <rect x="322" y="112" width="26" height="16" rx="2" fill="#141414"/><text x="335" y="124" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="322" y="248" width="26" height="16" rx="2" fill="#141414"/><text x="335" y="260" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="322" y="384" width="26" height="16" rx="2" fill="#141414"/><text x="335" y="396" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="322" y="520" width="26" height="16" rx="2" fill="#141414"/><text x="335" y="532" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="200" y="195" width="34" height="16" rx="2" fill="#141414"/><text x="217" y="207" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="200" y="331" width="34" height="16" rx="2" fill="#141414"/><text x="217" y="343" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="200" y="467" width="34" height="16" rx="2" fill="#141414"/><text x="217" y="479" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="200" y="603" width="34" height="16" rx="2" fill="#141414"/><text x="217" y="615" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="76" y="16" width="232" height="44" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="192" y="43" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">You select a feature</text>
  <polygon points="192,88 316,136 192,184 68,136" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="192" y="131" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Popup has the</text><text x="192" y="149" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">three-dot menu?</text>
  <polygon points="192,224 316,272 192,320 68,272" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="192" y="267" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">30,000 vertices or</text><text x="192" y="285" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">fewer, 1 MB or less?</text>
  <polygon points="192,360 316,408 192,456 68,408" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="192" y="403" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Exact geometry</text><text x="192" y="421" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">loaded?</text>
  <polygon points="192,496 316,544 192,592 68,544" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="192" y="539" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">One part,</text><text x="192" y="557" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">and no hole?</text>
  <rect x="360" y="100" width="264" height="72" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="492" y="122" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">No Edit geometry</text><text x="492" y="142" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">the panel shows Details could</text><text x="492" y="158" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">not be loaded instead</text>
  <rect x="360" y="236" width="264" height="72" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="492" y="258" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Too large to edit safely</text><text x="492" y="278" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">edit it in a desktop GIS,</text><text x="492" y="294" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">then update from a file</text>
  <rect x="360" y="372" width="264" height="72" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="492" y="394" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Could not be loaded</text><text x="492" y="414" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">close the popup, click the</text><text x="492" y="430" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">feature again and retry</text>
  <rect x="360" y="508" width="264" height="72" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="492" y="530" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Not supported safely</text><text x="492" y="550" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">edit it in a desktop GIS,</text><text x="492" y="566" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">then update from a file</text>
  <rect x="62" y="632" width="260" height="60" rx="20" fill="rgba(255,122,77,0.10)" stroke="#ff7a4d" stroke-width="1.4"/>
  <text x="192" y="657" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">The editor opens</text>
  <text x="192" y="675" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">handles appear on the feature</text>
</svg>
{/* /diagram:edit-geometry-checks */}

A message appears instead of the editor:

| Message | What it means |
| --- | --- |
| `Editing multipart features or polygons with holes is not supported safely` | The feature has more than one part, or it is a polygon with a hole. |
| `Exact geometry could not be loaded` | MangoMap could not load the feature's shape. Close the popup, click the feature again, and retry. |
| `This feature is too large to edit safely` | The feature has more than 30,000 vertices, or its shape is more than 1 MB of data. Edit it in a desktop GIS. |

If the panel shows `Details could not be loaded` instead of the popup, it has no three-dot menu, so `Edit geometry` isn't available. See [A popup says “Details could not be loaded”](/docs/configuring-popups/troubleshoot-popup-details-not-loaded).

## If saving fails

- Make sure at least one coordinate changed.
- Correct invalid or incomplete geometry.
- Confirm that edit permission is still active.
- Retry after restoring the network connection.

## Related

- [How feature editing works](/docs/editing-features/concepts-feature-editing)
- [Add a feature](/docs/editing-features/add-a-feature)
- [Delete a feature](/docs/editing-features/delete-a-feature)
- [Feature edit controls](/docs/editing-features/feature-edit-controls-reference)
