Live Online ConverterChannel: topojsongeojson

TopoJSON to GeoJSON Converter

Reconstruct standard spatial vectors from compact TopoJSON files.

Decompress modern TopoJSON files into standard, fully-expanded GeoJSON format. This tool processes shared lines and boundaries to reconstruct separate, individual polygon shapes.

Drag file here to convert, or select file

Supported file extension: .geojson, .json • Max 50MB

Channel: Direct Stream ModeGDAL Driver Operational

Specification Rules

  • Export web maps and regional boundary files into standard GIS tools
  • Convert localized boundary datasets for visual rendering
  • Import lightweight map models into desktop analysis systems
  • Expanded output files will contain duplicate coordinate lines
  • Conversion increases overall file sizes when working with many shared lines
  • Requires explicit file validation to ensure accurate decoding

GDAL Direct Equivalent Terminal Command

sh — gdalready
$ogr2ogr -f GeoJSON output.geojson input.topojson

When to use this conversion

Convert when a TopoJSON file (often a D3.js example or a Felt export) needs to feed a Leaflet, Mapbox, or MapLibre map that doesn't consume TopoJSON natively. The conversion reconstructs full GeoJSON geometries by following arc references.

Technical Details

GDAL (or the topojson-client library) reads the TopoJSON Topology object, dereferences arc indices to coordinate sequences, applies the transform (scale + translate quantisation reversal) if present, and emits a standard GeoJSON FeatureCollection. The result is geometrically equivalent to the source but larger because shared boundaries are no longer shared.
Output file size

GeoJSON is typically 2–6× the size of the source TopoJSON, depending on how many shared boundaries the source dataset had. Adjacent polygon datasets (country borders) see the largest blow-up.

Common Errors & Fixes

  • Quantisation loss visible at high zoom: precision was set too low in the source. Fix: regenerate the TopoJSON with a higher quantisation factor (1e6 or more).
  • Object name not picked up: TopoJSON's objects map has multiple entries; the wrong one was converted. Fix: name the layer explicitly when calling topojson.feature().
  • Properties missing: the source TopoJSON didn't include feature properties. Fix: check the source build pipeline.
  • Output huge: the savings disappear after decompression — this is expected. Fix: if you wanted small output, keep the TopoJSON and decode in the browser at render time.

Alternative Tools

  • topojson-client (npm): topojson.feature(topology, topology.objects.<name>)
  • mapshaper.org: drag the .topojson in, export as GeoJSON
  • QGIS: open .topojson, export as GeoJSON
  • ogr2ogr CLI: ogr2ogr -f GeoJSON output.geojson input.topojson

Frequently Asked Questions

What is the difference between TopoJSON and GeoJSON?

TopoJSON encodes sharing boundaries, eliminating redundant coordinates. GeoJSON maps shapes independently, causing redundant lines in adjacent shapes.

How are properties handled during conversion?

Attributes and non-spatial variables remain linked to the respective features in the output file.

Are coordinates reprojected during this translation?

By default, coordinate systems are kept as-is, but you can apply standard projection properties.

Related Transformations Map