OSRM logo

OSRM

High-performance C++ routing engine for OpenStreetMap road networks

Repository activity
  • Stars7.8k
  • Forks3.9k
  • Open Issues373
project-osrm-osrm-backend health score - Linux Foundation Insights
License

BSD-2-Clause

Languages
  • C++
  • Gherkin
  • JavaScript
OSRM screenshot

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