Simplify GeoJSON
Reduce vertex count in polygons and lines using Douglas-Peucker (via Turf.js when available, with a built-in fallback). Pick a tolerance, see the size reduction, download. 100% in-browser.
Simplify GeoJSON
Before you start
You need a GeoJSON Feature, FeatureCollection, or a raw Geometry (like a Polygon or LineString). You can either drop a .geojson file or paste the raw string directly into the input area. I built this tool specifically to help with "heavy" map data that makes web maps laggy or exceeds file size limits for certain APIs.
Your coordinates should be in decimal degrees (WGS84), which is the standard for GeoJSON. If your coordinates look like [450231, 5671234], you're likely using a projected system like UTM or Web Mercator; this tool will still work, but the tolerance numbers won't match my distance guide below.
There is no hard file size limit because everything happens in your browser's memory. I've thinned out 50 MB files on my own machine without issues, but if your browser tab starts chugging, try refreshing and using a slightly higher tolerance to start with.
How to use it
- Paste your GeoJSON into the left pane, or drag-and-drop your
.geojsonfile. - Set the Tolerance. Start small (e.g.,
0.0001) if you just want to remove redundant points. - Click Simplify to run the Douglas-Peucker algorithm.
- Check the status bar at the bottom to see how many vertices were removed and the new file size.
- Click Copy or Download .geojson to save your optimized data.
Options explained
Tolerance (degrees)
The tolerance determines how "aggressive" the vertex removal is. The algorithm calculates the distance between points and a virtual line segment; if a point is closer than the tolerance, it gets tossed. Because GeoJSON uses degrees, your tolerance is also in degrees.
Think of it in terms of real-world distance at the equator: 0.0001 is roughly 11 meters (very detailed), 0.001 is about 110 meters (good for city maps), and 0.01 is roughly 1 kilometer (perfect for country-level outlines). If your map looks like a jagged mess of triangles, your tolerance is too high → lower it by adding another zero after the decimal point.
Example
Input (a LineString with a nearly-flat middle point):
{
"type": "LineString",
"coordinates": [[0, 0], [0.00001, 0.00001], [1, 1]]
}
Output (Simplified at 0.01 tolerance):
{
"type": "LineString",
"coordinates": [[0, 0], [1, 1]]
}
The middle point was within the 0.01 tolerance threshold, so it was removed to save space without significantly changing the shape at that scale.
Tips & common pitfalls
- Topology is not preserved. This tool simplifies features individually. If you have two adjacent polygons sharing a border, they might "pull apart" at high tolerances, creating gaps or overlaps. For that, you'd need a TopoJSON workflow.
- Small polygons can vanish. If your tolerance is larger than the entire diameter of a small polygon, the algorithm might reduce it to a single point or a line, which can cause rendering errors when previewed in the GeoJSON Viewer.
- Start small, go big. I usually start at
0.0001. If the file is still too big, I move to0.0005, then0.001. It's easier to thin it out more than it is to fix a shape that has become "crunchy" from over-simplification. - Coordinate Precision. This tool reduces the number of points, not the length of the decimals. If you want to shorten
-122.123456789to-122.1234, use the GeoJSON Formatter tool.
Troubleshooting
The output looks identical to the input.
Your tolerance is likely too low. If your data is very high-resolution, a tolerance of 0.0001 might not find any points to remove. Try increasing it to 0.001 or 0.01 and clicking Simplify again.
My polygons turned into weird triangles or straight lines.
Your tolerance is too high. You've told the algorithm that any point within a huge distance is "unimportant," so it's nuking everything but the most extreme corners. Add a zero after the decimal (e.g., change 0.1 to 0.01) and retry.
I get a "JSON Parse Error".
The input must be valid JSON. Ensure you haven't accidentally pasted a file path instead of the file content, or check for trailing commas if you're manually editing the text.
Related tools
See also: if you need to do something adjacent on this site, try GeoJSON Formatter to pretty-print or minify a GeoJSON file, GeoJSON to CSV to flatten a feature collection into a CSV table, or GeoJSON to KML to convert GeoJSON to KML for Google Earth.
Frequently asked questions
What algorithm does this use?
It uses the Douglas-Peucker algorithm. It's the industry standard for thining out lines and polygons while keeping the general "spirit" of the original shape. I use the turf.simplify implementation whenever possible.
Does this handle shared borders between polygons?
No. This tool treats every Feature as an independent object. If you need to simplify a complex map of counties or states while keeping the borders perfectly aligned, you should look into TopoJSON-based tools like Mapshaper.
Why is the tolerance in degrees instead of meters?
Standard GeoJSON coordinates are in degrees (longitude and latitude). Since the algorithm calculates distance between those coordinates, the threshold has to be in the same units. I've provided a rough meter-conversion guide in the Options section to help you estimate.
Are my map files uploaded to a server?
No. All the processing happens right in your browser using JavaScript. Your GeoJSON never leaves your computer. This makes it much faster for large files and better for privacy. Check out my privacy policy if you're curious.
Can I simplify multiple features at once?
Yes. If you paste a FeatureCollection, the tool will iterate through every feature and simplify them all using your chosen tolerance. The status bar will show you the aggregate savings across the whole collection.