Live Online Convertertopojson → geojson

TopoJSON to GeoJSON Converter

Converts a TopoJSON file to GeoJSON with GDAL's ogr2ogr, one GeoJSON per TopoJSON object.

Upload a .topojson or .json file. Every object in the topology becomes a layer. One layer gives one .geojson; several give a ZIP with one .geojson per object. The GeoJSON has no crs member and is therefore read as WGS84.

Drag a file here to convert, or select file

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

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

What the converter does

  • Each TopoJSON object becomes a layer; the shared arcs are resolved into complete polygons and lines. Quantized TopoJSON (with transform) is decoded.
  • TopoJSON carries no coordinate system and GDAL assigns none.
  • One object gives one .geojson; several give a ZIP with one .geojson per object.
  • 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 GeoJSON converted.geojson input.topojson counties

counties stands for the only object of the topology. With several objects the worker runs one command per object, e.g. ogr2ogr -f GeoJSON layers/states.geojson input.topojson states.

Tested with

Test fileResult
TopoJSON with 2 objects: flaechen (2 polygons sharing one arc) and punkte (1 point)ZIP with flaechen.geojson (2 polygons) and punkte.geojson (1); 3 of 3
Quantized TopoJSON (scale 0.001, translate 7/50) with the point 500/500Point at 7.5, 50.5

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.
  • Each GDAL step may run for up to 240 seconds; a longer run is stopped with an error message.

Frequently Asked Questions

Can I convert GeoJSON back to TopoJSON here?

No. GDAL can read TopoJSON but not write it, so the GDAL worker cannot offer that direction.

What happens to my file?

Your browser uploads it directly to the GDAL worker on Fly.io (region Frankfurt). The worker converts it in a temporary folder and deletes the folder after sending the result, or immediately if the conversion fails. Files are not stored permanently.

Related conversions