Comparison9 min readMay 2, 2025

GIS File Format Comparison: The Complete 2025 Table

Eleven GIS formats, six axes of comparison, one table. The reference you can come back to next time someone asks 'which format should we use?'

How to read this table

Format choice is a function of who reads the file next. The columns below capture the constraints that actually matter when that handoff goes wrong: size ceilings, CRS handling, attribute fidelity, multi-layer capability, and what consumes the format natively.

The table

FormatMax file sizeCRS supportMulti-layerBrowser-nativeAttribute typesBest for
GeoJSONNone (practical: ~1 GB)WGS 84 only (RFC 7946)NoYes (every web library)JSON: string, number, bool, null, array, objectWeb maps, APIs, tooling interchange
Shapefile2 GB per file, 10-char field namesPer-file via .prjNo (one geometry type per bundle)NodBase: string, int, float, date (no time, no bool, no null)Legacy GIS exchange, government delivery
GeoPackage140 TB (SQLite cap)Per-layer, any EPSGYes (many layers per file)NoSQLite: full SQL types incl. blobs and nullsModern desktop GIS, multi-layer projects
KML / KMZNone (practical: tens of MB)WGS 84 onlyNo (folders simulate)Partial (Google Earth, some libs)Strings + ExtendedData typed valuesGoogle Earth, KMZ-distributed datasets
GMLNone (practical: gigabytes)Per-feature, any EPSGYes (named feature types)NoXSD-typed: full XML type systemGovernment / INSPIRE, schema-bound exchange
TopoJSONNone (practical: hundreds of MB)WGS 84 onlyMultiple objects per fileYes (with D3 / topojson-client)Limited to JSON-serialisableTopology-sharing web maps, choropleth data
WKTNoneNone (CRS implicit or external)No (one geometry per call)Yes (libraries available)None — geometry onlyDatabase queries, spatial reference exchange
DXFNone (practical: hundreds of MB)None (units only)Layers within drawingNoLimited (block attributes only)CAD interchange, surveyor/architect handoff
CSVNoneNone (lat/lon column convention)NoYes (every browser)Strings only (typed downstream)Tabular sensor data, point-cloud lists
PostGIS / SQLLimited by Postgres (32 TB tables)Per-column via SRIDMultiple tables/schemasNoFull Postgres type systemServer-side analytics, transactional GIS
FlatGeobufNone (practical: tens of GB)Per-file, any EPSGNoYes (streaming reader)Strict typed schemaStreaming web maps, cloud-optimised vector

Notes on the columns

Max file size. "None" means there is no inherent limit in the spec, but practical limits exist (memory at read time, browser fetch ceilings). Shapefile's 2 GB is a hard 32-bit offset cap. GeoPackage's 140 TB is the SQLite limit nobody will ever hit.

CRS support. GeoJSON and TopoJSON are pinned to WGS 84 by their respective RFCs — embedding any other CRS makes the file non-conformant. Shapefile carries CRS in a sibling .prj file (easy to lose). GeoPackage and GML carry CRS per-layer and per-feature respectively, the most robust choice.

Multi-layer. Whether one file can carry several feature collections. GeoPackage is the only widely-deployed format that does this elegantly. GML can do it via named feature types. Everything else needs a workaround (ZIP, GeoJSON FeatureCollection conventions).

Browser-native. Does a typical web mapping library read this directly? GeoJSON yes everywhere. TopoJSON yes with a small companion library. CSV yes with parsing. FlatGeobuf yes with a streaming reader. Shapefile and GeoPackage no — you need to convert first or run a WASM-backed shim.

Attribute types. The expressivity of the column type system. Shapefile is the constraint here: 10-char names, no nulls, no booleans, dates without time. GeoPackage (SQLite) is the most flexible.

The decision in five common scenarios

  1. You're publishing a public dataset. Ship GeoPackage as primary + GeoJSON as a web-friendly secondary. Skip Shapefile unless legally required.
  2. You're building a Leaflet/Mapbox map. GeoJSON if under 5 MB, TopoJSON if topology-shared, FlatGeobuf if streaming a large layer.
  3. A government agency requires "GIS deliverables." Read the procurement spec verbatim. If it says Shapefile, ship Shapefile. If it just says "GIS-readable," ship GeoPackage.
  4. You're handing data to a CAD user. DXF. Coordinate units only — agree on CRS in the cover email.
  5. You're storing data for an application. PostGIS. Everything else is a file format.

What's not in the table

  • Raster formats (GeoTIFF, COG, NetCDF, HDF5). Different beast — different table.
  • Point clouds (LAS, LAZ, COPC). Another different beast.
  • Tile formats (MBTiles, PMTiles, MapTiles). Distribution formats, not authoring.

For most working GIS at the vector layer, the 11 above cover every conversation.

Related Converters

Format References