Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Project OSRM: C++ backend
C++ Cucumber Ruby CMake Lua Batchfile Python
Failed to load latest commit information.
algorithms updated to 1E6 based polyline format
benchmarks change copyright line from personal names to project
cmake fix build issue where cmake does not pick up generated output of a cu…
config new cucumber profile for Jenkins that doesn't fail because of an old …
contractor Remove unused header
data_structures At least check 4*LEAF_SIZE edges before returning none.
descriptors Don't remove small segments at start/begin if they are vias
extractor Fix endless loop
features Only penaltize bidirectional ways if they have 1 lane
include/osrm polyline string as parameter added
library renamed: plugins/map_matching.hpp -> plugins/match.hpp to avoid confu…
plugins Update classifier parameters
profiles Only penaltize bidirectional ways if they have 1 lane
routing_algorithms Fix inversion of sign
server Merge pull request #1508 from agruss/geometry_string
test use boost program_options in osrm-prepare/routed
third_party pull in latest osmcode/libosmium changes
tools Move renumbering and edge deduplication in extractor
unit_tests updated to 1E6 based polyline format
util Check if FingerPrint is trivial. TODO: Add this for all other data th…
.clang-format don't binpack parameters on 100 column width
.gitignore make AppVeyor green again
.gitmodules Removing Docs submodule
.travis.yml Also run the algorithm tests on travis
CMakeLists.txt First step into overhauling the edge storage
Gemfile change copyright line from personal names to project
Gemfile.lock upgrade to cucumber 2.0
LICENCE.TXT change copyright line from personal names to project Add link to documentation in the wiki
Rakefile add raketask for clearing test cache files
appveyor-build.bat appveyor.yml update url to binary deps
appveyor.yml make AppVeyor green again
build-local.bat make AppVeyor green again
datastore.cpp Fix magic number check for fingerprint
extract.cpp Move option parsing to own class
prepare.cpp Move option parsing to own class
profile.lua readding profile.lua
routed.cpp Ensure routed is backwards compatible
taginfo.json Add object_types to some tags.
typedefs.h fix build on windows by linking against the right libs


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 branch status
Linux  master Build Status
Linux  develop Build Status
Windows master/develop Build status
LUAbind fork  master Build Status


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


See the Wiki's server API documentation as well as the library API documentation

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},
Something went wrong with that request. Please try again.