Shapefile vs GeoPackage — what breaks, and what to use instead

·By The OrbGIS team

The shapefile dates from the early 1990s and its limits quietly damage datasets every day. What actually breaks, what to use instead, and how to migrate without losing anything.

Every GIS team has the same folder somewhere on a shared drive: leveranser_2026/, full of zip files, each holding four to eight files with the same name and different extensions. Someone opens one, finds a column called BEF_TATH_2 and a text field truncated at 254 characters, and spends twenty minutes working out what the original dataset actually said.

That's the shapefile. It was designed by Esri for ArcView in the early 1990s, published as an open technical specification in 1998, and it has outlived nearly everything it was built alongside. It is still the default export button in most software, still what agencies ship, still what lands in your inbox. It is also, by a wide margin, the most common source of silent data loss in a GIS workflow.

The short answer: use GeoPackage for almost everything — it's an OGC standard, a single file, and it removes every limit listed below. Use FlatGeobuf when you need fast streaming reads of a large dataset, and GeoJSON only for small data crossing a web API. Keep shapefile for one thing: sending data to a recipient who has told you they can't read anything else.

Why the shapefile survives#

It's worth being fair to it. The shapefile won for good reasons: the spec is short and public, it's trivial to implement, and by the mid-2000s every piece of GIS software on earth could read one. Interoperability beat elegance, as it usually does.

The problem is that it encoded the constraints of 1993 into a file format — DBF attribute tables borrowed from dBASE III, 32-bit file offsets, one geometry type per file — and those constraints don't bend. Modern data walks straight into them.

The limits that actually bite#

LimitWhat it means in practice
2 GB per fileThe .shp and .dbf each cap at 2 GB. Large municipal building or property datasets hit this, and behavior past the limit is undefined — some tools truncate silently.
10-character field namespopulation_density becomes POPULATIO, or POPULAT_1 if it collides with a neighbour. Do a round trip through shapefile and your schema is renamed for good.
255 attribute fieldsA wide analysis table simply won't fit.
254-character text fieldsDescriptions, notes and URLs get cut off mid-word. No warning.
No real NULLThe DBF has no null concept. Empty numbers arrive as 0, which looks exactly like a measured zero — and quietly skews every average you calculate.
Dates without timeThe DBF date type has no time component. Timestamps are flattened to a day, or shoved into text.
One geometry type per fileA layer mixing polygons and multipolygons, or points and multipoints, gets split or coerced.
No curvesCircular arcs from CAD or a Geodatabase are linearized into short straight segments. Usually acceptable, occasionally not — utility networks and parcel boundaries care.
Encoding rouletteCharacter encoding lives in an optional .cpg sidecar that is often missing. That's why Malmö arrives as Malmö.
It's not one file.shp, .shx, .dbf, .prj, .cpg, sometimes .sbn/.sbx/.qix. Lose the .prj and the coordinate system is gone; lose the .dbf and so are the attributes.

None of these are exotic edge cases. The 10-character truncation and the missing-NULL problem hit ordinary datasets on an ordinary Tuesday, and both are the kind of damage you only notice three steps downstream.

Heads up

The dangerous failure mode isn't a crash. It's a conversion that succeeds, renames half your columns and turns missing values into zeros — and then gets published as an official figure.

What to use instead#

FormatBest forKey properties
GeoPackage (.gpkg)The default. Deliveries, archives, desktop work, anything you'd have zipped a shapefile for.OGC standard, SQLite in one file. Many layers per file, long UTF-8 field names, real NULLs, datetimes, all geometry types, spatial indexes, rasters too. Effectively no size limit.
FlatGeobuf (.fgb)Big vector datasets read fast, or served straight from cloud storage.Binary, streamable, spatially indexed; readers can fetch only the features in a bounding box without downloading the whole file.
GeoJSON (.geojson)Small datasets crossing a web API; anything a JavaScript developer touches.Text, universally supported, always WGS 84. Verbose — a poor fit past a few thousand features.
GeoParquetAnalytics: millions of rows going into a data warehouse or a Python pipeline.Columnar and compressed, built for querying rather than editing. Outside the classic GIS toolchain, but where the analytics world is heading.
ShapefileSending data to someone who has told you they can only read shapefile.Everything above.

For nine tasks out of ten in a Nordic public-sector workflow, the answer is GeoPackage. It's an OGC standard, QGIS and ArcGIS Pro both read and write it natively, GDAL has supported it for over a decade, and it is a single file you can email, hash and archive without wondering whether a sidecar went missing.

Isn't GeoPackage "just a QGIS thing"?#

No — that's the most common objection and it's a misreading of the history. GeoPackage is an Open Geospatial Consortium standard, adopted in 2014, and it's also a US National Geospatial-Intelligence Agency standard. QGIS made it the default early, which is why it looks QGIS-flavoured, but ArcGIS Pro, FME, GDAL/OGR, GeoServer, PostGIS tooling and every mainstream library read it.

Migrating without losing anything#

The migration itself is easy. Doing it honestly is the part people skip.

  1. Inventory before you convert. Note field names longer than ten characters, text fields near 254, and any column where a zero could plausibly mean "not measured". These are the places the shapefile already lied to you — the conversion inherits the damage, it doesn't cause it.
  2. Recover names from the source, not the shapefile. If the shapefile came out of a Geodatabase or a database table, get the original field names from there. Renaming POPULAT_1 back by hand is guesswork.
  3. Convert once, to GeoPackage, and keep it as the master. Generate GeoJSON or shapefile from it on demand instead of keeping four divergent copies.
  4. Check the geometry count, not just the file. Feature counts in and out should match exactly. If they don't, something was coerced or dropped.
  5. Read the conversion report. Any tool worth using tells you what it changed. If yours doesn't, that's not a clean conversion — that's an unreported one.

For the common Esri cases we built a free tool for step 3: the OrbGIS converter takes a zipped File Geodatabase, a zipped shapefile, Esri JSON, an ArcInfo grid or coverage, or an E00 export, shows you what's inside — layers, feature counts, fields, coordinate systems, domains, relationship classes — and converts to GeoPackage, GeoJSON, FlatGeobuf, CSV with WKT geometry, GeoTIFF or COG. No account, no email. Every result zip contains a report.json listing feature counts, field renames, linearized curves, coordinate systems and anything that couldn't be carried across. It runs on our own servers in Sweden, uploads are deleted as soon as the job finishes, and results are gone within the hour.

Tip

File Geodatabase is the format that traps people hardest, because it's proprietary and reading it usually assumes an Esri licence. It's worth converting on principle: a dataset you can only open with one vendor's software isn't archived, it's rented.

What this means for a web GIS#

There's a second-order reason this matters. Once data lives in a platform rather than a folder, the file format stops being a filing decision and becomes a rendering decision.

In OrbGIS, an upload is read with GDAL, stored in PostGIS, and served as vector tiles — so the format you upload determines what survives into the map, the popups, the filters and the exports. Long field names stay long. Empty stays empty instead of becoming zero. Timestamps keep their time. The coordinate system is read from the file and preserved rather than silently reprojected to Web Mercator: a SWEREF 99 TM dataset stays in SWEREF 99 TM, right through to the tiles. Upload a shapefile and none of that is recoverable — the information was destroyed before it reached us.

So the practical advice is short. Ask your data suppliers for GeoPackage. Convert what you receive as shapefile once, deliberately, with a report you can read. And stop making new ones.

Frequently asked questions#

Is the shapefile format deprecated?#

No — Esri still supports it and it isn't going away. But it is a 1990s format whose limits are structural rather than fixable, and both the OGC and most national mapping agencies now recommend modern alternatives for new deliveries.

Can I convert a shapefile to GeoPackage without losing data?#

The conversion itself is lossless — GeoPackage is strictly more capable. What can't be recovered is what the shapefile already lost: truncated field names, text cut at 254 characters, nulls turned into zeros. Convert from the original source where you still have it.

GeoPackage or FlatGeobuf?#

GeoPackage when you'll edit the data, store several layers together, or hand it to a colleague — it's the general-purpose choice. FlatGeobuf when you mainly read a large dataset fast, or serve it from cloud storage where clients fetch a bounding box rather than the whole file.

Why does my shapefile show Ã¥ instead of å?#

The character encoding is stored in an optional .cpg sidecar file that is frequently missing, so the reader guesses — usually wrong, for Nordic characters. GeoPackage is UTF-8 by definition, which removes the problem entirely.

What replaces File Geodatabase?#

GeoPackage, for essentially the same reasons, plus it's readable without a vendor licence. Some Geodatabase features have no direct equivalent — relationship classes and field domains in particular — so a conversion should tell you explicitly what was carried and what was only documented.

Do I need ArcGIS to convert Esri formats?#

No. GDAL/OGR reads File Geodatabase, shapefile, Esri JSON, ArcInfo coverages and E00 without any Esri software, and QGIS ships with it. If you'd rather not install anything, the free OrbGIS converter does the same work in a browser.

Getting started#

Working with Nordic geodata and tired of fighting the file formats? Try OrbGIS free — upload a GeoPackage and have a shareable web map in a few minutes — or get in touch if you'd like to talk through a migration.

← All articles

Get new articles by email

One email when we publish something new — nothing else.