High-performance C++ routing engine for OpenStreetMap road networks
BSD-2-Clause
- C++
- Gherkin
- JavaScript

About OSRM
OSRM is a high-performance routing engine written in C++ for OpenStreetMap road networks. It solves route planning, map matching, nearest-road lookup, travel-time matrices, and trip ordering for applications that need directions or road-network analysis.
The engine exposes its services through an HTTP API, a C++ library interface, and a Node.js wrapper, covering Nearest, Route, Table, Match, Trip, and Tile. Two preprocessing pipelines are available, Contraction Hierarchies and Multi-Level Dijkstra, and the Tile service emits Mapbox Vector Tiles with internal routing metadata.
Ready-to-use Docker images based on Debian Linux are the quickest way to stand up a server, and the backend can also be built from source with vcpkg, CMake, Ninja, and a C++20 compiler. The project is built and maintained through community effort.
Key features
- Nearest snaps coordinates to the street network
- Route finds the fastest route between coordinates
- Table computes distances or durations between many coordinates
- Match aligns noisy GPS traces to the road network
- Trip solves traveling salesman routing with a greedy heuristic
Details
- First released
- 2011
- Latest release
- v26.6.5 · Jun 2026
- Platforms
- Web · Docker · CLI
- Language
- C++ · Node.js bindings
- Routing modes
- CH · MLD
- Origins
- OpenStreetMap data
