How to open a Shapefile on a Mac

Double-clicking a .shp on a Mac does nothing useful, and the most common reason one will not open anywhere is not the .shp itself. It is the files that should be next to it.

A Shapefile is several files

The name is singular, the format is not. A Shapefile called roads is at least three files with the same name:

Usually there is a roads.prj with the coordinate system and sometimes a roads.cpg with the text encoding. If someone sent you only the .shp, or the files were renamed separately, no tool can read the attributes. Ask for the whole set, usually as a zip.

Ways to open one

DuckDB's command line (free)

DuckDB reads every format on this page through its spatial extension, which the command line downloads the first time you ask for it:

brew install duckdb
duckdb -c "INSTALL spatial; LOAD spatial; SELECT * FROM ST_Read('roads.shp') LIMIT 20"

GDAL's ogrinfo (free)

GDAL is the library almost every GIS tool reads files through, and its command-line tools describe a file without opening anything else:

brew install gdal
ogrinfo -so -al roads.shp

That prints the layer, the coordinate system, the extent and the field types. It is a summary, not a table you can scroll.

QGIS (free)

The full open-source desktop GIS. If you need to see the shapes on a map, style them or edit them, this is the right tool, and it is free. It is a lot of application to start if all you wanted was to read the attribute table.

Python

geopandas.read_file('roads.shp') gives you a GeoDataFrame, and is the right answer when the next step is code. It loads the whole file into memory.

Doing it in Datapuddle

Datapuddle opens the .shp and reads its companion files through DuckDB's spatial extension.

  1. Double-click the file in Finder, drag it onto the app icon, or use File ▸ Open….
  2. The first time you open a Shapefile from a folder, Datapuddle asks for access to that folder, so it can read the .shx and .dbf beside the file. Click Allow once, and that folder is remembered.
  3. The editor is filled in with SELECT * FROM ST_Read('…') for that file, so the next query is an edit, not a blank page.

The folder prompt is the Mac's own file panel, already pointing at the right place. It is needed because Mac App Store apps can only read the files you choose, and opening roads.shp chooses only that one file. Access is read-only.

Each shape is a row, each .dbf field a column, and the geometry shows as readable text. To count roads by type:

SELECT type, count(*) AS roads
FROM ST_Read('roads.shp')
GROUP BY type
ORDER BY roads DESC

Which to use

Download on the Mac App Store 7-day trial, then $39.99 once · Apple silicon, macOS 26 or later

Datapuddle on the Mac App Store — 7 day trial, then $39.99 once. Apple silicon, macOS 26 or later. · Docs Guides · Home