Self-host a geocoder without 128 GB of RAM
One program and one file per country (France also has a separate POI file). No database, no Java, no Elasticsearch, no import step: it starts in a fraction of a second and maps the file.
What it takes, measured
| Serbia | United States | |
|---|---|---|
| File on disk | 32 MB | 1.45 GB |
| Listening after | 0.01 s | 0.3 s |
| Start-up tables ready after | 0.2 s | 3.3 s (file in the disk cache) |
| Resident memory, mostly the mapped file | 152 MB | 2.1 GB |
| Memory it cannot give back (physical footprint) | 137 MB | 830 MB |
gridpin serve, built from the development line on November 7, 2026; Apple M1 Pro, 16 GB; median of three starts. A cold start of the United States file takes up to about 20 seconds.
What the usual self-hosted geocoders ask for
| Software | Its own documentation says |
|---|---|
| Nominatim | full planet: 128 GB of RAM or more strongly recommended, at least 1 TB of disk; 2 GB of RAM is the minimum for any install |
| Photon | Java 21 or newer; planet: about 95 GB of disk, at least 64 GB of RAM recommended |
| Pelias | Elasticsearch, SQLite and libpostal, which needs about 4 GB of disk for its data |
Read November 7, 2026. This is not like for like: those figures are for a whole planet with places and landmarks, and all three can import one country for much less. GridPin serves one country per process, addresses only, in the countries of the release. See the comparison with Nominatim and measured quality.
Start
$ gridpin-fetch rs # Serbia, 32 MB, checked; prints the path $ gridpin serve "$(gridpin-fetch rs)" --port 8080
The paths and fields: gridpin serve; in a container: Docker.