osrm-backend
SHA-256A C++ routing engine with HTTP API, C++ library, and Node.js bindings, offering route, nearest, table, match, trip, and tile services on OpenStreetMap data.
Smart Download
Download Download Version
v26.5.0 · 17.4 MB
OSRM is a high-performance C++ routing engine for OpenStreetMap that can be self-hosted and run offline.
Core Features
- Six core services: Nearest, Route, Table, Match, Trip, Tile
- Two preprocessing pipelines: Contraction Hierarchies (CH) and Multi-Level Dijkstra (MLD)
- Docker images for quick deployment
- High-performance C++ implementation suitable for large-scale routing
- HTTP API, C++ library, and Node.js bindings
What It Can't Do
- •Caveats: 1. Large region preprocessing can take hours and require 16GB+ RAM. 2. The public demo server has rate limits. 3. Default profile is for car; modify Lua config for bike/walk. 4. Ensure proper volume mounting permissions in Docker.
Use Cases
- Self-hosted navigation service with no external API dependency
- Logistics route optimization and distance matrix calculation
- Academic research on large-scale traffic simulation
OSRM (Open Source Routing Machine) Backend is a high-performance, open-source routing engine written in C++ that uses OpenStreetMap data to compute driving, cycling, and walking routes. It offers a complete suite of services: Nearest (snap coordinates to roads), Route (fastest path), Table (distance/duration matrix), Match (GPS trace matching), Trip (Traveling Salesman Problem solver), and Tile (vector tiles with routing metadata). The engine supports two preprocessing algorithms: Contraction Hierarchies (CH) and Multi-Level Dijkstra (MLD), with MLD recommended for most use cases. It can be deployed via Docker with a single command and provides a demo server for quick testing. OSRM is self-hosted, fully offline-capable, and offers competitive performance compared to cloud-based APIs like Google Maps or GraphHopper, making it ideal for privacy-sensitive applications or high-volume routing needs.
Tags
Getting Started
Install the software
Double-click the downloaded installer and follow the prompts
Step 1: Install Docker and download an OpenStreetMap extract (e.g., from Geofabrik)
Step 2: Preprocess the data: run osrm-extract, osrm-partition, osrm-customize for MLD (or osrm-extract + osrm-contract for CH) using Docker
Step 3: Start routing server: docker run with osrm-routed on port 5000
- Step 1: Install Docker and download an OpenStreetMap extract (e.g., from Geofabrik)
- Step 2: Preprocess the data: run osrm-extract, osrm-partition, osrm-customize for MLD (or osrm-extract + osrm-contract for CH) using Docker
- Step 3: Start routing server: docker run with osrm-routed on port 5000
SHA-256 checksum verified
Checksum extracted from GitHub official Release page
SHA256 Checksum
7829d4a35e7de5cde63a04ccca5b9e9a04f1199552231da9872214a3ab44d5a1This checksum is extracted from the GitHub Release page. Verify file integrity after download.
All SHA-256 checksums on this platform are extracted from the project's official GitHub Release page, without any modification. You can independently verify them on the GitHub Releases page.
Open Source Transparency
View GitHub SourceUninstall Info
Remove the Docker image and local data: docker rmi ghcr.io/project-osrm/osrm-backend, then delete the .osm.pbf and .osrm files.
No Extra Dependencies
Ready to use after download. No additional runtime required.
Having issues? Check the FAQ below
5 FAQs
Similar Projects
code-server
Run VS Code in your browser, on any device with a consistent development environment.
traefik
Traefik is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy.
pocketbase
PocketBase is an open source Go backend that includes embedded SQLite with realtime subscriptions, built-in file & user management, admin dashboard UI, and simple REST API. Can be used as standalone app or Go framework.