GeoJSON is an open standard, based on JSON, for representing vector geographic data: points, lines, polygons, and their multi-part variants, each with arbitrary attributes (properties). It is defined by RFC 7946 (2016) and is the lingua franca of web mapping because browsers and JavaScript libraries parse it natively.

Structure

A GeoJSON document is typically a FeatureCollection containing Feature objects, each with a geometry (a Point, LineString, Polygon, MultiPolygon, etc.) and a properties object. Geometry types supported are Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, and GeometryCollection.

Coordinate order and CRS

RFC 7946 fixes coordinates as [longitude, latitude] (x, y) and mandates WGS 84 (EPSG:4326) as the only coordinate reference system. Older pre-RFC GeoJSON allowed a crs member, but the current standard removed it — if your data is not in WGS 84, reproject it before exporting to compliant GeoJSON. Coordinates are decimal degrees, and longitude comes first.

Why it matters

GeoJSON is human-readable, diff-friendly in version control, and trivially consumed by Leaflet, MapLibre, OpenLayers, and most spatial tooling. The trade-off is size: it is verbose and uncompressed, so for large datasets formats like FlatGeobuf, vector tiles, or GeoParquet perform far better.

Common pitfall

Coordinate-order reversal. People accustomed to "lat, lon" frequently swap the values, placing features in the wrong hemisphere or in the ocean off West Africa (near 0,0). Always confirm the order is [longitude, latitude].

Related reading