Convert a file
Home › Guides › GIS file format sizes compared: 1 dataset, 8 formats

GIS file format sizes compared: 1 dataset, 8 formats

The same 10,000 points took 5.18 MB in one format and 0.33 MB in another. I measured GIS file format sizes with a controlled test. One identical dataset went through this site's engine into seven other formats, and every output was measured, re-opened and read back. Size was not the only difference.

Key facts

  • One identical 10,000-point dataset ranged from 5.18 MB (KML) to 0.33 MB (KMZ), a 16-to-1 spread.
  • A shapefile's .dbf was 89% of its 3.18 MB total; GPX kept only 1 of 6 attribute fields.
  • Seven decimal places of coordinate precision survived every format tested.

How the test was run

The data

The dataset is 10,000 survey-style points spread across a realistic region, each with seven-decimal coordinates and six attribute columns: id, name, category, elevation_m, recorded_at and surveyor_note. The notes deliberately include accented text, so encoding survival gets tested too.

The engine

Every conversion ran through GDAL 3.8.4 compiled to WebAssembly, which is exactly the engine behind the converters on this site. The flags match what the site passes, so these numbers describe what you actually download here.

The check

Each output was re-opened with GDAL and read back, so the table reports not just size but what survived the trip: fields, field names, dates and coordinates. The dataset comes from a fixed seed, which means anyone can reproduce the run byte for byte.

GIS file format sizes compared: bar chart of the same 10,000 points as KML, Shapefile, GeoJSON, GeoPackage, CSV, GPX, Excel and KMZ
GIS file format sizes for one identical 10,000-point dataset. KML is 16 times larger than KMZ, its own zipped twin.

The results: one dataset, eight sizes

FormatSizeVs sourceAttributes keptWorth knowing
KML5,181,390 B1.9xAll 6, in ExtendedDataLargest by far; simple readers may surface only the name
Shapefile (5 files)3,180,576 B1.2xAll 6, names truncatedThe .dbf alone is 89% of the total
GeoJSON (source)2,690,891 B1.0xAll 6The baseline the others were made from
GeoPackage1,994,752 B0.74x5 fields + id becomes the FIDKeeps full date-and-time values
CSV1,198,910 B0.45xAll 6, plus X and Y columnsDates are reformatted
GPX728,185 B0.27xOnly the nameThe GPX schema rejected the other 5 fields
Excel (.xlsx)583,041 B0.22xAll 6, plus X and Y columnsNumbers arrive typed as numbers
KMZ328,535 B0.12xSame as KMLJust the KML, zipped; smallest of all

The spread is enormous: the same points, the same attributes and the same precision take 5.2 MB as KML but 0.3 MB as KMZ, which means the container matters more than the content.

Why the sizes differ

KML repeats itself

KML is XML, and every one of the 10,000 placemarks carries its own opening tags, closing tags and field names, repetition that is exactly what compression loves. Zip the KML into a KMZ and it shrinks by 94%, which is why converting KML to KMZ before emailing is almost always worth it.

A shapefile's bulk is its table

The shapefile surprised me from the other direction: its geometry file (.shp) is a lean 280,100 bytes, while the attribute table, the .dbf, runs to 2,820,226 bytes, or 89% of the whole set. The dBASE format pads every text field to a fixed width with spaces, so short values still occupy their full column width, and wide text columns inflate a shapefile fast.

Containers and casualties

GeoPackage stores the same data in a binary SQLite database, which is why it lands 26% under the GeoJSON source while keeping everything queryable; GeoPackage vs shapefile compares the two container heavyweights in depth. Excel looks small for a similar reason, because a modern .xlsx is itself a zip archive of XML sheets. GPX looks small for a worse one: it kept one field out of six, so its 0.7 MB is not a fair fight.

What each format quietly changed

Sizes are visible at a glance; the content changes are sneakier. These are the ones the read-back caught:

  • Shapefile truncated three field names: the .dbf caps names at 10 characters, so elevation_m became elevation_, recorded_at became recorded_a, and surveyor_note became surveyor_n. The values survived even though the headers did not.
  • Shapefile also dropped the time of day: its date type stores 2026-06-26 but not 08:02, while GeoPackage kept the full timestamp.
  • GPX kept only the name: the GPX schema has fixed waypoint fields, so id, category, elevation_m, recorded_at and surveyor_note were all rejected on write.
  • GeoPackage absorbed the id column: it became the layer's feature ID rather than a regular attribute, which is correct behavior but can surprise you on export.
  • KML stored everything, yet many tools show little: all six attributes were written as structured ExtendedData, which Google Earth displays and simple KML parsers often skip in favor of the name alone.
  • CSV and Excel kept every field and gained X and Y coordinate columns at the end of each row, so the location survives in a plain table. Accented text (the é and the ± in the notes) came through intact in every format.

Coordinate precision: nothing was lost

Precision worried me most, and it turned out to be a non-issue. The first point went in at longitude 62.8441543 and latitude 32.1100421, and every geographic format returned exactly those digits: KML, the shapefile, GeoPackage and GPX alike, with the CSV and Excel tables carrying them as text columns unchanged. Seven decimal places is roughly a centimeter on the ground, and it survived every conversion. If your data lands in the wrong place after a conversion, precision is not the culprit; the coordinate system usually is.

Download the test data and try it yourself

Here is a 100-point cut of the exact benchmark dataset, in every format from the table. Drop one into any converter on this site and compare what comes out, or open the files side by side in QGIS:

GeoJSON CSV KML GPX Excel GeoPackage Shapefile (zip)

Checking GIS file format sizes on your own data takes about a minute per format. Three things to remember: zip your KML, expect the .dbf to dominate a shapefile, and never send attributes on a round trip through GPX.

“Nobody in this niche publishes the actual numbers, so I measured them: the same points through eight formats. The container matters far more than the content.”
Ghulam Hasnain, PhD researcher in Space Science & Technology and the maker of GISConverters

Frequently asked questions

Which format keeps every attribute?

GeoPackage, GeoJSON, CSV and Excel kept every field and full field names in this test. Shapefile keeps the values but truncates names to 10 characters and drops time of day from timestamps, while GPX keeps little beyond the waypoint name.

Does converting lose coordinate precision?

Not in this test. All seven decimal places, roughly centimeter level, came back identical from every format. If data lands in the wrong place after a conversion, the coordinate system is the usual cause, not precision.

Can I repeat the test?

Yes. The dataset comes from a fixed seed, and a 100-point cut is linked above in every format. Download the sample files and drop them into any converter on this site.

Which GIS file format is smallest for the same data?

In this 10,000-point test, KMZ was smallest at 328,535 bytes, followed by Excel at 583,041 bytes. GPX was also small, but only because it dropped five of the six attribute fields on write.

Why is my shapefile so much bigger than the same data as GeoJSON?

The attribute table is the usual reason. The .dbf format pads every text field to a fixed width, and in this test the .dbf was 89% of the shapefile's 3.18 MB total. Wide text columns inflate it quickly.

About the author

Ghulam Hasnain is a PhD researcher in space science and technology who works with GIS and remote-sensing data every day, wrangling shapefiles, KML, GPX and CAD drawings across QGIS, ArcGIS and Google Earth. He built GISConverters after one too many format conversions that required uploading sensitive survey data to a stranger's server.