GIS · GeoJSON

GeoJSON Validator

Validate GeoJSON against RFC 7946. Catches invalid JSON, wrong coordinate order, unclosed rings, out-of-range coordinates, missing members, and deprecated fields — with exact JSON path context.

Input GeoJSON
Drag & drop a .geojson or .json file here
All validation runs in your browser · no data sent anywhere

What Gets Checked

Structural and spec compliance validation based on RFC 7946.

🔤
JSON syntax
Catches malformed JSON before any GeoJSON checks run — unclosed brackets, trailing commas, unquoted keys, invalid escape sequences.
🏷️
Required members
Every object must have a type. Features must have geometry and properties. FeatureCollections must have a features array.
📍
Coordinate ranges
Longitude must be in [-180, 180] and latitude in [-90, 90]. Out-of-range values are the most common cause of data appearing in the ocean.
🔗
Ring closure
Polygon rings must be closed — the first and last position must be identical. A triangle is 4 positions: p1, p2, p3, p1. Open rings fail in PostGIS and QGIS.
📏
Minimum positions
LineString needs ≥ 2 positions. Polygon rings need ≥ 4 positions. MultiGeometries flag empty inner arrays.
⚠️
Deprecated fields
The crs member was removed in RFC 7946 — flags it with a warning. CRS is always assumed to be WGS 84 (EPSG:4326) in compliant GeoJSON.

How to Use

1
Paste or upload
Paste GeoJSON text directly into the input box, upload a .geojson or .json file, or drag-and-drop a file onto the editor. Click "Valid sample" or "Invalid sample" to see examples.
2
Validate
Validation runs automatically as you type. Click "Validate GeoJSON" to force a full re-check. The editor border turns green for valid, red for invalid.
3
Read the issues
Each issue shows a title, the exact JSON path (e.g. .features[2].geometry.coordinates[0]), and a detail message explaining the rule that was violated and how to fix it.
4
Fix and re-validate
Edit the GeoJSON in the input box and watch issues clear in real time. When the results card shows "Valid RFC 7946" with no errors, your file is ready to use in any compliant GIS tool.

Frequently Asked Questions

RFC 7946 is the IETF standard that defines the GeoJSON format, published in August 2016. It superseded the earlier community GeoJSON specification from 2008. Key changes: coordinates must be in WGS 84 (EPSG:4326), the crs member is deprecated, antimeridian-crossing geometries should be split rather than using coordinates outside [-180, 180], and bbox format is explicitly defined. All modern GIS tools expect RFC 7946 compliance.

GeoJSON polygon rings must explicitly repeat the first coordinate at the end. A triangle requires 4 positions: [[lon1,lat1],[lon2,lat2],[lon3,lat3],[lon1,lat1]]. The first and last must be numerically identical. This is different from some other formats (like Shapefile) that close rings implicitly. PostGIS, QGIS, and Mapbox all reject unclosed rings.

GeoJSON uses [longitude, latitude] order — longitude first. This is the opposite of most human conventions (we say "lat, lon") and many older APIs. If longitude is flagged as out of range [-180, 180], your coordinates are likely swapped. Latitude 51.5 passed as longitude 51.5 is fine, but latitude -0.12 passed as longitude causes no error — swapped London coordinates would silently place data somewhere valid on the globe, making this one of the hardest bugs to spot visually.

No. Winding order (counterclockwise exterior, clockwise holes) is a recommendation in RFC 7946 but not enforced — most tools handle both. Self-intersecting rings, duplicate consecutive vertices, and zero-area polygons are topological issues beyond RFC 7946 structural validation. Use PostGIS ST_IsValid(), QGIS Geometry Checker, or Shapely's is_valid for topological checks.

It's a warning, not an error. The crs member was present in the pre-RFC 7946 GeoJSON spec and is still written by some older tools (particularly QGIS versions before 3.x, and some ESRI exports). RFC 7946 explicitly deprecated it. Modern tools ignore it. To comply with the current spec, remove the crs key entirely — GeoJSON is always assumed to be WGS 84 (EPSG:4326).