---
title: "How importing data works in MangoMap"
description: "What happens after you click Save on an import, why MangoMap reprojects data to Web Mercator, and which column names it changes and how."
sidebar:
  label: "How importing works"
---

When you import data, MangoMap stores it in your account library as a **dataset**, then makes it available to draw on any map as a **layer**. This page explains these terms, what happens after you click `Save`, and why MangoMap changes the projection.

## Datasets and layers

A **dataset** is a copy of your data inside your account library. It lives at `Data` in the main navigation, and it's independent of any particular map. A **layer** is that dataset placed on a specific map, carrying its own styling and visibility. One dataset can power layers on many maps. For the full picture — what belongs to the dataset versus the layer, and why removing a layer keeps the data — see [Datasets and layers in MangoMap](/docs/importing-data/concepts-datasets-and-layers).

This split matters when you import:

- Importing from the `Data` page adds the file to your library only. You attach it to maps later.
- Importing from a map (`Manage layers` → `Import new data`) does both at once — uploads the dataset _and_ adds it as a layer on that map.

## What happens after you click Save

Your files upload as soon as you add them. When you click `Save`, MangoMap processes them:

1. The page shows a `Processing data…` dialog while MangoMap prepares the dataset.
2. MangoMap reads your file and prepares the data.
3. On success, you land on the dataset page (or back on the map with the new layer added). On failure, the dialog switches to `Processing failed` with an error message and a `Try again` button. `Try again` clears the form, so you add the files again.

Processing time depends on the file size and complexity. Closing the tab does not cancel processing, and the dataset still appears in your library when it is ready. But the page can't show you the result, and if you started from a map, the layer is not added to it.

Follow an upload through these states to see where it can fail and where `Try again` takes you:

<!-- diagram:import-lifecycle-states -->
<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="import-lifecycle-states-inline-title import-lifecycle-states-inline-desc">
  <title id="import-lifecycle-states-inline-title">What happens to an upload</title>
  <desc id="import-lifecycle-states-inline-desc">State machine: files upload as you add them; Save starts processing on MangoMap’s servers, which reads and prepares your data, and closing the tab does not stop this; it ends on the dataset page or the map, or at Processing failed, where Try again returns to an empty form.</desc>
  <defs>
    <marker id="import-lifecycle-states-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="import-lifecycle-states-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="28" y="128" width="380" height="152" rx="8" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.12)" stroke-width="1"/>
  <rect x="252" y="120" width="132" height="16" rx="2" fill="#f5f5f5"/><text x="318" y="132" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">PROCESSING DATA…</text>
  <path d="M130 22 L130 34" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#import-lifecycle-states-inline-arrow)"/>
  <path d="M130 92 L130 166" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#import-lifecycle-states-inline-arrow)"/>
  <path d="M130 280 L130 318" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#import-lifecycle-states-inline-arrow)"/>
  <path d="M392 204 L514 204 Q522 204 522 212 L522 318" fill="none" stroke="#c4360c" stroke-width="1.4" marker-end="url(#import-lifecycle-states-inline-arrow-accent)"/>
  <path d="M42 356 L20 356 Q12 356 12 348 L12 72 Q12 64 20 64 L40 64" fill="none" stroke="#525252" stroke-width="1.2" stroke-dasharray="5,4" marker-end="url(#import-lifecycle-states-inline-arrow)"/>
  <rect x="138" y="100" width="40" height="16" rx="2" fill="#f5f5f5"/><text x="158" y="112" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">SAVE</text>
  <rect x="140" y="292" width="48" height="16" rx="2" fill="#f5f5f5"/><text x="164" y="304" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">ERROR</text>
  <rect x="530" y="292" width="64" height="16" rx="2" fill="#f5f5f5"/><text x="562" y="304" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">SUCCESS</text>
  <rect x="20" y="292" width="72" height="16" rx="2" fill="#f5f5f5"/><text x="56" y="304" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">TRY AGAIN</text>
  <circle cx="130" cy="16" r="6" fill="#171717"/>
  <rect x="42" y="36" width="176" height="56" rx="8" fill="#ffffff" stroke="#171717" stroke-width="1"/>
  <text x="130" y="61" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Uploading</text>
  <text x="130" y="79" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">as you add each file</text>
  <rect x="44" y="168" width="348" height="72" rx="8" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="218" y="195" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Processing</text><text x="218" y="214" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">MangoMap reads your file</text><text x="218" y="230" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">and prepares the data</text>
  <text x="44" y="266" fill="#525252" font-size="12" font-style="italic" font-family="inherit" text-anchor="start">Runs on MangoMap’s servers: closing the tab doesn’t stop it.</text>
  <rect x="42" y="320" width="176" height="72" rx="8" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="130" y="347" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Processing failed</text><text x="130" y="366" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">shows the error and</text><text x="130" y="382" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">a Try again button</text>
  <rect x="420" y="320" width="204" height="72" rx="20" fill="rgba(196,54,12,0.08)" stroke="#c4360c" stroke-width="1.4"/>
  <text x="522" y="347" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Done</text>
  <text x="522" y="366" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">opens the dataset page,</text>
  <text x="522" y="382" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">or the map with the layer</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="import-lifecycle-states-inline-dark-title import-lifecycle-states-inline-dark-desc">
  <title id="import-lifecycle-states-inline-dark-title">What happens to an upload</title>
  <desc id="import-lifecycle-states-inline-dark-desc">State machine: files upload as you add them; Save starts processing on MangoMap’s servers, which reads and prepares your data, and closing the tab does not stop this; it ends on the dataset page or the map, or at Processing failed, where Try again returns to an empty form.</desc>
  <defs>
    <marker id="import-lifecycle-states-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="import-lifecycle-states-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="28" y="128" width="380" height="152" rx="8" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.14)" stroke-width="1"/>
  <rect x="252" y="120" width="132" height="16" rx="2" fill="#141414"/><text x="318" y="132" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">PROCESSING DATA…</text>
  <path d="M130 22 L130 34" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#import-lifecycle-states-inline-dark-arrow)"/>
  <path d="M130 92 L130 166" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#import-lifecycle-states-inline-dark-arrow)"/>
  <path d="M130 280 L130 318" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#import-lifecycle-states-inline-dark-arrow)"/>
  <path d="M392 204 L514 204 Q522 204 522 212 L522 318" fill="none" stroke="#ff7a4d" stroke-width="1.4" marker-end="url(#import-lifecycle-states-inline-dark-arrow-accent)"/>
  <path d="M42 356 L20 356 Q12 356 12 348 L12 72 Q12 64 20 64 L40 64" fill="none" stroke="#a3a3a3" stroke-width="1.2" stroke-dasharray="5,4" marker-end="url(#import-lifecycle-states-inline-dark-arrow)"/>
  <rect x="138" y="100" width="40" height="16" rx="2" fill="#141414"/><text x="158" y="112" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">SAVE</text>
  <rect x="140" y="292" width="48" height="16" rx="2" fill="#141414"/><text x="164" y="304" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">ERROR</text>
  <rect x="530" y="292" width="64" height="16" rx="2" fill="#141414"/><text x="562" y="304" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">SUCCESS</text>
  <rect x="20" y="292" width="72" height="16" rx="2" fill="#141414"/><text x="56" y="304" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">TRY AGAIN</text>
  <circle cx="130" cy="16" r="6" fill="#f2f2f2"/>
  <rect x="42" y="36" width="176" height="56" rx="8" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/>
  <text x="130" y="61" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Uploading</text>
  <text x="130" y="79" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">as you add each file</text>
  <rect x="44" y="168" width="348" height="72" rx="8" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="218" y="195" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Processing</text><text x="218" y="214" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">MangoMap reads your file</text><text x="218" y="230" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">and prepares the data</text>
  <text x="44" y="266" fill="#a3a3a3" font-size="12" font-style="italic" font-family="inherit" text-anchor="start">Runs on MangoMap’s servers: closing the tab doesn’t stop it.</text>
  <rect x="42" y="320" width="176" height="72" rx="8" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="130" y="347" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Processing failed</text><text x="130" y="366" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">shows the error and</text><text x="130" y="382" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">a Try again button</text>
  <rect x="420" y="320" width="204" height="72" rx="20" fill="rgba(255,122,77,0.10)" stroke="#ff7a4d" stroke-width="1.4"/>
  <text x="522" y="347" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Done</text>
  <text x="522" y="366" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">opens the dataset page,</text>
  <text x="522" y="382" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">or the map with the layer</text>
</svg>
<!-- /diagram:import-lifecycle-states -->

## Why MangoMap reprojects to Web Mercator

MangoMap converts your data to match the basemap, so you never pick a coordinate system. It reads the one your file declares:

- For a shapefile, that's the `.prj` file.
- For GeoJSON, the `crs` field if present, otherwise `EPSG:4326` per the spec.
- For other vector formats, whatever the file declares internally.

If MangoMap finds no coordinate system with a code, such as `EPSG:27700`, it assumes `EPSG:4326` (WGS84). If the file names a system MangoMap can't convert from, processing fails with an `Unsupported coordinate system` error and you'll need to reproject the file in another tool first. See [Unsupported coordinate system](/docs/importing-data/troubleshoot-unsupported-crs).

The diagram shows which system MangoMap converts from, and the one case that fails:

<!-- diagram:import-crs-flow -->
<svg class="dark:hidden" style="width: 100%; height: auto" viewBox="0 0 640 504" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="import-crs-flow-inline-title import-crs-flow-inline-desc">
  <title id="import-crs-flow-inline-title">Which coordinate system MangoMap converts from</title>
  <desc id="import-crs-flow-inline-desc">Flowchart: MangoMap reads the coordinate system from the .prj file, the GeoJSON crs member or the file itself; with no code it assumes EPSG:4326; a system it can’t convert from fails with Unsupported coordinate system; everything else is stored in EPSG:3857 without the original coordinates.</desc>
  <defs>
    <marker id="import-crs-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="import-crs-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="M232 76 L232 102" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#import-crs-flow-inline-arrow)"/>
  <path d="M368 152 L430 152" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#import-crs-flow-inline-arrow)"/>
  <path d="M232 200 L232 250" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#import-crs-flow-inline-arrow)"/>
  <path d="M368 300 L432 300 Q440 300 440 308 L440 414" fill="none" stroke="#c4360c" stroke-width="1.4" marker-end="url(#import-crs-flow-inline-arrow-accent)"/>
  <path d="M528 180 L528 414" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#import-crs-flow-inline-arrow)"/>
  <path d="M232 348 L232 414" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#import-crs-flow-inline-arrow)"/>
  <rect x="386" y="128" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="399" y="140" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="236" y="211" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="253" y="223" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="383" y="276" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="400" y="288" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="240" y="359" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="253" y="371" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="72" y="16" width="320" height="60" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="232" y="41" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">MangoMap reads your file</text>
  <text x="232" y="59" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">.prj file, GeoJSON crs, or the file itself</text>
  <polygon points="232,104 368,152 232,200 96,152" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="232" y="147" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Coordinate system</text><text x="232" y="165" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">with a code?</text>
  <rect x="432" y="124" width="192" height="56" rx="6" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="528" y="149" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Assumes EPSG:4326</text><text x="528" y="167" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">WGS84</text>
  <polygon points="232,252 368,300 232,348 96,300" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="232" y="295" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Can MangoMap</text><text x="232" y="313" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">convert from it?</text>
  <rect x="112" y="416" width="240" height="72" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="232" y="443" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Processing failed</text><text x="232" y="462" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Unsupported coordinate system</text><text x="232" y="478" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">reproject the file first</text>
  <rect x="400" y="416" width="224" height="72" rx="20" fill="rgba(196,54,12,0.08)" stroke="#c4360c" stroke-width="1.4"/><text x="512" y="443" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Stored in EPSG:3857</text><text x="512" y="462" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Web Mercator; the original</text><text x="512" y="478" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">coordinates are not kept</text>
</svg>
<svg class="hidden dark:block" style="width: 100%; height: auto" viewBox="0 0 640 504" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="import-crs-flow-inline-dark-title import-crs-flow-inline-dark-desc">
  <title id="import-crs-flow-inline-dark-title">Which coordinate system MangoMap converts from</title>
  <desc id="import-crs-flow-inline-dark-desc">Flowchart: MangoMap reads the coordinate system from the .prj file, the GeoJSON crs member or the file itself; with no code it assumes EPSG:4326; a system it can’t convert from fails with Unsupported coordinate system; everything else is stored in EPSG:3857 without the original coordinates.</desc>
  <defs>
    <marker id="import-crs-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="import-crs-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="M232 76 L232 102" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#import-crs-flow-inline-dark-arrow)"/>
  <path d="M368 152 L430 152" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#import-crs-flow-inline-dark-arrow)"/>
  <path d="M232 200 L232 250" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#import-crs-flow-inline-dark-arrow)"/>
  <path d="M368 300 L432 300 Q440 300 440 308 L440 414" fill="none" stroke="#ff7a4d" stroke-width="1.4" marker-end="url(#import-crs-flow-inline-dark-arrow-accent)"/>
  <path d="M528 180 L528 414" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#import-crs-flow-inline-dark-arrow)"/>
  <path d="M232 348 L232 414" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#import-crs-flow-inline-dark-arrow)"/>
  <rect x="386" y="128" width="26" height="16" rx="2" fill="#141414"/><text x="399" y="140" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="236" y="211" width="34" height="16" rx="2" fill="#141414"/><text x="253" y="223" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="383" y="276" width="34" height="16" rx="2" fill="#141414"/><text x="400" y="288" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="240" y="359" width="26" height="16" rx="2" fill="#141414"/><text x="253" y="371" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="72" y="16" width="320" height="60" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="232" y="41" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">MangoMap reads your file</text>
  <text x="232" y="59" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">.prj file, GeoJSON crs, or the file itself</text>
  <polygon points="232,104 368,152 232,200 96,152" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="232" y="147" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Coordinate system</text><text x="232" y="165" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">with a code?</text>
  <rect x="432" y="124" width="192" height="56" rx="6" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="528" y="149" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Assumes EPSG:4326</text><text x="528" y="167" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">WGS84</text>
  <polygon points="232,252 368,300 232,348 96,300" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="232" y="295" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Can MangoMap</text><text x="232" y="313" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">convert from it?</text>
  <rect x="112" y="416" width="240" height="72" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="232" y="443" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Processing failed</text><text x="232" y="462" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Unsupported coordinate system</text><text x="232" y="478" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">reproject the file first</text>
  <rect x="400" y="416" width="224" height="72" rx="20" fill="rgba(255,122,77,0.10)" stroke="#ff7a4d" stroke-width="1.4"/><text x="512" y="443" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Stored in EPSG:3857</text><text x="512" y="462" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Web Mercator; the original</text><text x="512" y="478" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">coordinates are not kept</text>
</svg>
<!-- /diagram:import-crs-flow -->

MangoMap does not keep the original coordinates with the Web Mercator copy. If you need to keep the source projection, keep your original file outside MangoMap.

## Reserved field names

These five column names are reserved for system use. If a column in your file has one of them, in any mix of upper and lower case, MangoMap renames it on import by adding a leading underscore:

| Source name | Stored as |
| --- | --- |
| `gid` | `_gid` |
| `geom` | `_geom` |
| `id` | `_id` |
| `geometry` | `_geometry` |
| `the_geom` | `_the_geom` |

This is the full list. It applies to every vector and tabular format (`CSV`, `GeoJSON`, `KML`, `Shapefile`, `TAB`, `Geo database`).

### CSV coordinate columns

A CSV has no geometry, so MangoMap makes each row's point from two columns. It looks for these names, in any mix of upper and lower case:

| Coordinate | Column names |
| --- | --- |
| Longitude | `Longitude`, `Lon`, `Long`, `Lng`, `X`, `Longtitude` |
| Latitude | `Latitude`, `Lat`, `Y` |

The first matching column from the left is used for each. Those two columns become the point's location and are not kept as attributes, so they do not appear in the data table, the popup, or the style field lists. Another column that also matches, such as `X` when `Longitude` is used, stays an ordinary attribute.

To keep the coordinates as attributes, add a copy of each column with another name, such as `lon_value` and `lat_value`, before you import. The values must be decimal degrees (WGS 84). See [How to import a CSV](/docs/importing-data/import-csv).

## Other column name changes

MangoMap also changes a column name that is not a valid database name. In this order, it:

1. Removes spaces at the start and end.
2. Replaces each run of spaces with one underscore: `Land use` becomes `Land_use`.
3. Removes every character that is not a letter, a digit, or an underscore: `Cost (€)` becomes `Cost_`.
4. Adds a leading underscore to a name that starts with a digit: `2020 population` becomes `_2020_population`.
5. Adds a leading underscore to a reserved name (see above).

For every format, the stored name is also lower case: `Shape_Leng` becomes `shape_leng`.

If two columns end up with the same name, ignoring case, the import stops with `Duplicate column names found after sanitization`, followed by the names. Rename those columns in your file so each name is unique, then import it again.

Follow one column name through every rule to see what MangoMap stores:

<!-- diagram:column-name-cleanup -->
<svg class="dark:hidden" style="width: 100%; height: auto" viewBox="0 0 640 552" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="column-name-cleanup-inline-title column-name-cleanup-inline-desc">
  <title id="column-name-cleanup-inline-title">How a column name is cleaned up</title>
  <desc id="column-name-cleanup-inline-desc">Process: the column name “  2020 Pop. (%)” is trimmed, its spaces become underscores, its symbols are removed and it gets a leading underscore for the digit, giving _2020_Pop_; the reserved-name rule leaves it unchanged; if another column now has the same name, ignoring case, the import stops, otherwise it is stored in lower case as _2020_pop_.</desc>
  <defs>
    <marker id="column-name-cleanup-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="column-name-cleanup-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"/>
  <line x1="40" y1="108" x2="40" y2="316" stroke="rgba(23,23,23,0.12)" stroke-width="1.2"/>
  <path d="M500 72 L500 90" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-arrow)"/>
  <path d="M500 124 L500 142" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-arrow)"/>
  <path d="M500 176 L500 194" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-arrow)"/>
  <path d="M500 228 L500 246" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-arrow)"/>
  <path d="M500 280 L500 350" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-arrow)"/>
  <path d="M372 396 L306 396" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-arrow)"/>
  <path d="M500 440 L500 478" fill="none" stroke="#c4360c" stroke-width="1.4" marker-end="url(#column-name-cleanup-inline-arrow-accent)"/>
  <rect x="322" y="372" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="339" y="384" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="508" y="451" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="521" y="463" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <text x="64" y="61" fill="#525252" font-size="14" font-family="inherit" text-anchor="start">The name in your file</text>
  <circle cx="40" cy="108" r="11" fill="#ffffff" stroke="#525252" stroke-width="1"/><text x="40" y="112" fill="#525252" font-size="12" font-weight="600" font-family="inherit" text-anchor="middle">1</text><text x="64" y="113" fill="#171717" font-size="14" font-family="inherit" text-anchor="start">Trim spaces at the ends</text>
  <circle cx="40" cy="160" r="11" fill="#ffffff" stroke="#525252" stroke-width="1"/><text x="40" y="164" fill="#525252" font-size="12" font-weight="600" font-family="inherit" text-anchor="middle">2</text><text x="64" y="165" fill="#171717" font-size="14" font-family="inherit" text-anchor="start">Turn spaces into _</text>
  <circle cx="40" cy="212" r="11" fill="#ffffff" stroke="#525252" stroke-width="1"/><text x="40" y="216" fill="#525252" font-size="12" font-weight="600" font-family="inherit" text-anchor="middle">3</text><text x="64" y="217" fill="#171717" font-size="14" font-family="inherit" text-anchor="start">Remove other symbols</text>
  <circle cx="40" cy="264" r="11" fill="#ffffff" stroke="#525252" stroke-width="1"/><text x="40" y="268" fill="#525252" font-size="12" font-weight="600" font-family="inherit" text-anchor="middle">4</text><text x="64" y="269" fill="#171717" font-size="14" font-family="inherit" text-anchor="start">Starts with a digit: add _</text>
  <circle cx="40" cy="316" r="11" fill="#ffffff" stroke="#525252" stroke-width="1"/><text x="40" y="320" fill="#525252" font-size="12" font-weight="600" font-family="inherit" text-anchor="middle">5</text><text x="64" y="321" fill="#171717" font-size="14" font-family="inherit" text-anchor="start">Reserved name: add _</text>
  <rect x="420" y="40" width="160" height="32" rx="6" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="500" y="61" fill="#171717" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle" xml:space="preserve" style="white-space: pre">&quot;  2020 Pop. (%)&quot;</text>
  <rect x="420" y="92" width="160" height="32" rx="6" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="500" y="113" fill="#171717" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle" xml:space="preserve" style="white-space: pre">&quot;2020 Pop. (%)&quot;</text>
  <rect x="420" y="144" width="160" height="32" rx="6" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="500" y="165" fill="#171717" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle" xml:space="preserve" style="white-space: pre">&quot;2020_Pop._(%)&quot;</text>
  <rect x="420" y="196" width="160" height="32" rx="6" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="500" y="217" fill="#171717" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle" xml:space="preserve" style="white-space: pre">&quot;2020_Pop_&quot;</text>
  <rect x="420" y="248" width="160" height="32" rx="6" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="500" y="269" fill="#171717" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle" xml:space="preserve" style="white-space: pre">&quot;_2020_Pop_&quot;</text>
  <text x="512" y="320" fill="#525252" font-size="12" font-style="italic" font-family="inherit" text-anchor="start">no change</text>
  <polygon points="500,352 628,396 500,440 372,396" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="500" y="391" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Same as another</text><text x="500" y="409" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">column’s name?</text>
  <rect x="64" y="360" width="240" height="72" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="184" y="387" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Import stops</text>
  <text x="184" y="406" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Duplicate column names</text>
  <text x="184" y="422" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">found after sanitization</text>
  <rect x="380" y="480" width="240" height="56" rx="20" fill="rgba(196,54,12,0.08)" stroke="#c4360c" stroke-width="1.4"/>
  <text x="500" y="502" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Stored in lower case</text>
  <text x="500" y="522" fill="#171717" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle">&quot;_2020_pop_&quot;</text>
</svg>
<svg class="hidden dark:block" style="width: 100%; height: auto" viewBox="0 0 640 552" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="column-name-cleanup-inline-dark-title column-name-cleanup-inline-dark-desc">
  <title id="column-name-cleanup-inline-dark-title">How a column name is cleaned up</title>
  <desc id="column-name-cleanup-inline-dark-desc">Process: the column name “  2020 Pop. (%)” is trimmed, its spaces become underscores, its symbols are removed and it gets a leading underscore for the digit, giving _2020_Pop_; the reserved-name rule leaves it unchanged; if another column now has the same name, ignoring case, the import stops, otherwise it is stored in lower case as _2020_pop_.</desc>
  <defs>
    <marker id="column-name-cleanup-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="column-name-cleanup-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"/>
  <line x1="40" y1="108" x2="40" y2="316" stroke="rgba(242,242,242,0.14)" stroke-width="1.2"/>
  <path d="M500 72 L500 90" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-dark-arrow)"/>
  <path d="M500 124 L500 142" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-dark-arrow)"/>
  <path d="M500 176 L500 194" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-dark-arrow)"/>
  <path d="M500 228 L500 246" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-dark-arrow)"/>
  <path d="M500 280 L500 350" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-dark-arrow)"/>
  <path d="M372 396 L306 396" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#column-name-cleanup-inline-dark-arrow)"/>
  <path d="M500 440 L500 478" fill="none" stroke="#ff7a4d" stroke-width="1.4" marker-end="url(#column-name-cleanup-inline-dark-arrow-accent)"/>
  <rect x="322" y="372" width="34" height="16" rx="2" fill="#141414"/><text x="339" y="384" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="508" y="451" width="26" height="16" rx="2" fill="#141414"/><text x="521" y="463" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <text x="64" y="61" fill="#a3a3a3" font-size="14" font-family="inherit" text-anchor="start">The name in your file</text>
  <circle cx="40" cy="108" r="11" fill="#1c1c1c" stroke="#a3a3a3" stroke-width="1"/><text x="40" y="112" fill="#a3a3a3" font-size="12" font-weight="600" font-family="inherit" text-anchor="middle">1</text><text x="64" y="113" fill="#f2f2f2" font-size="14" font-family="inherit" text-anchor="start">Trim spaces at the ends</text>
  <circle cx="40" cy="160" r="11" fill="#1c1c1c" stroke="#a3a3a3" stroke-width="1"/><text x="40" y="164" fill="#a3a3a3" font-size="12" font-weight="600" font-family="inherit" text-anchor="middle">2</text><text x="64" y="165" fill="#f2f2f2" font-size="14" font-family="inherit" text-anchor="start">Turn spaces into _</text>
  <circle cx="40" cy="212" r="11" fill="#1c1c1c" stroke="#a3a3a3" stroke-width="1"/><text x="40" y="216" fill="#a3a3a3" font-size="12" font-weight="600" font-family="inherit" text-anchor="middle">3</text><text x="64" y="217" fill="#f2f2f2" font-size="14" font-family="inherit" text-anchor="start">Remove other symbols</text>
  <circle cx="40" cy="264" r="11" fill="#1c1c1c" stroke="#a3a3a3" stroke-width="1"/><text x="40" y="268" fill="#a3a3a3" font-size="12" font-weight="600" font-family="inherit" text-anchor="middle">4</text><text x="64" y="269" fill="#f2f2f2" font-size="14" font-family="inherit" text-anchor="start">Starts with a digit: add _</text>
  <circle cx="40" cy="316" r="11" fill="#1c1c1c" stroke="#a3a3a3" stroke-width="1"/><text x="40" y="320" fill="#a3a3a3" font-size="12" font-weight="600" font-family="inherit" text-anchor="middle">5</text><text x="64" y="321" fill="#f2f2f2" font-size="14" font-family="inherit" text-anchor="start">Reserved name: add _</text>
  <rect x="420" y="40" width="160" height="32" rx="6" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="500" y="61" fill="#f2f2f2" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle" xml:space="preserve" style="white-space: pre">&quot;  2020 Pop. (%)&quot;</text>
  <rect x="420" y="92" width="160" height="32" rx="6" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="500" y="113" fill="#f2f2f2" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle" xml:space="preserve" style="white-space: pre">&quot;2020 Pop. (%)&quot;</text>
  <rect x="420" y="144" width="160" height="32" rx="6" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="500" y="165" fill="#f2f2f2" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle" xml:space="preserve" style="white-space: pre">&quot;2020_Pop._(%)&quot;</text>
  <rect x="420" y="196" width="160" height="32" rx="6" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="500" y="217" fill="#f2f2f2" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle" xml:space="preserve" style="white-space: pre">&quot;2020_Pop_&quot;</text>
  <rect x="420" y="248" width="160" height="32" rx="6" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="500" y="269" fill="#f2f2f2" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle" xml:space="preserve" style="white-space: pre">&quot;_2020_Pop_&quot;</text>
  <text x="512" y="320" fill="#a3a3a3" font-size="12" font-style="italic" font-family="inherit" text-anchor="start">no change</text>
  <polygon points="500,352 628,396 500,440 372,396" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="500" y="391" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Same as another</text><text x="500" y="409" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">column’s name?</text>
  <rect x="64" y="360" width="240" height="72" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="184" y="387" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Import stops</text>
  <text x="184" y="406" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Duplicate column names</text>
  <text x="184" y="422" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">found after sanitization</text>
  <rect x="380" y="480" width="240" height="56" rx="20" fill="rgba(255,122,77,0.10)" stroke="#ff7a4d" stroke-width="1.4"/>
  <text x="500" y="502" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Stored in lower case</text>
  <text x="500" y="522" fill="#f2f2f2" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" text-anchor="middle">&quot;_2020_pop_&quot;</text>
</svg>
<!-- /diagram:column-name-cleanup -->

## Where you see the new name

MangoMap keeps the original name as the column's display name, so the style field lists and the legend still show `id`. The data table, popup variables (`{_id}`), downloads, and anything that reads the data from outside MangoMap use the stored name. If you reference the column from outside MangoMap, use the stored name.

This also matters when you upload a new file to update an existing dataset — see [What can break](/docs/data-updates/concepts-data-updates#what-can-break) in the data updates concept page.

## Common confusions

**"Why is my data showing up in the wrong place?"** — Usually a coordinate-system problem. The file declared the wrong projection, or had no projection information and MangoMap defaulted to WGS84. For shapefiles, check that the `.prj` was uploaded with the others. For GeoJSON, confirm the file is in WGS84.

**"I deleted the layer but the dataset is still there."** — That's expected. Layers and datasets are independent. To remove the data entirely, delete the dataset from the `Data` page.

**"I uploaded the same shapefile twice and got two datasets."** — MangoMap does not deduplicate by content. Each import produces a new dataset.

## Related

- [Supported file formats and limits](/docs/importing-data/supported-formats)
- [How to import a shapefile](/docs/importing-data/import-shapefile)
- [How to import a CSV](/docs/importing-data/import-csv)
