Free · No signup required

    GeoJSON Simplifier

    Cut the vertex count of heavy boundaries so a web map actually loads — with a live before-and-after preview of what you are losing.

    Leaflet © OpenStreetMap
    Made with GeoDataMapper

    Why simplification is usually the fix for a slow map

    Government boundary files are digitised at survey accuracy — a single district can carry fifty thousand vertices describing a river bank nobody will ever zoom into. Rendering that in a browser means parsing megabytes of JSON and asking the GPU to draw detail smaller than one pixel. Dropping to a few hundred vertices per shape typically cuts file size by 80–95% with no visible difference at city zoom levels, and it is almost always a bigger win than any other optimisation.

    How the algorithm decides what to remove

    Douglas-Peucker draws a straight line between the first and last point of a segment, finds the vertex furthest from that line, and keeps it only if the distance exceeds your tolerance — then recurses on both halves. The consequence is that it preserves corners and characteristic bends while deleting the near-collinear runs that make up most of a detailed coastline. Tolerance here is in degrees, so 0.0001 is roughly 11 metres at the equator.

    • 0.00001 (~1 m) — barely visible, still worth 20–40% savings
    • 0.0001 (~11 m) — safe default for city-level web maps
    • 0.001 (~110 m) — country and regional overviews
    • 0.01 (~1.1 km) — world maps and thumbnails only

    What you give up

    Simplification changes geometry, so measurements change with it: area and perimeter both drift, usually shrinking. Adjacent polygons are simplified independently, which means shared borders can pull apart and leave slivers or overlaps — this tool is not topology-aware. And a ring can never be reduced below four positions, so tiny parcels stop shrinking at a certain point. Measure area before you simplify, and keep the original file as your source of truth.

    A sensible workflow

    Start at the second or third level and step up until the preview visibly deviates from the original, then step back once. Check the vertex count rather than the file size — a 90% vertex reduction is the signal you want. Then keep two copies: the full-resolution file for analysis and measurement, and the simplified one for display. If the map still struggles after simplification, the problem is feature count rather than vertex count, and clustering or vector tiles is the next step.

    Free version

    • Ramer–Douglas–Peucker simplification, seven levels
    • Live vertex count and file size comparison
    • Polygon rings kept closed and valid
    • Download the simplified GeoJSON

    With a GeoDataMapper account

    • Topology-preserving simplification across shared borders
    • Vector tiles generated automatically per zoom level
    • Keep the detailed original and serve a light version
    • Simplify on upload through the API
    Create free account

    Frequently asked questions

    Which algorithm is used?

    Ramer–Douglas–Peucker, applied per line and per polygon ring, with rings kept closed and never reduced below four positions.

    What units is the tolerance in?

    Degrees. Roughly 111 km per degree of latitude, so 0.0001 is about 11 m and 0.001 about 110 m.

    Will shared borders still line up?

    Not guaranteed. Each geometry is simplified independently, so neighbouring polygons can develop slivers. Topology-preserving simplification needs a GIS engine such as PostGIS ST_SimplifyPreserveTopology.

    Does it change area and perimeter?

    Yes, slightly, and more at higher tolerances. Measure before simplifying if the numbers matter.

    Are points affected?

    No. Points and multipoints pass through unchanged.

    More free GIS tools

    Guides worth reading next