Lower cost
Run routing without dedicated servers or 3rd-party APIs and keep your deployment footprint minimal.
Client-side JavaScript library for routing and isolines from OpenMapTiles—no routing server required.
⠀
Reduce hosting and API costs with fully client-side routing, while keeping reliability, deterministic accuracy and fast developer iteration.
Run routing without dedicated servers or 3rd-party APIs and keep your deployment footprint minimal.
Lightning-fast interactions with minimal latency. Fluid animations and responsive controls.
Everything you need to get started, from routing to isolines, all in one package.
Interactive routing and catchment area analysis in a browser-friendly fully-featured demo.
Embed the router with a single import, a tile URL, and a route call. Or just add it as a MapLibre control.
import { route } from 'omt-router';
const url = 'https://api.maptiler.com/tiles/v3-openmaptiles/{z}/{x}/{y}.pbf?key=YOUR_KEY';
const r = await route([-3.7038, 40.4168], [-3.6937, 40.4101], 'car', url, { costField: 'travelTime' });
console.log(r.found, r.cost);
import { MapLibreRoutingControl } from 'omt-router';
map.addControl(new MapLibreRoutingControl({ routeFunction: route, tileJsonUrl: 'https://tiles.openfreemap.org/planet' }));
Always use the fastest safe engine for each query while preserving deterministic fallback.
Average route latency
7 ms
Engine choices
4
Deterministic
100%
Light inference engine picks the best algorithm per query without compromising the overall performance.
Analyzes graph metrics and endpoints surrounding properties to ensure optimal selection every time.
Highly optimized tile parsing and graph construction for fast and reliable routing.
Fast and robust graph building ensures minimal latency and high accuracy.
Export routes and isolines as GeoJSON for mapping, analysis, or publishable outputs.
Add client-side routing to your MapLibre GL JS map with the included MapLibreRoutingControl. It’s a plug-and-play solution for interactive maps, prototypes, and geospatial tools.
Just import the control, add it to your map with a tile source, and you’re ready to route.
Built with accessibility and customization in mind, the control supports internationalization, light/dark modes, and theming to fit your app’s style.
Out-of-the-box languages include English, Spanish, Catalan, Euskera, Galician, French, German, Russian, Japanese, and Chinese.
Fine-tuned clipping algorithm and node deduplication prevent seam artifacts at tile boundaries. Spatial-index-based snapping keeps endpoints stable within configurable thresholds.
Read Technical NotesUsing well-known OpenMapTiles data schema, its transportation layer provides all the necessary information for accurate routing and snapping.
Usually provided by expensive third-party APIs, isolines are fully integrated and return inner "pretty-breaks" isolines for context.
Inspect engine choice, fallback conditions, snap distances, and missing tile signals for every route.
Powered by performance-helpers
Use OMT Router for offline routing prototypes, delivery catchments, reproducible isolines, and low-cost geospatial UX.
Developers: offline routing and custom penalty support.
Product: fast prototypes and cost-conscious delivery UX.
Enthusiasts: easily add advanced functionality to your hobby projects.
Short answers for common questions.