drawamap

GeoJSON viewer

Drop a GeoJSON file here

Anywhere on the map works. It opens in this tab and stays on your machine.

.geojson or .json. KML, GPX and CSV work too.

What GeoJSON is, and why files vary so much

GeoJSON is ordinary JSON with a handful of rules about geometry bolted on. It started life around 2008 on a mailing list, written by people building web maps who had run out of patience with GML, and it only became a real standard in August 2016 as RFC 7946. Eight years of everyone agreeing informally, then a spec. That gap explains most of the weirdness you’ll meet.

A typical file is a FeatureCollection: a list of features, each with a geometry and a bag of properties. The geometry types are Point, LineString and Polygon, each with a Multi- version, plus GeometryCollection, which nests the others. Properties are whatever the author fancied. A council planning extract and a run exported from a watch can both be valid GeoJSON and have nothing else in common.

Being plain JSON is why it won, and also why files get hand-edited and quietly broken. If one won’t open here, a JSON linter usually finds the stray comma faster than you will.

Longitude first. This is where files go wrong.

Every coordinate is [longitude, latitude], in degrees, WGS84. That order trips up more people than everything else combined, because nearly every other place you meet a coordinate, from a phone to a postcode lookup, says latitude first. Swap them and London moves to Somalia.

Nothing here guesses. If your points land in the Gulf of Guinea off the coast of Africa, that’s the classic 0,0 signature of a bad parse; if they look mirrored about the equator, it’s a lat/lon swap. Silently flipping them for you would hide a bug in whatever wrote the file, and you’d hit it again next week.

RFC 7946 also removed the old crs member, so a conforming file is WGS84 degrees and nothing else. Plenty of exporters still write eastings and northings or Web Mercator metres into the same shape of file. Those numbers run into the hundreds of thousands, way past the ±90 a latitude can be, so they get filtered out and you get an empty map rather than a drawing smeared across the Antarctic. Reproject to EPSG:4326 and try again.

What this viewer reads, and what it drops
GeoJSON support in this viewer
In the fileOn the map
FeatureCollection, a single Feature, or a bare geometry objectall three open
Point, MultiPointmarkers, one per coordinate
LineString, MultiLineStringlines, one per part
Polygon, MultiPolygonouter ring only, one shape per part
Interior rings (holes)dropped, so the hole fills in
GeometryCollectionflattened into its pieces
properties.name, .title or .labelbecomes the shape label, first 60 characters
Any other propertydropped
A third number in a coordinate (elevation)dropped
.geojson and .jsonboth read the same way
TopoJSON, line-delimited GeoJSON, Shapefile, GeoPackagenot read

The holes row catches people. A polygon with a lake cut out of it arrives as its outer boundary alone, lake filled in. Better you know before you export than after you’ve sent the file on.

TopoJSON looks similar enough to fool you. It stores shared arcs and needs converting first; mapshaper does that in a couple of clicks. Shapefiles and GeoPackages need QGIS or ogr2ogr.

Editing, converting and sharing

Once the file is drawn it behaves like anything else you’d sketch here. Pick Select, tap a shape, drag its vertices. Rename it, recolour it, delete the features you didn’t want. Undo is Ctrl/Cmd+Z and goes back a hundred steps.

Then take it out: GeoJSON again, KML if it’s going into Google Earth, GPX for a GPS unit, or CSV if all you need is a list of points. CSV only carries markers — a line has nowhere to live in two columns of coordinates.

Circles are the one oddity. GeoJSON has no circle type, so a circle drawn here goes out as a many-sided polygon with its centre and radius tucked into the properties. Reopen that file here and it’s a real circle again, resizable. Open it anywhere else and it’s a polygon, which is the right fallback.

The share link packs the whole drawing into the URL, so a shared map still doesn’t leave a copy on a server. The cost of that is a length limit. A dense file won’t fit, and you’ll be told so and pointed at the download instead.

How this compares to the other GeoJSON viewers

There are at least nine free ones, several of them good. geojson.io has been around for a decade and does the job. We’re not going to pretend we’ve beaten the field.

Two things here are genuinely different, and they’re narrow. Your file never goes to a server: it’s read off disk by the browser and drawn with WebGL, and the only network traffic after the page loads is map tiles. For anything commercially sensitive, or anything you’d have to ask permission to upload, that distinction is the whole decision.

The second is that you can change the file. A lot of viewers render it and stop. Here you can drag the vertex that landed in the wrong field, strip the junk features, fix a name, then export the corrected file or hand someone a link to look at. Viewing and fixing in the same tab saves a round trip through QGIS for the small stuff.

Got a different format? KML viewer and GPX viewer are the same tool pointed at the same map.

FAQ
Does my file get uploaded?
No. The page reads it off your disk and draws it, and that's the whole journey. There's nowhere for it to go: no account to sign into and no backend sitting behind this page. One thing worth being precise about, though. The map underneath fetches tiles, so a tile server sees roughly which part of the world you're looking at. It never sees the file.
The map is blank after I drop my file. What happened?
Four usual suspects. The coordinates are the wrong way round, so everything is off the map or sitting in the sea south of Ghana. The file is in a projected system like British National Grid, so the numbers are far too big to be degrees. The JSON didn't parse, usually a trailing comma or a file that's really line-delimited JSON. Or the features genuinely have null geometry, which happens a lot with attribute tables exported from a database.
How big a file will it take?
A few megabytes is comfortable. Tens of megabytes gets slow and may run the tab out of memory, and a 100 MB extract of every building in a county won't work. Everything parses and draws on your own machine, so the ceiling is your laptop rather than ours. Clip it in QGIS or mapshaper first and you'll have a better time.
Will my properties survive a round trip?
No, and this is the limit to know about. Only name, title or label is kept. If your features carry population counts, IDs or dates, export from here and they're gone. Use this for checking and fixing geometry, and keep the original if the attributes matter.

More map tools