Skip to content
Make with

Routing and navigation

Turn-by-turn navigation SDKs, directions controls, the routing engines behind them, and hosted routing APIs for MapLibre maps.

Navigation SDKs and controls

Turn-by-turn navigation UIs and directions controls for MapLibre maps.

MapLibre Navigation iOSOfficial

Turn-by-turn navigation for iOS

Drop-in turn-by-turn navigation SDK for iOS built on MapLibre Native. Includes voice guidance, route simulation, and a navigation UI.

iOSSwiftSwiftUI

MapLibre Navigation AndroidOfficial

Turn-by-turn navigation for Android

Drop-in turn-by-turn navigation SDK for Android built on MapLibre Native. Includes voice guidance, route simulation, and a navigation UI.

AndroidJavaKotlin

MapLibre GL DirectionsOfficial

Routing plugin for web maps

A directions control for MapLibre GL JS that adds routing and turn-by-turn directions to web maps with support for multiple routing engines.

Used by 2 products

WebJavaScriptTypeScript

Ferrostar

Cross-platform navigation SDK

A modern, cross-platform navigation SDK by Stadia Maps with support for iOS, Android, and web. Built to work with MapLibre Native and MapLibre GL JS.

Used by 1 product

iOSAndroidWebSwiftKotlin+4
A

AnyRouting

Modular directions plugin for any map engine

A modular directions library with draggable routes and alternatives, data providers for HERE, Mapbox, Google, openrouteservice, OSRM, and Valhalla, and a MapLibre GL JS engine that draws routes and waypoints on the map.

WebJavaScriptTypeScript
O

OMT Router

Client-side routing on OpenMapTiles vector tiles

A routing library that builds its graph from the same OpenMapTiles vector tiles as the basemap and computes car, bicycle, and pedestrian routes and isolines in browser Web Workers, with no routing backend. It ships a MapLibre GL JS routing control.

WebJavaScriptTypeScript

Routing engines

Self-hosted routing backends that compute directions and route plans.

Compare the engines

What each engine routes out of the box, the API features it documents, and what it takes to run. Transit needs timetable feeds you supply, except on Transitous, which collects them.

Routing engines compared by travel mode, API features, license, and language
NameCarBikeFootTransitTurn-by-turnIsochronesMatrixMap matchingElevationLicenseLanguage
OSRMYesYesYesNoYesNoYesYesPartly1BSD-2-ClauseC++
ValhallaYesYesYesYesYesYesYesYesYesMITC++
GraphHopperYesYesYesYesYesYesPartly2YesYesApache-2.0Java
MOTISYesYesYesYesYesPartly3YesNoYesMITC++
TransitousYesYesYesYesYesPartly3YesNoYesMITC++
openrouteserviceYesYesYesPartly4YesYesYesPartly5YesGPL-3.0Java

1Only with custom Lua profiles that load elevation data; the standard profiles ignore it.

2Only in the hosted Directions API; the open-source server has no matrix endpoint.

3The API returns reachable stops with travel times; the web UI draws isochrones from them.

4An experimental profile that needs your own GTFS feed.

5Self-hosted instances only, and it returns graph edge IDs rather than a matched route.

From each project's own documentation, checked September 2026. The engines move fast, so confirm details in their docs.

OSRM

OpenStreetMap

Running it
Official Docker images; each profile is preprocessed separately, and the project wiki puts a car planet at about 415 GiB of RAM to extract and 123 GiB to serve (v5.26 figures).
Hosted
FOSSGIS sponsors a free demo server (router.project-osrm.org) with car, bike and foot for reasonable non-commercial use, at most 1 request per second and without guarantees.

Valhalla

OpenStreetMap + GTFS for transit

Running it
Official Docker images build tiled routing graphs from an OSM extract on first start; the tiled design aims at a small memory footprint, and Valhalla also runs on iOS and Android.
Hosted
FOSSGIS runs a free public demo server with a planet graph (valhalla1.openstreetmap.de) under a fair-use policy with rate limits.

GraphHopper

OpenStreetMap + GTFS for transit

Running it
A single Java jar (community Docker images exist); a planet import needs about 60 GB of RAM and 3 hours, plus about 120 GB and 25 hours for the car speed-up preparation.
Hosted
GraphHopper GmbH sells the hosted Directions API, which adds a Matrix API; its free plan gives 500 credits a day for non-commercial use.

MOTIS

GTFS or NeTEx + OpenStreetMap

Running it
A single release binary: motis config, motis import and motis server turn an OSM extract and timetable feeds into a running server, and the project says it is built for low memory use, so planet-sized deployments fit affordable hardware.
Hosted
The project documents no hosted API of its own; its README points to Transitous, a free community-run MOTIS instance at api.transitous.org.

Transitous

GTFS or NeTEx + OpenStreetMap

Running it
It is a service running MOTIS rather than a package: its container, feed list and MOTIS config are public, and importing every feed takes about half an hour even on powerful hardware.
Hosted
Free community-run MOTIS API at api.transitous.org with worldwide coverage where feeds exist, for non-commercial open-source apps only, best effort, with a User-Agent and attribution required.

openrouteservice

OpenStreetMap + GTFS for the experimental transit profile

Running it
A Docker Compose setup; RAM grows with the extract, about 8 GB for Germany and 100 to 105 GB per bike or foot profile for the planet.
Hosted
HeiGIT runs a free public API that needs a key and has daily quotas (2,000 directions requests a day by default); the matching endpoint is self-host only.

Hosted routing APIs

Routing services you can call from a MapLibre map without running an engine.

Know of another routing or navigation tool?

Suggest navigation SDKs, routing engines, or hosted routing services.