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.

Run it yourself Server, Docker

What it takes, measured

SerbiaUnited States
File on disk32 MB1.45 GB
Listening after0.01 s0.3 s
Start-up tables ready after0.2 s3.3 s (file in the disk cache)
Resident memory, mostly the mapped file152 MB2.1 GB
Memory it cannot give back (physical footprint)137 MB830 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

SoftwareIts own documentation says
Nominatimfull 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
PhotonJava 21 or newer; planet: about 95 GB of disk, at least 64 GB of RAM recommended
PeliasElasticsearch, 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

terminalCLI
$ 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.