open-geocode
Fast, lightweight, self-hosted geocoding engine in pure Rust.
Get started630 million addresses in a single file.
Forward, reverse and batch geocoding built from OpenStreetMap and OpenAddresses, served from your own hardware.
Self-hosted
og runs on your own hardware. No address leaves your network, and there is no per‑lookup fee.
Fast
A forward query takes 1.0 ms at the median on Ontario, against 11.5 ms for Pelias and 40.0 ms for Nominatim.
Lightweight
One binary and one file, with no database or search cluster to run. Ontario's Pack is 324 MB.
Benchmarks
Faster than Pelias and Nominatim, on the same hardware.
The same Ontario extract, the same 4 CPU / 10 GB cap and the same queries. og answers a forward query in 1.0 ms at the median, and was still holding at 1,000 requests a second when the load test stopped.
On MESSY STREETS, a benchmark of real addresses copied from the web, it leads every open-source geocoder at every resolution.
Read the full benchmarks →Forward geocoding throughput
Requests per second with p99 under 100 ms (higher is better)
| Geocoder | Bar | Req/s | Reverse |
|---|---|---|---|
| open-geocode | 1,000+ | 1,000+ | |
| Pelias | 100 | 500 | |
| Nominatim | 25 | 100 |
Ontario extract, 2.03 million addresses · 4 CPU / 10 GB each · loopback HTTP · og's load test stopped at 1,000 req/s, not its ceilingmethod
Forward service time
One client, no queue · median in milliseconds (lower is better)
| Geocoder | Bar | p50 ms | p99 ms |
|---|---|---|---|
| open-geocode | 1.0 | 2.0 | |
| Pelias | 11.5 | 67.6 | |
| Nominatim | 40.0 | 1,384.7 |
Ontario extract, 2.03 million addresses · 4 CPU / 10 GB each · loopback HTTPmethod
What it takes to deploy
Size on disk and memory while serving, in GiB (lower is better)
| Geocoder | Bar | Disk GiB | RAM GiB |
|---|---|---|---|
| open-geocode | 0.30 | ~1.2 | |
| Pelias | 5.88 | 4.60 | |
| Nominatim | 5.92 | 2.75 |
Ontario extract, 2.03 million addresses · 4 CPU / 10 GB each · loopback HTTP · og's RAM is its page-cache working set; the process itself uses ~0.03 GiBmethod
Street-level accuracy on MESSY STREETS
First answer within ±0.6 km (GH6), % of queries (higher is better)
| Geocoder | Bar | GH6 | GH4 |
|---|---|---|---|
| open-geocode | 78.0% | 93.9% | |
| Pelias | 67.8% | 85.9% | |
| Photon | 62.8% | 84.9% | |
| Nominatim | 55.6% | 66.6% |
Open-source geocoders · 959 web addresses · og on its OpenStreetMap and OpenAddresses Planet Packmethod
Quickstart
v0.1.0 on crates.io ↗From an extract to answers in one binary.
$ cargo install open-geocode --features tuiCompare
No API bills, no database, no cluster to run.
Commercial APIs are quick to start with, but bill every lookup and see every address.
Open-source geocoders keep the data in-house, but need a database or search cluster. og keeps it in-house and runs from one file.
| Feature | og | Commercial | Open source |
|---|---|---|---|
| Self-hostedAddresses stay on your network | Yes | No | Yes |
| No usage feesNo quotas or rate limits | Yes | No | Yes |
| InfrastructureWhat you run and maintain | YesOne binary, one file | YesNone, it's hosted | NoDatabase + search cluster |
| Batch geocodingCSV in, coordinates out | YesFree, unlimited | YesFree tier, then per address | NoNo batch endpoint |
| Open sourceMIT licensed, open data | Yes | No | Yes |
Open source: Nominatim, Pelias and Photon. Commercial: Google, HERE, Mapbox and others.
