Paste GeoJSON and see it drawn on an interactive map. Most viewers stop at whether the text parses; this one also checks what RFC 7946 asks for — that rings close, that they follow the right-hand rule, that coordinates stay inside longitude ±180 and latitude ±90, and that a declared bbox actually contains the data. The bbox is drawn on the map as an orange dashed rectangle, so a mismatch is something you see rather than read about. Problems that make the data impossible to draw are reported as errors and the map is cleared; problems that still leave it drawable are reported as warnings and the shapes stay. Parsing, validation and rendering all happen in your browser — nothing is uploaded, so you can paste data you are not allowed to share.
Properties
Click a shape on the map to see the properties of that feature.
GeoJSON Guide
How to Use
Paste your GeoJSON into the text area and press View GeoJSON. Valid input is drawn on the map and reformatted with two-space indentation. If the input is not valid JSON, the parser error is shown together with the position of the problem. If it parses but its type is not a GeoJSON type, a type error is shown instead. Your input is never cleared, so you can fix it in place.
The Nine GeoJSON Types
Point
A single position.
{ "type": "Point", "coordinates": [139.7, 35.68] }MultiPoint
An array of positions.
{
"type": "MultiPoint",
"coordinates": [[139.7, 35.68], [135.5, 34.7]]
}LineString
Two or more positions forming a line.
{
"type": "LineString",
"coordinates": [[139.7, 35.68], [135.5, 34.7]]
}MultiLineString
An array of LineStrings.
{
"type": "MultiLineString",
"coordinates": [[[139.7, 35.68], [135.5, 34.7]]]
}Polygon
One or more closed rings. The first ring is the outer boundary; any others are holes.
{
"type": "Polygon",
"coordinates": [
[
[139.7, 35.6], [139.8, 35.6],
[139.8, 35.7], [139.7, 35.6]
]
]
}MultiPolygon
An array of Polygons.
{
"type": "MultiPolygon",
"coordinates": [
[
[
[139.7, 35.6], [139.8, 35.6],
[139.8, 35.7], [139.7, 35.6]
]
]
]
}GeometryCollection
A collection of geometries of mixed types.
{
"type": "GeometryCollection",
"geometries": [
{ "type": "Point", "coordinates": [139.7, 35.68] }
]
}Feature
A geometry paired with a "properties" object. Properties carry information about the shape — a name, a population count, a category — rather than its geometry. Click a feature on the map to see them.
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [139.7, 35.68]
},
"properties": { "name": "Tokyo" }
}FeatureCollection
An array of Features. The most common top-level type for real data.
{ "type": "FeatureCollection", "features": [] }About the bbox (bounding box)
A bbox is the rectangle enclosing the data, written as four numbers in the order west, south, east, north — or six for three dimensions, with the minimum and maximum elevation. It can sit on a FeatureCollection, a Feature or a geometry, and it is optional. A hand-written bbox goes stale easily, so generate it from the data rather than typing it by hand. This page draws a declared bbox as an orange dashed rectangle and tells you if the data falls outside it.
{
"type": "Polygon",
"bbox": [139.7, 35.6, 139.8, 35.7],
"coordinates": [
[
[139.7, 35.6], [139.8, 35.6],
[139.8, 35.7], [139.7, 35.6]
]
]
}Tips
- Most syntax errors come from a trailing comma, single quotes instead of double quotes, or unquoted keys. The error message reports the character position, so start reading there.
- If a shape is drawn somewhere unexpected, suspect the coordinate order before the data itself.
- Paste one FeatureCollection rather than checking features one at a time — it renders in a single pass.
- Data in a projected coordinate system — UTM, State Plane, Japan Plane Rectangular CS — must be reprojected to WGS84 before it will land in the right place.
What gets checked
Every time you press View GeoJSON, the document is checked against RFC 7946. Anything that makes the data impossible to draw is reported as an error; anything that still draws but should be fixed is reported as a warning. Nothing is uploaded — validation runs entirely in your browser.
Errors — nothing is drawn on the map
- The text does not parse as JSON.
- A "type" is not valid for its position: the top level has to be one of the nine GeoJSON types, and a nested geometry one of the seven that are neither Feature nor FeatureCollection.
- A position is not an array of at least two finite numbers: an empty array, a single number, or numbers written as strings.
- A coordinate falls outside longitude ±180 or latitude ±90. Positions written as [latitude, longitude] show up here.
- The nesting of "coordinates" does not match the geometry type.
- A required member is missing.
- A ring or a line has too few positions. A polygon ring needs four or more, a line two or more.
Warnings — the data is still drawn
- A ring is not closed: its first and last positions differ.
- A ring breaks the right-hand rule. Outer rings should run counterclockwise and holes clockwise.
- The bbox cannot be read: the wrong number of values, or values out of range.
- Data falls outside the bbox declared in the document.
Glossary
- RFC 7946
- The specification that defines GeoJSON. It fixes the coordinate reference system to WGS84 and the coordinate order to longitude then latitude, and defines exactly nine types. Documents written against the older 2008 GeoJSON 1.0 spec may use other coordinate systems.
- Position
- A single coordinate, written as an array of longitude and latitude, optionally followed by an elevation. Every geometry in GeoJSON is built from positions, which is why a mistake here shifts the whole shape.
- GeometryCollection
- A geometry that holds other geometries of mixed types in a "geometries" array. Unlike a FeatureCollection it carries no properties, so it describes shapes without attributes.
- Syntax validation and semantic validation
- Syntax validation asks whether the text parses and whether the type is one this format defines. Semantic validation asks whether the values make sense — coordinates inside valid ranges, rings that close, winding order. This tool does both, separating violations that make the data meaningless to draw (errors) from those that are still drawable but worth fixing (warnings).
FAQ
- Q: Is the GeoJSON I paste sent to a server?
- A: No. Parsing, validation and rendering all happen in your browser. Nothing is sent to a server, so you can paste data you are not allowed to share.
- Q: Why do I get "Valid JSON, but not GeoJSON"?
- A: Your input parsed correctly as JSON, but its "type" field is missing or is not one of the nine GeoJSON types. A plain object such as {"a":1} is valid JSON and still not GeoJSON.
- Q: What exactly does it validate?
- A: Errors, which stop anything being drawn: text that does not parse as JSON, a type that is not valid in the position it appears, positions that are not pairs of finite numbers or fall outside longitude ±180 and latitude ±90, a "coordinates" nesting that does not match the geometry type, missing required members, and rings or lines with too few positions. Warnings, which still draw: unclosed rings, rings that break the right-hand rule, and a bbox that cannot be read or does not contain the data. Coordinate precision is not checked. The "What gets checked" section lists them one by one.
- Q: Which comes first in GeoJSON, longitude or latitude?
- A: Longitude comes first. RFC 7946 requires the first two elements to be longitude and latitude, in that order, and a bbox follows the same axis order: west, south, east, north. Many maps, Google Maps among them, show coordinates as "latitude, longitude", which makes it easy to get backwards, but GeoJSON always puts longitude first. Values written the other way usually land outside the valid range and are reported as an error.