The shapefile is the most widely used format for storing and exchanging GIS vector data. Developed by Esri in the early 1990s, it remains the dominant format for government and commercial GIS data despite its age.

What a Shapefile Actually Is

Despite the name, a shapefile is not a single file. It is a collection of files that must be kept together. The minimum required files are: .shp (the geometry), .dbf (the attribute data), and .shx (an index linking geometry to attributes). Additional files may include .prj (coordinate reference system) and .cpg (character encoding). If you receive a shapefile and the .prj file is missing, you will not know what coordinate system the data uses — a common source of errors.

Shapefile Limitations

  • Column names are limited to 10 characters
  • File size is limited to 2 GB
  • Only one geometry type per file (points, lines, or polygons — not mixed)
  • No support for null values in some implementations
  • No topology support
  • Date fields store only dates, not times

The 10-character column name limit is a frequent frustration. A field that should be named "population_2021_census" becomes "pop21cens" — cryptic without a data dictionary to explain it.

Modern Alternatives

GeoPackage (.gpkg) is a modern open standard that overcomes most shapefile limitations — it supports multiple geometry types, long field names, and large files. GeoJSON is better for web use and human-readable. FlatGeobuf is optimized for streaming large datasets. Despite these alternatives, shapefiles remain common in government data portals because of their long history and universal tool support.

Working with Shapefiles

Shapefiles can be opened in QGIS, ArcGIS, and many other GIS tools. They can be converted to GeoJSON or other formats using GDAL/OGR, which is free and open source. When sharing shapefiles, always zip all component files together — a shapefile without its .dbf has no attribute data and is nearly useless.

Key Takeaways

  • A shapefile is multiple files — always keep them together
  • The .prj file defines the coordinate system — never discard it
  • 10-character column name limit requires a data dictionary
  • GeoPackage and GeoJSON are modern alternatives worth knowing
Next Step

See GIS in action in Real World GIS Applications.

← GeoJSON Real World GIS Applications →