Fact-checked by Grok 2 weeks ago

Open Source Routing Machine

The Open Source Routing Machine (OSRM) is an open-source, high-performance routing engine written in modern C++ that computes shortest paths in road networks using (OSM) data. Designed for efficiency, it processes continental-scale datasets in milliseconds and supports customizable profiles for different transportation modes, including car, bicycle, and foot. OSRM originated from research on real-time routing with OSM data, introduced by developers Dennis Luxen and Christian Vetter in a 2011 ACM SIGSPATIAL conference paper that demonstrated server- and device-based implementations achieving exact shortest paths with sub-second query times. The project has since evolved into a versatile library and service, employing advanced algorithms like and Multi-Level Dijkstra for fast preprocessing and queries. Initially led by Luxen, maintenance shifted to around 2015 before returning to community contributions, with the latest stable release (version 6.0.0) issued in April 2025. Key features include an HTTP API for services such as nearest-location finding, route optimization, trip sequencing, map matching, and distance matrices, alongside C++ library bindings and wrappers for integration. OSRM powers numerous applications, including Directions for global car and walking routes, cycle.travel for bicycle navigation in and , and custom servers for specialized routing like Copenhagen's I Bike CPH green routes. Its focus on and extensibility has made it a cornerstone for developers building location-based services without proprietary dependencies.

Overview

Description and Purpose

The Open Source Routing Machine (OSRM) is a high-performance, open-source routing engine written in modern C++ that provides route planning capabilities as both a and a . It focuses on computing the shortest paths in road networks with high accuracy and speed, supporting interfaces such as HTTP APIs and C++ libraries for integration into various systems. The primary purpose of OSRM is to facilitate street-level computations for real-world applications, including systems, optimization, and geospatial analysis. By leveraging (OSM) data as its core input source, OSRM enables developers and organizations to perform detailed route planning without proprietary datasets. OSRM is particularly suited for handling large-scale datasets, including continental-sized road networks derived from OSM, allowing it to process complex queries efficiently. It achieves sub-second response times—often in milliseconds—for requests on such extensive graphs, making it viable for interactive and high-volume use cases. The engine is designed to run primarily on Unix-like operating systems, including , , and macOS, with the possibility of compilation on Windows, prioritizing accessibility in Unix-like development environments.

Licensing and Compatibility

The Open Source Routing Machine (OSRM) is distributed under the Simplified 2-Clause BSD License, a permissive that grants users broad rights to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the software without requiring derivative works to be open-sourced, as long as the original and are retained. This licensing choice, adopted in 2013 to replace the previous AGPL, facilitates integration into both open-source and proprietary applications by minimizing legal restrictions. OSRM was originally developed by Dennis Luxen and Christian Vetter, who introduced its core routing capabilities based on data in their 2011 research. OSRM is compatible with Unix-like platforms, including , , macOS (formerly OS X), and can be deployed on Windows through , though official support is limited to Unix-like systems. On Windows, and runtime support are achievable through standard build tools, though official binaries prioritize Unix-like systems. The software depends on (OSM) data formats, such as .osm.pbf files, for processing road networks, and is implemented in C++14, relying on standard libraries like and libosmium for , data extraction, and execution efficiency. As of November 2025, the stable release is version 6.0.0, released on April 21, 2025, which serves as the reference for current compatibility standards and includes enhancements like obstacle support while maintaining with prior data formats where possible.

History

Origins and Development

The Open Source Routing Machine (OSRM) was initially developed in the early 2010s by Dennis Luxen and Christian Vetter to enable efficient routing based on (OSM) data. The project's first public release occurred on July 9, 2010, marking its inception as an open-source tool designed for high-performance route computation. Luxen, a researcher at the , led the early efforts, with Vetter as a key collaborator, building on prior work in graph-based routing algorithms. The primary motivations for creating OSRM stemmed from the limitations of existing open-source solutions, which struggled with speed and when handling large-scale OSM networks comprising millions of street segments. Luxen and Vetter aimed to address these challenges by implementing real-time, exact shortest-path computations suitable for continental-scale graphs, providing an open alternative to proprietary services like . Their 2011 paper presented at the ACM SIGSPATIAL International Conference demonstrated OSRM's capability for sub-second query times on massive datasets, emphasizing the growing quality and availability of OSM data as a foundation for such innovations. Early development gained momentum through community involvement, including participation in the 2011 under the umbrella, where student Bharath Vissapragada, mentored by Luxen, contributed improvements to OSRM's core functionality. Adoption by further accelerated its evolution, as the company integrated OSRM to power its navigation services starting in the early , leveraging its efficiency for production-scale applications. By this period, OSRM had transitioned to a community-driven model under the Project-OSRM banner on , fostering collaborative contributions while maintaining its focus on OSM-based routing.

Key Milestones and Releases

The Open Source Routing Machine (OSRM) achieved a key integration milestone in February 2015, when it was incorporated into the homepage as a primary engine, alongside GraphHopper and Directions, allowing users to generate point-to-point directions directly on the platform. OSRM's development progressed through several major releases, beginning with version 5.0 in 2016, which introduced a redesigned HTTP for improved and significant optimizations in for faster query processing. Subsequent v5.x updates, such as v5.5 in December 2016, further enhanced efficiency with better and support for larger datasets, while v5.27 in October 2022 added for integration and refined map matching algorithms. The project culminated in the stable release of version 6.0.0 on April 21, 2025, featuring generic obstacle support to avoid restricted areas, advanced treating highways as walkable platforms, and substantial boosts across route, , , and services through optimized structures and a modernized build system compatible with 15 and 2.x. In 2025, OSRM demonstrated its utility in large-scale computational challenges, notably when researchers from and the utilized it to generate a comprehensive for solving the traveling salesman problem across 81,998 bars in , creating over 3.3 billion pairwise walking time estimates to enable an optimal tour computation. Project governance evolved with OSRM's full transition to GitHub for version control and release management, fostering community-driven maintenance through contributions from developers worldwide, as evidenced by acknowledgments in release notes for pull requests addressing bugs and features. As of November 2025, OSRM has seen limited official updates following the v6.0.0 release, with no major versions or significant patches announced, indicating a potential period of stagnation in core development despite ongoing community usage.

Technical Architecture

Core Components

The osrm-backend serves as the primary C++ library in the Open Source Routing Machine (OSRM), responsible for data extraction, processing, and query handling to enable high-performance routing on (OSM) data. This backend forms the foundational structure, implementing a modular pipeline that transforms raw geographic data into query-optimized representations while supporting both standalone library usage and server deployments. Key modules within osrm-backend include the extractor, partitioner, and customizer, which sequentially process the input data to build an efficient routing graph. The extractor preprocesses OSM data in XML or Protocol Buffer Binary Format (PBF), parsing nodes, ways, and relations to construct an initial with edge weights based on configurable profiles (e.g., for vehicle types). It incorporates spatial indexing, such as structures, to facilitate rapid nearest-neighbor lookups during coordinate-to-node mapping. Following extraction, the partitioner divides the graph into balanced cells using techniques like recursive , enabling and reducing query complexity for large-scale networks. The customizer then refines this partitioned graph by building hierarchical overlays, such as multi-level structures, to accelerate pathfinding without embedding specific algorithmic details at this stage. Service layers in OSRM extend the backend's capabilities through an integrated HTTP , which exposes endpoints for services like route computation, table generation, and nearest-point matching, allowing remote clients to submit requests in format. Complementing this, libosrm provides a C++ for functionality directly into applications, offering programmatic access to the engine's core operations via classes like EngineConfig and Route. The data pipeline in OSRM ensures seamless flow from raw OSM inputs to query-ready outputs, converting geographic primitives into compressed internal representations that preserve and attributes like speed limits and turn restrictions. This process emphasizes efficiency, with the extractor generating intermediate files that the partitioner and customizer further optimize into a final .osrm . Memory management in OSRM prioritizes in-memory graph storage to achieve sub-second query times on continental-scale datasets, utilizing compact data structures and memory-mapped files to minimize footprint while loading essential components like the and lists into . Optimizations include profile-specific pruning during preprocessing to discard irrelevant elements, ensuring scalability for datasets exceeding billions of without excessive resource demands.

Routing Algorithms and Techniques

The Open Source Routing Machine (OSRM) employs the Multi-Level Dijkstra (MLD) algorithm as its primary method for computing shortest paths in road networks, building on the classic but accelerated through hierarchical preprocessing. OSRM also supports (CH) as an alternative algorithm, particularly suited for large distance matrices. MLD operates within the framework of Customizable Route Planning (CRP), which separates metric-independent preprocessing from query-time computations, enabling efficient handling of various transportation profiles. The algorithm performs a across multiple hierarchy levels of the graph, restricting expansions to upward edges (toward higher-level nodes) in the forward search and downward edges in the backward search, which significantly prunes the search space. A high-level pseudocode outline for the MLD query phase is as follows:
function MLD_Query(graph G, [source](/page/The_Source) s, target t):
    Initialize forward [priority queue](/page/Priority_queue) FQ with s at distance 0
    Initialize backward [priority queue](/page/Priority_queue) BQ with t at distance 0
    While both queues are non-empty:
        If forward search meets backward search:
            Reconstruct path using predecessors
        Else if forward expansion at higher level:
            Relax neighbors only via upward edges
        Else:
            Relax neighbors via intra-level or downward edges (restricted)
    Return shortest path distance and route
This process leverages the 's hierarchical structure to limit expansions to a few thousand, achieving sub-millisecond query times in practice for continental-scale networks. The per query remains O((V + E) log V) in the worst case, akin to standard Dijkstra's with a , but the effective graph size is reduced by the hierarchy, yielding practical speeds of under 2 ms for typical point-to-point routes. Preprocessing for MLD in OSRM relies on recursive graph partitioning to create a multi-level , reducing the 's search space. The partitioner module recursively divides the into balanced separators using techniques like , forming the basis for multi-level overlays. In , the CH algorithm uses for preprocessing. Node ordering is determined by heuristics that prioritize contraction of less important s (e.g., local roads over highways), often based on or witness path lengths to ensure shortcuts preserve distances. During contraction, for each v removed, incoming edges from u to v and outgoing edges from v to w are replaced by a shortcut edge u to w with weight equal to the sum of the original edge weights, added only if it shortens the path. This creates a sparser where each has a , and queries traverse only edges connecting to higher-ranked (more important) s, eliminating many irrelevant paths. The resulting multi-level graph in OSRM's MLD consists of 2 to 7 levels (defaulting to 5), where lower levels capture fine-grained details like local streets, and higher levels aggregate major highways and inter-city connections for rapid long-distance traversal. Searches start at the coarsest (highest) level compatible with the source and target, descending as needed, which balances detail and speed—higher levels enable quick coarse routing, while lower levels refine local accuracy. Optimizations in OSRM's implementation include bidirectional search integration, which runs simultaneous forward and backward Dijkstras to meet in the middle, halving the effective search space and reducing query times by up to 50% compared to unidirectional variants. Profile-based weighting allows customization for transport modes (e.g., car, bicycle, foot) by applying different edge costs—such as speed limits for cars or surface types for bikes—during a lightweight customization phase post-preprocessing, without recomputing the full hierarchy. This supports multiple profiles with minimal overhead, using compact storage for weights (e.g., 71 MiB per additional metric). OSRM's core engine assumes static graphs, precomputing all structures from fixed input data like OpenStreetMap extracts, which precludes native support for traffic updates or dynamic events in the logic. While extensions can incorporate external data, the fundamental algorithms do not integrate live variations, limiting applicability to scenarios with stable conditions.

Features and Capabilities

Supported Routing Modes

The Open Source Routing Machine (OSRM) natively supports three core routing modes—car, bicycle, and foot—each configured through dedicated Lua profiles that adapt path computation to the characteristics of the respective transport type. The mode prioritizes speed and efficiency by favoring high-capacity roads such as motorways and trunks, assigning higher speeds to these edges (e.g., 90 km/h for motorways and 85 km/h for trunks) while applying lower speeds to local roads like residential areas (25 km/h). This setup ensures routes emphasize highways and minimize time on slower segments, with turn penalties (e.g., 7.5 for standard turns and 20 for U-turns) to reflect realistic behavior. In contrast, the bicycle mode accounts for cyclist preferences by favoring dedicated like cycleways (15 km/h) and lanes, while penalizing unsafe or unsuitable roads such as primary highways (multiplier of 0.5 for concerns). It incorporates surface conditions, assigning slower speeds to rough terrains like (3 km/h), and supports bike-specific access tags to route along shared paths or busways. The foot mode, designed for s, emphasizes walkable networks by utilizing footways and paths at a base speed of 5 m/s, while avoiding high-speed roads through access restrictions (e.g., blacklisting private or agricultural areas) and barriers like fences. As of OSRM v6.0.0 (April 2025), routing has been enhanced to better handle highways marked as platforms. It dislikes motorways and similar , routing instead along residential streets, tertiary roads, and dedicated routes. These modes are defined via Lua-based profiles, which allow customization of speed limits, turn restrictions, and edge weights during with osrm-extract. Profiles compute weights—used for the algorithm—to represent routability or duration, with examples in the car profile applying a side-road multiplier of 0.8 to against minor roads relative to major ones. Turn weights incorporate highway tags and access rules for penalties, enabling fine-tuned behavior like prohibiting certain maneuvers on restricted edges. OSRM generates mode-specific outputs, including detailed directions with maneuvers such as "turn left onto " for routes or "continue straight on " for foot, derived from the profile's routing logic to match the transport's constraints. For instance, directions may highlight safer paths avoiding high-traffic areas, while foot instructions prioritize availability. The system is extensible, permitting users to add custom modes—such as for trucks or public transit—by creating new Lua profile files without modifying the core codebase, simply by defining unique speed tables, weight functions, and access whitelists. Performance across modes varies with graph complexity, as optimize queries based on edge weights; the car mode typically yields the fastest response times due to its emphasis on hierarchical, high-speed road networks that enable efficient shortcut computations.

Advanced Functions

OSRM provides map matching through its dedicated service, which snaps sequences of GPS traces to the underlying road network by identifying the most probable path. This process employs a () to perform probabilistic alignment, accounting for emission probabilities based on positional accuracy and transition probabilities derived from road connectivity and routing costs. The algorithm evaluates candidate road segments for each GPS point and uses the to find the optimal state sequence, enabling robust handling of noisy or sparse location data. As of OSRM v6.0.0 (April 2025), map matching performance has been improved through micro-optimizations. The (TSP) solver in OSRM, accessible via the trip service, generates optimized visit orders for a set of by minimizing total travel distance or time. For fewer than 10 waypoints, it applies an exact brute-force enumeration to guarantee the optimal solution. For 10 or more waypoints, it switches to a greedy heuristic based on the farthest-insertion , which iteratively inserts the farthest unvisited waypoint into the current tour while approximating optimality for larger instances. This approach balances computational efficiency with practical route quality, though it may not yield the absolute shortest tour for complex cases. As of OSRM v6.0.0 (April 2025), the trip service has received performance boosts. The table service computes pairwise distance and duration matrices between multiple origins and destinations, facilitating applications like fleet optimization and accessibility analysis. It leverages precomputed data to return symmetric or asymmetric matrices, where each entry represents the fastest route metric under the selected , such as or . By default, it supports up to 100 locations per query, though this can be extended via server configuration for larger datasets, making it suitable for batch computations in . As of OSRM v6.0.0 (April 2025), the table service performance has been enhanced. Via extends basic point-to-point paths to multi-stop itineraries by incorporating intermediate waypoints, calculating cumulative leg distances and total route summaries. Users specify ordered coordinates, and OSRM constructs a single polyline connecting all points while adhering to the chosen mode, such as avoiding highways or prioritizing footpaths. The service enforces a configurable maximum number of via points to manage complexity, ensuring feasible computation for practical trip planning scenarios. As of OSRM v6.0.0 (April 2025), a new obstacle support feature has been added, providing generic handling of obstacles to enhance flexibility across modes. Despite these capabilities, OSRM lacks native support for public transit , as its core engine focuses on road and networks without integrated timetable or transfer modeling from sources like . Similarly, it does not incorporate dynamic traffic conditions, relying on static speed profiles derived from data rather than real-time updates or time-dependent edges. These limitations necessitate external extensions or hybrid integrations for multimodal or live-traffic applications.

Usage and Implementation

Data Processing and Preparation

The preparation of data for the Open Source Routing Machine (OSRM) begins with sourcing (OSM) data in compatible formats, primarily Protocolbuffer Binary Format (PBF) files with a .osm.pbf extension, though XML-based .osm files are also supported via the underlying libosmium library. These inputs can be obtained from regional extracts provided by services like Geofabrik, which offer pre-processed OSM datasets to reduce download sizes and focus on specific areas. If starting from raw OSM XML or other formats, tools such as can be used for conversion to PBF, enabling efficient handling of large datasets; for instance, merge or extract commands allow combining or subsetting files before feeding them into OSRM. The extraction process utilizes the osrm-extract binary to transform the input OSM data into an initial routing graph, applying a Lua-based profile script that defines routing rules and filters out irrelevant features. Profiles such as car.lua, foot.lua, or bicycle.lua—located in the OSRM profiles directory—determine which OSM elements (e.g., highways, paths) are included while excluding non-routable ones like waterways, buildings, or administrative boundaries to optimize graph size and performance. The command typically runs as osrm-extract -p /path/to/profile.lua input.osm.pbf, producing a .osrm file that represents the extracted graph; this step is crucial for tailoring the dataset to specific routing modes and can be customized by modifying the profile to adjust speed limits, turn restrictions, or feature inclusion based on OSM tags. In v6.0.0, profiles support obstacles for enhanced routing flexibility. Following extraction, the graph undergoes partitioning with osrm-partition, which divides it into hierarchical cells using multilevel graph ing techniques to enable faster queries by localizing searches. This produces a .osrm.partition and is invoked simply as osrm-partition input.osrm, balancing the graph for scalability across large regions. Subsequently, osrm-customize applies further optimizations, such as building within the multi-level structure for speedup, based on the selected profile; the command osrm-customize input.osrm generates the final set of files (including .osrm.partition, .osrm.cells, and .osrm.mld) ready for the server. These steps allow users to customize the graph for specific needs, like adjusting weightings for traffic or accessibility, ensuring the prepared data aligns with the intended application. For (CH) algorithm, use osrm-contract instead, producing files like .osrm.ch. Hardware requirements for data preparation scale with dataset size: regional extracts, such as a single , typically require at least 16 of and can complete in under an hour on a modern CPU, while continental datasets like demand 32–64 of (often supplemented by swap space) and take several hours for and subsequent steps. Global processing of the full OSM file (around 60 compressed) necessitates 64 or more —potentially up to 300–400 peak for —and can span days on standard hardware, though high-end servers (e.g., 64 vCPUs and 512 ) reduce this to 6–24 hours across all phases. Time estimates vary by profile complexity and machine; for example, extracting with the car profile on a 64-core system takes about 1 hour, but desktop setups may extend partitioning and customization to additional hours due to I/O bottlenecks. Common pitfalls in this pipeline include data staleness, as OSM updates occur frequently (e.g., Geofabrik provides weekly extracts), leading to outdated routing if not refreshed regularly, which can affect accuracy for dynamic features like . Another issue arises from mismatches, where using an incompatible (e.g., foot.lua on motorway-heavy data) results in incomplete graphs or errors during customization, often resolved by verifying handling in the Lua script beforehand. Insufficient memory during extraction can cause silent failures or excessive swapping, mitigated by monitoring resource usage and using SSDs for temporary files.

API and Integration

The Open Source Routing Machine (OSRM) provides a RESTful HTTP for accessing its routing services, enabling developers to query routes, distances, and map from applications. The is exposed by the osrm-routed binary, which serves requests over HTTP and returns responses in format. Key endpoints include /route for computing directions between waypoints, /table for generating distance or matrices between multiple coordinates, and /match for snapping GPS traces to the road network. These endpoints support standard profiles such as car, bicycle, and foot, specified via the profile parameter (e.g., /route/v1/car/...). Custom profiles can be defined in Lua and used similarly. Common parameters include coordinates as semicolon-separated longitude-latitude pairs (e.g., 13.388860,52.517037;13.397634,52.529407), alternatives=true to retrieve up to three alternative routes, and steps=true for detailed turn-by-turn instructions. Additional options like geometries=geojson control the format of route geometry in responses, while annotations=true adds metadata such as speed or duration per segment. JSON responses for /route typically include a routes array with properties like geometry (encoded polyline), legs containing steps with instructions (e.g., "Turn right onto B 96"), and summary fields for total distance and duration. Similar structures apply to /table (returning a duration or distance matrix) and /match (with confidence scores for trace snapping). For deeper integration, OSRM offers the libosrm C++ library, which allows embedding the routing engine directly into applications without HTTP overhead. This library provides classes like OSRM for initialization and methods such as Route for waypoint-based queries and Table for matrix computations, configurable via an EngineConfig object pointing to extracted data directories. Node.js developers can use the official bindings via the @project-osrm/osrm package, installed with npm install @project-osrm/osrm, which exposes asynchronous functions like osrm.route for API calls and requires a compatible libstdc++ version (e.g., GLIBCXX_3.4.26 or later). Python integration is available through community-maintained bindings like py-osrm, which uses nanobind to interface with the C++ backend, supporting platforms on CPython 3.8+ and enabling functions for route planning and matrix generation. Deployment of OSRM services is facilitated by Docker containers provided in the osrm-backend-docker repository, allowing quick setup with commands like docker run -p 5000:5000 ghcr.io/project-osrm/osrm-backend osrm-routed --algorithm=MLD data.osrm. For production environments, scaling involves running multiple osrm-routed instances behind a load balancer to distribute requests, with shared access to preprocessed data files. Best practices for high-traffic scenarios include implementing client-side caching of responses (e.g., using for repeated queries) to reduce server load and respecting rate limits—such as the demo server's 1 request per second—to prevent throttling. In self-hosted setups, monitoring tools like can track query volumes and optimize resource allocation accordingly.

Applications and Impact

Real-World Use Cases

The Open Source Routing Machine (OSRM) has been integrated into systems, notably powering turn-by-turn directions in applications through its combination with services like . Developers frequently pair OSRM's routing backend with Mapbox's [vector tiles](/page/vector tiles) and SDKs to create high-performance apps for real-time guidance, as demonstrated in projects deploying OSRM for regional data extracts in areas like . In , OSRM facilitates delivery optimization by computing efficient routes for fleets, incorporating via points and distance matrices to minimize travel time and fuel consumption. For instance, companies leverage OSRM within scalable platforms like to generate routes for large vehicle fleets, enabling dynamic reassignment based on real-time conditions and reducing operational costs. Academically, OSRM supports large-scale computational challenges, such as solving the traveling salesman problem (TSP) for 81,998 bars across in 2025. Researchers at the used OSRM to generate walking time estimates between all pairs of locations, creating a that enabled the computation of an optimal tour totaling approximately 15.39 million seconds, showcasing OSRM's scalability for massive graph-based problems. For humanitarian efforts, OSRM enables offline routing in disaster zones through preprocessed regional extracts, allowing local deployment on devices with limited connectivity to support aid delivery and evacuation planning. This capability has been applied in interventions, where OSRM's shortest-path algorithms optimize door-to-door routes for workers in remote or crisis-affected areas. Despite these applications, OSRM sees limited adoption in public transit routing due to its lack of native support for schedules like those in formats, often requiring integration with specialized tools for comprehensive transit solutions.

Community and Extensions

The Open Source Routing Machine (OSRM) maintains a vibrant open-source centered around its primary repository, Project-OSRM/osrm-backend, which hosts over 30 official releases and sustains active discussions and tracking as of late 2025. Contributors regularly engage through pull requests and resolutions, fostering iterative improvements to the core engine. Community contributions have expanded OSRM's applicability through custom plugins and profiles, including efforts to integrate real-time traffic data for more dynamic routing scenarios. For instance, developers have explored combining OSRM with tools like for enhanced multimodal support, though Valhalla remains a distinct engine. Custom profiles tailored for electric vehicles (EVs) represent another key area, where users modify cost functions to account for factors like battery range and charging infrastructure, enabling EV-optimized routes. Extensions further enrich the ecosystem, with the official osrm-frontend repository providing modular web demonstrations built on Leaflet Routing Machine for interactive mapping and routing visualization. Integrations with libraries like Leaflet allow seamless embedding of OSRM services into web applications, while community projects occasionally hybridize OSRM with alternatives such as GraphHopper for specialized routing needs. Support resources are readily available through established channels, including the (OSM) Wiki for documentation and tutorials, GIS for technical queries, and the OSRM-talk mailing list for developer discussions and troubleshooting. Looking ahead, while the project demonstrates ongoing maintenance, community discussions highlight persistent gaps, such as limited native support for public transit routing, with repeated calls for integration to address multimodal demands. These contributions underscore OSRM's role as a collaborative platform, though sustained updates beyond 2025 may depend on broader volunteer involvement.

References

  1. [1]
    Project OSRM
    Modern C++ routing engine for shortest paths in road networks. Fork. Get in Touch. Features. Flexible import of OpenStreetMap data. Handles continental sizedHTTP APIOSRM API docs
  2. [2]
    Project-OSRM/osrm-backend: Open Source Routing Machine - GitHub
    High performance routing engine written in C++ designed to run on OpenStreetMap data. The following services are available via HTTP API, C++ library interface ...
  3. [3]
    Real-time routing with OpenStreetMap data - ACM Digital Library
    We demonstrate both a server and a hand-held device based implementation working with OpenStreetMap data. Both applications provide real-time and exact shortest ...
  4. [4]
  5. [5]
    Websites and projects using OSRM
    ### Notable Projects/Websites Using OSRM
  6. [6]
    Open Source Routing Machine - OpenStreetMap Wiki
    Oct 14, 2022 · The Open Source Routing Machine (OSRM) is an open-source router designed for use with data from the OpenStreetMap project. OSRM Logo ...
  7. [7]
    Open Source Routing Machine download | SourceForge.net
    Apr 21, 2025 · High-performance routing engine written in C++14 designed to run on OpenStreetMap data. There are several services available via HTTP API, C++ library ...<|control11|><|separator|>
  8. [8]
    More Open: Project OSRM Switches to BSD | by Mapbox
    Oct 13, 2013 · OSRM was previously licensed under the AGPL, with a very aggressive share-alike clause which added legal complexity while limiting the ...Get Mapbox's Stories In Your... · Published In Maps For... · More From Mapbox And Maps...
  9. [9]
    How to Install Open Source Routing Machine (OSRM) on Windows 10
    How to Install Open Source Routing Machine (OSRM) on Windows 10 · Step 1: Install Dependencies · Step 2: Compile OSRM · Step 3: Generate OSRM Data · Step 4: Testing.
  10. [10]
  11. [11]
    Google Summer of Code/2011/AcceptedProjects
    Jul 31, 2018 · The student projects that were accepted to take part in the year 2011 Google Summer of Code (GSoC) are listed below, along with the OSM mentor ...Missing: history | Show results with:history
  12. [12]
  13. [13]
  14. [14]
    Korea TSPs - University of Waterloo
    We have solved a traveling salesman problem (TSP) to walk to 81,998 bars in South Korea. The problem was created using the Open Source Routing Machine ...More Tours of South Korea · Korea81998 Data · Korea81998 Computation
  15. [15]
    The perfect pub crawl: mathematicians solve most efficient way to ...
    May 1, 2025 · The Traveling Salesman Problem (TSP) is one of the most iconic and deceptively simple challenges in mathematics and computer science. At its ...
  16. [16]
    Releases · Project-OSRM/osrm-backend
    - **Earliest Release**: v5.23.0, 14 Oct 21:12 (no year specified in content).
  17. [17]
    [PDF] Large-Scale Accessibility Analysis Using OpenStreetMap Data
    Jun 6, 2018 · Calculate Travel Time and Distance with. OpenStreetMap Data using the Open Source Routing Machine (OSRM). The Stata Journal, 16(2):1–8, 1 ...
  18. [18]
    Customizable Route Planning in Road Networks - Microsoft Research
    We propose the first routing engine for computing driving directions in large-scale road networks that satisfies all requirements of a ...Missing: OSRM | Show results with:OSRM
  19. [19]
    [PDF] Customizable Route Planning in Road Networks? - Renato Werneck
    Jul 24, 2013 · A key ingredient of modern online map applications is a routing engine that can find best routes between two given location of a road network.
  20. [20]
    Faster and Simpler Hierarchical Routing in Road Networks
    We present a route planning technique solely based on the concept of node contraction. The nodes are first ordered by 'importance'.
  21. [21]
    None
    ### Extracted Code Snippets
  22. [22]
    None
    ### Key Code Snippets
  23. [23]
    None
    ### Key Code Snippets
  24. [24]
  25. [25]
    osrm-backend - docs - profiles.md - GitLab
    Jun 7, 2018 · Out-of-the-box OSRM comes with profiles for car, bicycle and foot. You can easily modify these or create new ones if you like. Profiles have a ' ...Missing: customization | Show results with:customization
  26. [26]
  27. [27]
  28. [28]
    osrm profile: weight for distance ? · Issue #5469 - GitHub
    May 24, 2019 · OSRM stores 3 "accumulatable" properties per edge: weight, duration, and distance. Only the "weight" value is used in the actual routing algorithm.Missing: explanation hierarchy optimizations
  29. [29]
    Reuse hidden markov model between queries of the map ... - GitHub
    Jan 12, 2018 · For every query of the map matching plugin we create a new instance of the HiddenMarkovModel which is a collection of vectors of vectors in ...
  30. [30]
    [OSRM-talk] Some OSRM Match questions - Mailing Lists
    Nov 10, 2015 · ... match API takes locations and optional timestamps for each location. Are the timestamps used as part of the Hidden-Markov-Model algorithm ...
  31. [31]
    OSRM 4.6.1 enables Map Matching | by Mapbox
    Apr 26, 2015 · The OSRM 4.6 series brings some exciting new features such as a plugin for map matching, which enables you to snap GPS traces to the road network.<|separator|>
  32. [32]
  33. [33]
  34. [34]
    Generating road distance matrix using 5000 locations #5830 - GitHub
    Sep 14, 2020 · 'table' returns both distances and durations. Default limit is 10000 (which is exactly 100x100), but it can be adjusted with max-table-size parameter.
  35. [35]
  36. [36]
    Route with via multiple points · Issue #5421 · Project-OSRM ... - GitHub
    Apr 2, 2019 · Yes. If you run your own osrm-routed server, you can pass in the --max-viaroute-size X size, where you can set X as high as you like.
  37. [37]
    Routing of Public Transport based on GTFS · Issue #1961 - GitHub
    Feb 10, 2016 · I understand there no plans to include support for routing with GTFS data in osrm. There are quite a few tools with this capability these days.
  38. [38]
    Future Traffic Prediction · Issue #5835 · Project-OSRM/osrm-backend
    Sep 21, 2020 · I'm really just looking for a solution that includes traffic (not even real-time, but predicts future traffic) and I can't use something over an API.
  39. [39]
    OSRM Traffic Prediction - Stack Overflow
    Sep 21, 2020 · I want to perform a routing by time of day and day of week in the future. Eg: So I want it to consider rush hour, weekend traffic, etc.Missing: limitations | Show results with:limitations
  40. [40]
  41. [41]
    OSRM API Documentation
    Here is all you ever wanted to know about libosrm, that is a short description of what the types do and where to find documentation on it.
  42. [42]
    osrm-extract with europe.osm.pbf and 64GB RAM failed due to ...
    Oct 12, 2021 · The data processing that OSRM does is extremely memory intensive. Processing the planet is a 300-400GB of RAM operation. The world is a big place, as is Europe.Missing: hardware | Show results with:hardware
  43. [43]
    OSRM 4.8 import planet-latest.osm.pbf 31G - GIS Stack Exchange
    Mar 25, 2016 · I use OSRM version 4.8. My VM configuration: 16 CPU; 64 RAM; 150G SWAP; 150G stxxl disk size; 250G data directory; 50G root. When ...
  44. [44]
    How to Build a European-Wide OSRM Server on a Desktop Computer
    Oct 9, 2023 · Open Source Routing Machine, or OSRM (Luxen and Vetter 2011), is a routing software based on OpenStreetMap (OSM) data. OSRM can be used to ...
  45. [45]
    Disk and Memory Requirements · Issue #5265 · Project-OSRM/osrm ...
    Nov 13, 2018 · One suggestion: it takes significantly more RAM to process the data than it does to host it. As long as you keep the operating systems/machine ...
  46. [46]
    OSRM API Documentation
    ### Summary: Directions and Maneuvers in OSRM Route Service
  47. [47]
  48. [48]
    Python bindings to the OSRM routing framework - GitHub
    py-osrm is a Python package that binds to osrm-backend using nanobind. Supported Platforms Installation py-osrm is supported on CPython 3.8+, and can be ...
  49. [49]
    Demo server
    ### Summary of OSRM Demo Server and API Usage
  50. [50]
    Building a High-Performance Routing App with OSRM, Mapbox ...
    Aug 7, 2025 · Deploy an OSRM backend using Pakistan's OpenStreetMap data · Integrate Mapbox GL JS for vector tiles, custom styling, and smooth animations · Wire ...Missing: integration | Show results with:integration
  51. [51]
    Scalable Route Generation With Databricks and OSRM
    Sep 2, 2022 · Project OSRM is an open source platform for the calculation of routes using open source map data provided by the OpenStreetMap project.
  52. [52]
    Combining OpenStreetMap mapping and route optimization ...
    We constructed this matrix using the Open Source Routing Machine (OSRM) tool which employs Dijkstra's routing algorithm to find the shortest path between two ...
  53. [53]
    Spatial Access of America: Multiple indicators of accessibility to ...
    Jul 15, 2025 · At the time of writing, OSRM did not support routing by public transit. Therefore, travel times for this mode were not computed. For this ...
  54. [54]
    valhalla/valhalla: Open Source Routing Engine for OpenStreetMap
    Valhalla is an open source routing engine and accompanying libraries for use with OpenStreetMap data. Valhalla also includes tools like time+distance matrix ...Valhalla · Package valhalla · Valhalla/web-app · Issues 742Missing: traffic profiles
  55. [55]
    Electric bike profile · Issue #6193 · Project-OSRM/osrm-backend
    Jan 14, 2022 · Electric bikes are very prevalent (and becoming even more so) in the EU. Could an e-bike profile be added to OSRM to accommodate this?Missing: custom vehicles
  56. [56]
    Understanding OSRM Routing with AWS - C# Corner
    OSRM is a high-performance routing engine using a precomputed graph for fast street-level routing, using an OSM provider.Missing: extractor | Show results with:extractor
  57. [57]
    Modular rewrite of the OSRM frontend using LRM - GitHub
    This frontend builds heavily on top of Leaflet Routing Machine. If you need a simple OSRM integration in your webpage, you should start from there.Missing: extensions web demos GraphHopper
  58. [58]
    perliedman/leaflet-routing-machine - GitHub
    Update 2020-04-06: Out of the box, Leaflet Routing Machine relies on OSRM's demo server. At this moment, the demo server (which is outside scope of the ...Missing: frontend | Show results with:frontend
  59. [59]
    Leaflet Routing Machine - Per Liedman
    Leaflet Routing Machine is an easy, flexible and extensible way to add routing to a Leaflet map. Using the default is just a few lines of code.Missing: adoption | Show results with:adoption<|separator|>
  60. [60]
    Newest 'open-source-routing-machine' Questions
    I am using leaflet-routing-machine with OSRM, How can I change OSRM server and do not use demo? I have the same warning: You are using OSRM's demo server.
  61. [61]
  62. [62]
    Project-OSRM/osrm-backend
    **Summary of Issues on Project-OSRM/osrm-backend (as of 2025):**