finds.dev← search

// the find

Project-OSRM/osrm-backend

★ 7,793 · C++ · BSD-2-Clause · updated Jun 2026

Open Source Routing Machine - C++ backend

OSRM is a battle-tested C++ routing engine built on OpenStreetMap data, used in production by Mapbox and others for over a decade. It implements Contraction Hierarchies and Multi-Level Dijkstra algorithms, exposing route, table, match, trip (TSP), and tile endpoints via HTTP API, Node.js bindings, and now Python bindings. If you need fast shortest-path routing over OSM data and don't want to operate a commercial routing service, this is the de facto starting point.

The MLD pipeline supports live traffic updates without full re-preprocessing — you can push speed updates at runtime, which CH cannot do efficiently. The map-matching endpoint is genuinely useful and not an afterthought: it runs a Hidden Markov Model over noisy GPS traces, not just nearest-point snapping. The Cucumber-based integration test suite is exhaustive — hundreds of scenario files covering car, bicycle, foot, and guidance edge cases that most routing projects skip entirely. The move to vcpkg manifest mode finally makes the dependency story manageable; previously building from source was a multi-hour adventure in finding the right Boost version.

The preprocessing step is a hard operational wall: a country-sized OSM extract takes 30+ minutes and tens of GB of RAM, which means you can't do rolling updates or serve dynamic map edits — you're always serving a snapshot. The Lua profile system for customizing routing behavior is powerful but essentially undocumented beyond the bundled examples; if you need to model something unusual like conditional access restrictions or complex turn costs, you're reading other people's profiles and hoping. The Table service (distance matrix) has a documented O(n²) scaling problem for large coordinate sets, and the recommendation to use CH for large matrices means you lose live traffic updates for that use case. Python bindings are new and abi3-only on CPython 3.12+, so if you're on an older Python or need PyPy, you're building from source with the full C++ dependency chain.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →