GeoJSON to SHP Converter
LocalConvert GeoJSON to a zipped Shapefile — free online, no upload. Point, line and polygon layers, typed attributes, crs-aware .prj, all locally in your browser.
Drag files here, or click to browse
Supports GEOJSON, JSON
Choose filePreview first: dropping a file parses it and shows the input on the map below — the Shapefile zip is produced only after you click the button.
What is it? GeoJSON to Shapefile converts GeoJSON to a zipped Shapefile bundle (.shp/.shx/.dbf/.prj/.cpg) with point/multipoint/line/polygon layers, keeps every property column with an inferred DBF type (text/numeric/boolean/date, UTF-8 text with a UTF-8 .cpg), writes a .prj that follows the input crs member (WGS84 / OGC:CRS84 / Web Mercator EPSG:3857 family — other CRS are rejected loudly with a pointer to reproject first), and expands GeometryCollection members into their matching layers. Everything runs locally in your browser — nothing is uploaded and no account is needed.
TL;DR: Convert GeoJSON to a zipped Shapefile in your browser — typed attributes, crs-aware .prj, no upload.
How to use
- Drop in a .geojson/.json file — it is parsed and shown on the input map preview only (nothing converts until you click).
- Click "Convert & download".
- Download the ZIP of shapefile parts (.shp/.shx/.dbf/.prj/.cpg per layer).
FAQ
Why a ZIP?
A Shapefile is a set of files; they are packaged together for download.
How are property columns typed?
By inspection across the layer's features: all booleans → L, all numbers → N (with the widest decimal count), all YYYY-MM-DD strings → D, everything else → C. Text is stored as UTF-8 and a .cpg="UTF-8" sidecar is written so QGIS/GDAL read non-ASCII values correctly (previously everything was flattened to NAME/LAYER ASCII columns).
Is it local?
Yes.
My file is .json, not .geojson — does it work?
Yes — GeoJSON is JSON, so any .json file containing a valid GeoJSON FeatureCollection or geometry converts. JSON that is not GeoJSON fails loudly instead of producing an empty Shapefile.
Why are my field names shorter or renamed?
The DBF sidecar caps field names at 10 ASCII characters — names are ASCII-sanitized, truncated and deduplicated (a Shapefile limit, not a bug). The values themselves keep non-ASCII characters because text is stored as UTF-8 with a .cpg="UTF-8" sidecar.
Which coordinate systems does the .prj support?
No crs member (the RFC 7946 default), EPSG:4326 and OGC:CRS84 write WGS84; the EPSG:3857 family (including 900913/102100) writes Web Mercator (Auxiliary Sphere). Any other EPSG is rejected loudly with a pointer to reproject first, so coordinates are never silently mislabeled.
Why are points, lines and polygons in separate layers?
A Shapefile file set holds one geometry type per file, so a mixed GeoJSON layer is split into points/multipoints/lines/polygons layers inside the ZIP; GeometryCollection members are expanded into their matching layers.
Examples
- Drop in GeoJSON → preview on the map → Convert & download Shapefile.zip
Supported formats
Limitations
- Mixed geometry types are split into points/multipoints/lines/polygons layers (MultiPoint is shape type 8).
- GeometryCollection members are expanded recursively into their matching layers (an amber note reports the expansion); shapes with empty rings, non-finite coordinates or unknown types are skipped and counted.
- Field names are ASCII-sanitized, truncated to 10 characters and deduplicated (Shapefile DBF limits); text values keep non-ASCII characters via UTF-8 + .cpg.
- The .prj follows the input crs member: WGS84 (also the default without a crs member) for EPSG:4326/OGC:CRS84, Web Mercator (Auxiliary Sphere) for the EPSG:3857 family; any other EPSG fails loudly with a pointer to geojson-reproject instead of mislabeling coordinates.
- Caps at 1,000,000 features per run — split larger datasets into batches.
Privacy
Privacy first: this tool runs entirely in your browser — your input and files never leave your device, and everything is cleared when you close the page.