C++ Gherkin JavaScript Lua CMake Shell Other
Latest commit 18a50d3 Feb 24, 2017 @MoKob MoKob committed with TheMarex remove suppressed new names from new tests
Failed to load latest commit information.
.github Revert "Add simple code review checklist to PR template." Dec 7, 2016
cmake Bundle mason.cmake and mason.sh Feb 16, 2017
docker Don't mark all lanes as designated when there are blank lane specifie… Dec 15, 2016
docs Update http.md Feb 15, 2017
example Don't warn in example on 32bit only print message Nov 19, 2016
features remove suppressed new names from new tests Feb 25, 2017
fuzz Enable data flow guided fuzzing using traces Aug 19, 2016
include refactor of post-processing Feb 25, 2017
profiles Restored pre-fetching bridge tags Feb 23, 2017
scripts Updates sol2 to v2.15.8 in dependency script Feb 20, 2017
src refactor of post-processing Feb 25, 2017
test Make absolute fixtures path Dec 4, 2016
third_party Updates sol2 to v2.15.8, resolves #3733 Feb 20, 2017
unit_tests Add packed storage of partition information Feb 24, 2017
.babelrc Restructure API docs so that they can be formatted with Docbox. (#3355) Dec 1, 2016
.clang-format expose lanes as enums, adjusted for comments Jun 27, 2016
.clang-tidy Integration scripts for Clang's Modernize and Tidy tool. Sep 22, 2015
.cncc.style Add simple cncc file Jan 5, 2016
.eslintrc Rewrite cucumber test suite in JS Mar 24, 2016
.gitignore clean up lua debugging Jan 25, 2017
.gitmodules Removing Docs submodule Dec 26, 2012
.travis.yml Bundle mason.cmake and mason.sh Feb 16, 2017
CHANGELOG.md shared monitor implementation with a conditional variable Feb 24, 2017
CMakeLists.txt Updates TBB to latest stable version for 5.6 release Feb 20, 2017
CONTRIBUTING.md [skip ci] Added info to CONTRIBUTING.md about automatic format checks Jan 4, 2017
Doxyfile.in Exclude new node_modules folder that might be around if test cases ha… Apr 5, 2016
LICENCE.TXT We are at 2016 for the license Jan 4, 2016
README.md Reworks the Readme Landing Page Jan 3, 2017
appveyor-build.bat Enable npm and library tests on windows Jan 3, 2017
appveyor.yml Enable npm and library tests on windows Jan 3, 2017
build-local.bat Updated cmake version to 3.7.0-rc2 Oct 28, 2016
codecov.yml Fix codecov.yml May 12, 2016
cucumber.js Close GH-2795: Rewrite cucumber test caching (and support logic). Fixes Sep 19, 2016
package.json add unit test for annotations=true returning all annotations Feb 13, 2017
taginfo.json Supports destination:street, resolves #3541 Jan 13, 2017


Open Source Routing Machine

Linux / macOS Windows Code Coverage
Travis AppVeyor Codecov

High performance routing engine written in C++14 designed to run on OpenStreetMap data.

The following services are available via HTTP API, C++ library interface and NodeJs wrapper:

  • Nearest - Snaps coordinates to the street network and returns the nearest matches
  • Route - Finds the fastest route between coordinates
  • Table - Computes the duration of the fastest route between all pairs of supplied coordinates
  • Match - Snaps noisy GPS traces to the road network in the most plausible way
  • Trip - Solves the Traveling Salesman Problem using a greedy heuristic
  • Tile - Generates Mapbox Vector Tiles with internal routing metadata

To quickly try OSRM use our demo server which comes with both the backend and a frontend on top.

Related Project-OSRM repositories:

  • node-osrm - Production-ready NodeJs bindings for the routing engine
  • osrm-frontend - User-facing frontend with map. The demo server runs this on top of the backend
  • osrm-text-instructions - Text instructions from OSRM route response


  • IRC: irc.oftc.net, channel: #osrm (Webchat)
  • Mailinglist: https://lists.openstreetmap.org/listinfo/osrm-talk

Quick Start

The following targets Ubuntu 16.04. For instructions how to build on different distributions, macOS or Windows see our Wiki.

Install dependencies

sudo apt install build-essential git cmake pkg-config \
libbz2-dev libstxxl-dev libstxxl1v5 libxml2-dev \
libzip-dev libboost-all-dev lua5.2 liblua5.2-dev libtbb-dev

Compile and install OSRM binaries:

mkdir -p build
cd build
cmake ..
cmake --build .
sudo cmake --build . --target install

Grab a .osm.pbf extract from Geofabrik or Mapzen's Metro Extracts

wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

Pre-process the extract and start the HTTP server

osrm-extract berlin-latest.osm.pbf -p profiles/car.lua
osrm-contract berlin-latest.osrm
osrm-routed berlin-latest.osrm

Running Queries



Full documentation

Running a request against the Demo Server

Read the API usage policy. Simple query with instructions and alternatives on Berlin:

curl https://router.project-osrm.org/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true&alternatives=true

References in publications

When using the code in a (scientific) publication, please cite

 author = {Luxen, Dennis and Vetter, Christian},
 title = {Real-time routing with OpenStreetMap data},
 booktitle = {Proceedings of the 19th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems},
 series = {GIS '11},
 year = {2011},
 isbn = {978-1-4503-1031-4},
 location = {Chicago, Illinois},
 pages = {513--516},
 numpages = {4},
 url = {http://doi.acm.org/10.1145/2093973.2094062},
 doi = {10.1145/2093973.2094062},
 acmid = {2094062},
 publisher = {ACM},
 address = {New York, NY, USA},