How to open a GeoJSON file on Android
Someone sent you a .geojson file, or a data portal gave you one instead of a map. It is a JSON file underneath, so your phone can read it — but reading the data and seeing it drawn are different jobs.
Short answer
A .geojson file is plain JSON with a fixed structure, so a JSON viewer opens it: Sonnet shows it as a foldable tree, offline, which is what you want for reading coordinates, properties and feature counts. It will not draw a map. For that, view the file from a GitHub repository in your browser, or use a GeoJSON map viewer.
Get Sonnet free Reads the file offline, nothing uploaded.
Is a .geojson file the same as a .json file?
The contents are ordinary JSON — the same syntax covered in what is a JSON file. GeoJSON is a set of rules about what that JSON must contain, standardised as RFC 7946, and its media type is application/geo+json. The extension is a convention, not a different file type: GDAL, the format library desktop GIS tools lean on, identifies this format “from the file extension .geojson or .json”, and treats both the same.
That matters in one practical way. Some Android apps and file pickers decide what they will offer you from the extension, and .geojson is rarer than .json. If a file manager won’t hand your file to anything, copy it and rename the copy to end in .json. The bytes are identical; only the label changed.
What’s inside a GeoJSON file
Every object in the file has a type member, and the specification allows exactly nine case-sensitive values: Feature, FeatureCollection, and the seven geometry types below. Most files you are sent are one FeatureCollection with a features array inside it.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": 417,
"properties": { "name": "Depot gate", "open": true },
"geometry": {
"type": "Point",
"coordinates": [2.352200, 48.856600]
}
}
]
}
A Feature always carries a geometry and a properties member. properties is where the human-readable part lives — names, codes, dates, anything the publisher chose — and it is allowed to be any JSON object or null. geometry may also be null, which the standard calls an unlocated feature. An id is optional, and when present it is a string or a number.
| Geometry type | What coordinates holds |
|---|---|
Point | A single position: one [longitude, latitude] pair |
MultiPoint | An array of positions |
LineString | An array of two or more positions — a route, a river, a track |
MultiLineString | An array of LineString coordinate arrays |
Polygon | An array of linear rings — each a closed LineString of four or more positions whose first and last are identical. The first ring is the outline, the rest are holes |
MultiPolygon | An array of Polygon coordinate arrays — a country with islands |
GeometryCollection | No coordinates at all: a geometries array of the types above |
Member definitions quoted from the GeoJSON specification’s own source text (the geojson/draft-geojson working-group repository, which is what RFC 7946 was published from), read 2 November 2026.
Read the data on your phone
This is the part a JSON viewer is good at. Open the file in Sonnet and you get the collapsible tree, entirely offline — nothing is uploaded, and there are no ads.
- Fold
featuresfirst. The number of children is how many things the file describes, which is often the one fact you wanted. - Expand one feature and read its
properties. Publishers rarely document their field names, so the quickest way to learn the schema is to read one record. - Leave
coordinatesfolded unless you need a number out of it. On a boundary file it is thousands of pairs deep and scrolling it tells you nothing. - Tap a value to edit it if you need to correct a name or a number, then save. If you want to reformat the file first, that works the same way.
Sonnet Pro, a one-time unlock, adds search, which is the difference between finding one road name in a council dataset and scrolling for it.
How to see a GeoJSON file on a map
Sonnet does not draw maps, and no JSON viewer does. Three routes that do:
- Your phone’s browser, via GitHub. Commit the file to a GitHub repository and open its path in the browser: GitHub renders
.geojsonand.topojsonfiles as a map, and a.jsonfile too “only iftypeis set toFeatureCollection,GeometryCollection, ortopology”. Its documentation says that past about 10 MB it is “not possible to render within the browser”. - A dedicated Android viewer. GeoJson Viewer by Nextome is an open-source app (Apache 2.0) whose stated job is exactly this: pick a GeoJSON file on your device and choose a map provider. Its README says it is free on Google Play; we have not tested it, so check the listing before you rely on it.
- A computer. QGIS is free desktop GIS and lists GeoJSON among the vector formats it reads. Find the file in its Browser panel and double-click it or drag it onto the map canvas, or use Add Vector Layer.
GitHub’s rendering rules are from its own documentation; the viewer app’s details are from its GitHub README; the QGIS steps are from the QGIS user manual. All read 2 November 2026.
Why your points land in the wrong place
Almost every GeoJSON mistake is one of these three, and all three are visible in the tree before you ever load a map.
- The pair is the wrong way round. A position is “longitude and latitude, or easting and northing, precisely in that order”. Most people say latitude first, and most mapping apps show it that way, so reversing the pair is the classic error. The
[2.3522, 48.8566]in the example above is in Paris; written the other way round,[48.8566, 2.3522], it sits in the Indian Ocean a few hundred kilometres east of Somalia. - The numbers aren’t degrees. The standard fixes one coordinate reference system: “using the WGS 84 datum, and with longitude and latitude units of decimal degrees”, equivalent to
urn:ogc:def:crs:OGC::CRS84. Alternatives were allowed in the 2008 version but “removed from this version”, so a file of six-figure numbers is projected metres from some other system and is not conforming GeoJSON. An optional third element is height in metres above or below the WGS 84 ellipsoid. - A polygon is wound backwards. A linear ring “MUST follow the right-hand rule with respect to the area it bounds”: exterior rings counter-clockwise, holes clockwise. A file that ignores it is not conforming.
Axis order matters in one more place. A bbox member, if present, holds twice as many numbers as the data has dimensions, in the geometries’ axis order: west, south, east, north for ordinary two-dimensional data.
When the file won’t open at all
- The extension is
.geojsonlor.geojsons. Those are GeoJSON text sequences: features “separated by newline (LF) (Newline Delimited JSON) or record-separator (RS) characters”, one per line, rather than a single document. Sonnet opens one JSON document at a time and does not open JSON Lines, so these need a computer. - The JSON is broken. A truncated download is the usual cause. Sonnet retries a file that fails to parse through its repair step, which fixes missing and trailing commas and unclosed brackets and says so; nothing is written to disk until you save. It does not strip comments, escape stray quotes or invent data a cut-off file never held — a truncated file gets its closing brackets, not its missing features. What the invalid-JSON errors mean covers the rest.
- It’s too big. See below.
How big do GeoJSON files get?
Coordinates dominate, so size follows the shape of the data rather than the number of things in it. Measured here, writing both files minified at six decimal places:
- A single
LineStringtrack of 1,000 positions came to 23.4 KB — about 24 bytes per position. - 500
Pointfeatures with six properties each came to 105 KB — about 214 bytes per feature, most of it the property names repeated 500 times.
At that density roughly 88,000 positions fill 2 MB and 880,000 fill 20 MB. Two things inflate it: pretty-printing, which tripled the track file at two-space indentation, and precision — GDAL writes 15 decimal digits per coordinate for 2008-style GeoJSON and 7 for RFC 7946, and a file at 15 digits is far larger than the same shapes at six.
Sonnet shows the full tree for JSON up to about 2 MB and opens files up to 20 MB as read-only formatted text, with the one-time Sonnet Pro unlock raising that to a 30 MB tree and 50 MB files. A hand-drawn route or a few hundred points sits comfortably inside the free tree. A national boundary dataset does not, and belongs in how to open a large JSON file on Android.
Read the data behind the map
Sonnet opens JSON files as a collapsible tree, entirely offline, so the file never leaves your phone. No ads, no account. Free on Google Play.