GeoJSON & Shapefile Validator

tool
geometry
Upload a GeoJSON or a Shapefile and check whether every geometry is valid under the Simple Features model — with the reason for each error and an optional automatic repair you can download. Free, runs entirely in your browser: the file never leaves your computer.
Published

September 1, 2026

Upload a file — .geojson, or a shapefile as a single .zip or as .shp/.dbf/.shx selected together — and find out whether every geometry is valid. If it isn’t, the exact reason; if you want, we’ll fix it and you can download the result.

Runs entirely in your browser (Python via WebAssembly): the file is never uploaded to a server. Want to see the actual code, understand why a geometry can be invalid, or compare against R’s independent implementation? Read the full article.

Validate

Click Validate to run the check on the current data — your file uploaded above, or (if nothing’s uploaded) a built-in bowtie-polygon example. No repair yet, just diagnosis: is the geometry valid? If not, why?

The code itself isn’t shown here — it’s a fixed, non-editable check using Shapely/GEOS underneath; see the full article for the actual code, editable and explained line by line.

First run loads the Python engine — expect 30-40 seconds. Instant after that, and again each time you come back to this page.

Result feature, valid, invalid.

Fix (optional)

make_valid() rebuilds the geometry into an equivalent, valid form. Requires having run Validate above at least once: it reuses exactly the same data just diagnosed, no new reading of the file.

Download the result

Download the current state — fixed if you ran the section above, otherwise diagnosed as-is.

--- Want to understand what makes a geometry invalid, see the actual code, or compare against R's independent implementation? The [full article](/posts/geometry-validity.html) uses this same engine with a gallery of common errors explained one by one.