GeoJSON Simplify runs the Ramer–Douglas–Peucker algorithm over every LineString, MultiLineString, Polygon and MultiPolygon in your data. The algorithm keeps a vertex only when removing it would displace the shape by more than your tolerance — expressed here in metres, with longitude properly scaled by latitude so the tolerance means the same thing in Oslo as in Singapore. GPS tracks logged every second and boundaries digitised at survey precision routinely shrink by 80 to 95% with no visible change at map scale, which is the difference between a web map that loads instantly and one that stutters. Structure survives intact: rings stay closed, polygons keep at least four positions rather than collapsing, points and properties pass through untouched, and the original object is never mutated.
Features
Douglas–Peucker with a metre-based tolerance slider
Latitude-aware scaling so metres mean metres everywhere
Handles LineString, Polygon and their Multi* variants
FeatureCollections, Features and GeometryCollections walked recursively
Rings stay closed and never collapse below a valid polygon
Point counts, reduction percentage and byte sizes reported
Properties and foreign members preserved untouched
Everything processed on your device
How to use the GeoJSON Simplify
Paste GeoJSON or load the sample
Set the tolerance — 5–20 m for street-level, 100 m+ for country shapes
Indistinguishable on a map; twenty times faster to load.
Common errors & troubleshooting
The simplified shape cuts corners visibly. — Tolerance is too large for the zoom level you care about. Halve it until the artefacts disappear — the sweet spot is usually the largest tolerance whose output still looks identical at your maximum zoom.
Zero points were removed. — The data may already be coarse relative to the tolerance. Raise the tolerance, and note that Points and MultiPoints are never touched — only lines and rings have vertices to spare.
Two adjacent polygons no longer share a border exactly. — Each ring simplifies independently, so shared edges can diverge slightly. For strict topology — country mosaics, cadastral data — use a topology-aware pipeline; for display layers the gaps are subpixel.
The file barely shrank despite big point reductions. — Coordinate precision may dominate: fifteen decimal places per number is most of the bytes. Rounding coordinates to 5–6 decimals (about 10 cm) alongside simplification gives the full saving.
Frequently asked questions
How does the Douglas–Peucker algorithm decide which points to keep?
It draws a chord between a segment's endpoints, finds the vertex farthest from that chord, and keeps it only if its distance exceeds the tolerance — then recurses on both halves. The survivors are exactly the vertices that shape the line at your chosen scale.
What tolerance should I use for GPS tracks?
Consumer GPS wanders 3–10 m anyway, so a 10 m tolerance mostly removes noise rather than signal. Street-level display holds up to about 20 m; regional overviews tolerate 100 m or more.
Will simplification break my polygons?
The guards here prevent the classic failures: the closing point is preserved, rings that would fall below four positions are left alone or kept as minimal valid rings, and nothing is mutated in place. Self-intersection from aggressive tolerances remains possible on convoluted shapes — inspect extreme reductions.
Why simplify in metres rather than degrees?
A degree of longitude shrinks with latitude — 111 km at the equator, 55 km at 60°N. A raw degree tolerance would simplify Scandinavian data twice as aggressively as equatorial data; scaling by cos(latitude) keeps the tolerance physically meaningful.
Does simplification lose data permanently?
Yes — removed vertices are gone from the output. Keep the original for analysis and archives, and ship the simplified copy for display. The stats panel tells you exactly what was traded.
Related tools
GeoJSON Viewer & Validator — Paste or drop GeoJSON to validate it and see its features on a map, with feature counts and a bounding box.
GeoJSON Bounding Box — Get the bounding box, centre, area and length of any GeoJSON, in both coordinate orders.
GPX to GeoJSON — Convert GPX to GeoJSON and back — GPS tracks, routes and waypoints to GeoJSON features, or GeoJSON back to a GPX file.
GeoJSON to CSV — Convert a GeoJSON FeatureCollection to CSV and back — Point features become latitude/longitude columns with their properties.
Polyline Encoder & Decoder — Encode coordinates to a Google encoded polyline string and decode polylines back to coordinates or GeoJSON.
KML to GeoJSON — Convert KML ⇄ GeoJSON — turn Google Earth KML into GeoJSON for web maps, or GeoJSON back into KML.