Open Source Routing Machine - C++ backend
C++ Cucumber JavaScript CMake Lua Shell Other
Latest commit 19eec48 Oct 24, 2016 @springmeyer springmeyer committed on GitHub Merge pull request #3163 from Project-OSRM/pc-fixes
Add -l to rt and gcov
Failed to load latest commit information.
.github Fixes Grammar in Github Pull Request Template Oct 21, 2016
cmake Changes Lua detection to be less strict Oct 12, 2016
docker [skip ci] Update docker files to gcc 5 Jul 21, 2016
docs Documents InvalidValue response code, resolves #3150 Oct 24, 2016
example Makes the OSRM interface threadsafe. Oct 4, 2016
features Don't fail on incorrect lane tags '1; 2' Oct 24, 2016
fuzz Enable data flow guided fuzzing using traces Aug 19, 2016
include Rename increasingly inaccuratly named distance member of QueryEdge to… Oct 21, 2016
profiles Don't fail on incorrect lane tags '1; 2' Oct 24, 2016
scripts Makes Scripts Fail Fast and Loud Oct 21, 2016
src add comment on find() [skip ci] Oct 21, 2016
test Add benchmark target to Makefile and save timings Apr 5, 2016
third_party Merge commit '879f7eb04200d7d2c28af565229bf6e3d54274fd' into retry/li… Oct 3, 2016
unit_tests cmake fixes: Oct 20, 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 Add simple cncc file Jan 5, 2016
.eslintrc Rewrite cucumber test suite in JS Mar 24, 2016
.gitignore Implement Turn Lane Api Jun 27, 2016
.gitmodules Removing Docs submodule Dec 26, 2012
.travis.yml Limits the object cache size to 256M Oct 20, 2016 use-lane can occur in roundabouts as well Oct 20, 2016
CMakeLists.txt add -l to rt and gcov Oct 25, 2016 [skip ci] Add docs for contributing Jul 19, 2016 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 Talk to us! Jul 28, 2016
appveyor-build.bat [skip travis] make AppVeyor publish binaries again Apr 29, 2016
appveyor.yml Remove develop branch from appveyor Apr 23, 2016
build-local.bat make AppVeyor work again Mar 31, 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 Close GH-2795: Rewrite cucumber test caching (and support logic). Fixes Sep 19, 2016
profile.lua readding profile.lua Jul 2, 2013
taginfo.json Turn Angles in OSRM were computed using a lookahead of 10 meters. Oct 20, 2016


The Open Source Routing Machine is a high performance routing engine written in C++11 designed to run on OpenStreetMap data.

Current build status

build config status
Linux Build Status
Windows Build status
Coverage codecov


  • IRC: server, channel: #osrm (see:, and for a webchat:
  • Mailinglist:


For instructions on how to build and run OSRM, please consult the Wiki.

To quickly try OSRM use our free and daily updated online service


Full documentation

Quick start

Building OSRM assuming all dependencies are installed:

mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
sudo cmake --build . --target install

Loading preparing a dataset and starting the server:

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

Running a query on your local server:


Running a request against the Demo Server

First read the API usage policy.

Then run simple query with instructions and alternatives on Berlin:


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 = {},
 doi = {10.1145/2093973.2094062},
 acmid = {2094062},
 publisher = {ACM},
 address = {New York, NY, USA},