Live Online Convertergeojson → shapefile

GeoJSON to Shapefile Converter

Writes a GeoJSON file as Shapefile (ZIP with .shp, .shx, .dbf and .prj) using GDAL's ogr2ogr.

Upload a .geojson or .json file. You get a ZIP with the Shapefile parts. Where the Shapefile format is more limited than GeoJSON (field names, text length, one geometry type per file), GDAL adapts the data and the report lists every change.

Drag a file here to convert, or select file

Accepted: .geojson, .json · max. 50 MB

Direct upload to the GDAL worker (Fly.io, Frankfurt)Files are deleted after the conversion

What the converter does

  • The download is a ZIP with .shp, .shx, .dbf and .prj; the .prj describes the GeoJSON's coordinate system.
  • Field names longer than 10 characters are shortened by GDAL; clashes get numbered (bezeichnung_lang becomes bezeichnun, bezeichnung_kurz becomes bezeichn_1). Every renaming appears as a warning in the report.
  • Text longer than 254 characters is cut to 254 characters; GDAL's warning appears in the report.
  • A Shapefile holds only one geometry type. Layers with mixed geometries are split into <layer>_points, <layer>_multipoints, <layer>_lines and <layer>_polygons, only for the types that occur. No feature is dropped.
  • Lists (JSON arrays) are kept as text such as (2:bahn,fern); JSON objects become text such as { "quelle": "test" }.
  • The DBF text is written as ISO-8859-1 (GDAL's default). Characters outside it, such as Ł, become ?; GDAL's warning appears in the report.
  • Shapefile has no date-time type: GDAL creates such fields as date fields (warning in the report), so the time of day is not stored.
  • The report below the upload shows layers and features read and written, skipped layers with the reason, GDAL's warnings and the exact commands.

GDAL command the worker runs

sh — gdal
$ogr2ogr -f "ESRI Shapefile" output_shapefile input.geojson input -mapFieldType StringList=String,IntegerList=String,Integer64List=String,RealList=String

For a layer with one geometry type. For mixed layers the worker runs one command per geometry type, e.g. ... -dialect OGRSQL -sql "SELECT * FROM \"input\" WHERE OGR_GEOMETRY IN ('POINT')" -nln input_points. The folder output_shapefile is what you download as ZIP.

Tested with

Test fileResult
4 points with 10 properties: long names, a 304-character text, a date, a list and an object4 of 4 features; 5 field names shortened (warnings shown), text cut to 254 characters, list as (2:bahn,fern), object as { "quelle": "test" }, date kept
Mixed layer: 2 points, 1 line, 1 polygon3 Shapefiles: gemischt_points (2), gemischt_lines (1), gemischt_polygons (1); 4 of 4 features
Names Łódź and KölnKöln correct, Łódź becomes ?ód?; GDAL's encoding warning in the report
47.2 MB GeoJSON with 97,578 features (size test)HTTP 200, 17.2 MB ZIP in 4.4 s (upload over HTTP to a local server running the worker code)

Tested on 24 Sep 2026 with the worker code of this site and GDAL 3.10.3 (conda-forge build on Windows). The worker image runs the Debian build of the same GDAL version; the live worker was not part of these tests.

Limits

  • Upload limit: 50 MB per file.
  • Shapefile limits apply: field names up to 10 characters, text up to 254 characters, one geometry type per file, no date-time type, DBF text in ISO-8859-1.
  • Each GDAL step may run for up to 240 seconds; a longer run is stopped with an error message.

Frequently Asked Questions

Why are my field names shortened?

The .dbf file of a Shapefile allows at most 10 characters per field name. GDAL shortens longer names and numbers clashes (bezeichnung_kurz becomes bezeichn_1). The report lists every renaming.

Why do I get several Shapefiles?

A Shapefile can hold only one geometry type. If your GeoJSON mixes points, lines and polygons, the worker writes one Shapefile per type (suffixes _points, _lines, _polygons) instead of dropping features.

How do I know whether anything was lost?

After each conversion the page shows a report with the number of features read and written per layer, skipped layers with the reason, all GDAL warnings and the ogr2ogr commands that ran. If the counts differ, the report says how many features are missing.

Related conversions