BYTETOOLS

GeoJSON Validator

Validate GeoJSON against RFC 7946 and get the exact JSON path of every problem: unclosed rings, swapped coordinates, missing properties and more.

Drop a .geojson or .json file here, or click to browseChecked locally — the file is never uploaded

What is the GeoJSON Validator?

A GeoJSON file that parses as JSON can still be invalid GeoJSON, and most mapping libraries fail quietly when it is — a layer simply does not appear.

  • Full RFC 7946 structural check for every GeoJSON type
  • Exact JSON path reported for each error and warning
  • Detects unclosed rings, short LineStrings and swapped lat/lon
  • Separates hard errors from advisory winding-order warnings
  • Counts features, geometries and positions for a quick sanity check
  • 100% client-side — your data is never uploaded

How to use the GeoJSON Validator

  1. 1

    Paste your GeoJSON into the box, or drop a .geojson file onto the upload area.

  2. 2

    Click Validate GeoJSON.

  3. 3

    Read the pass/fail banner and the counts of features, geometries and positions.

  4. 4

    Work through the error list — each entry names the JSON path where the problem is.

About the GeoJSON Validator

A GeoJSON file that parses as JSON can still be invalid GeoJSON, and most mapping libraries fail quietly when it is — a layer simply does not appear. This validator checks the structure against RFC 7946 and tells you exactly what is wrong and precisely where, using a JSON path such as $.features[3].geometry.coordinates[0].

It catches the mistakes that actually happen: polygon rings that are not closed or have fewer than four positions, LineStrings with a single point, latitude and longitude swapped so a value falls outside ±90°, missing properties members, coordinates that are strings instead of numbers, and the obsolete crs member removed in RFC 7946. It also raises advisory warnings for right-hand-rule winding, which most renderers tolerate but strict validators do not.

Use it before importing into QGIS or PostGIS, when a Leaflet layer refuses to draw, or in code review on a generated file. Validation runs entirely in your browser — the document is never uploaded, so it is safe for unpublished datasets.

Frequently asked questions

How do I check if my GeoJSON is valid?

Paste it here and click Validate. The tool parses the JSON, then walks the structure against RFC 7946 and reports every problem with the exact path where it occurs, rather than stopping at the first error.

Why does my GeoJSON parse as JSON but not display on the map?

Usually because a polygon ring is not closed, a position is [latitude, longitude] instead of [longitude, latitude], or a Feature is missing its properties member. All three are valid JSON but invalid GeoJSON, and most map libraries just render nothing.

Does a GeoJSON polygon have to be closed?

Yes. RFC 7946 requires every linear ring to have at least four positions with the last position identical to the first. An unclosed ring is one of the most common reasons a polygon silently fails to draw.

What is the right-hand rule in GeoJSON?

RFC 7946 asks for exterior rings wound counterclockwise and holes clockwise. Most renderers ignore the winding, so this tool reports it as a warning rather than an error — but strict validators and some spatial databases will reject the wrong order.

Can GeoJSON use a coordinate system other than WGS-84?

No. RFC 7946 removed the crs member and fixed GeoJSON to WGS-84 longitude/latitude. If your file still carries a crs object you should reproject the data rather than keep the declaration, and this validator flags it.

Is my file uploaded during validation?

No. Everything is checked in your browser with JavaScript, so nothing is transmitted, logged or stored. That makes it safe for confidential boundaries and unreleased datasets, and it works offline.

Related tools