OPEN DEVELOPER PREVIEW

Hosted tiles.
Routes on
your device.

Give your app a routing engine, not a bill for every route. Download the region you need. Keep using it from the local cache.

Free, MIT-licensed SDK. Hosted access is unmetered during preview.

ON THE DEVICEFRANKFURT / DE
FRANKFURTMAIN
First visitDownload tiles
Next routeReuse your cache

Illustration · open the demo to measure a real route

Built with open foundationsValhallaWebAssemblyOpenStreetMapMapLibre

A DIFFERENT PLACE TO ROUTE

The server delivers data.
Your app does the routing.

01 / FETCH

Start with hosted tiles

The SDK loads the routing graph it needs from our CDN. We take care of building and hosting the datasets.

02 / COMPUTE

Route inside your app

Valhalla runs in a Web Worker. Route calculation happens on the device, leaving your interface responsive.

03 / REUSE

Keep the useful data

Downloaded graph tiles persist where browser storage supports it. Repeat routes can reuse that data without downloading it again.

YOUR FIRST ROUTE

A familiar API.
A local engine.

Use Valhalla routing, matrices, isochrones and map matching from JavaScript. Connect your hosted project and calculate a short route around Frankfurt.

Run it on a map →
main.js npm install routewasm
import { RouteWasmClient } from 'routewasm';

const client = new RouteWasmClient();
await client.init({
  tileAuth: await mint(),
  refreshTileAuth: mint,
}); // use the quickstart for your mint() function

const route = await client.call('route',
  JSON.stringify({
    locations: [
      { lat: 50.1069, lon: 8.6638 },
      { lat: 50.1214, lon: 8.6567 },
    ],
    costing: 'auto',
  })
);

FREE SDK. MANAGED DATA.

Spend time on your app.
Leave the tile hosting to us.

One developer experience for routing and, next, a hosted Protomaps basemap. Open tools underneath. Infrastructure you don’t have to maintain.

AVAILABLE NOW

Routing developer preview

Free during preview

  • Hosted development access starts with Europe
  • No GB or installation limits during preview
  • No automatic overage charges
  • Your project key stays the same when you upgrade
  • A ready-to-run MapLibre route example
Start building ↗
WHAT WE’RE BUILDING NEXT

Maps + routing, together

Hosted Protomaps data for MapLibre, paired with the routing graph. Fixed monthly plans with included delivered GB, pooled across both.

  • One project and predictable allowances
  • Dataset updates managed by RouteWasm
  • Explicit downloads for offline regions

Hosted basemaps, offline map caching and GB accounting are still being developed. Plan prices and update schedules are not finalized.

GOOD TO KNOW

Designed for
repeat visits.

Does it work offline?

Routing can use graph tiles already downloaded to the device. A new region still needs a connection, and the browser can evict stored data. The app and engine assets also need to be available offline. Basemap caching is separate and is not included in the current MapLibre example.

What do I pay for later?

The SDK stays free. The hosted service is intended to use monthly plans with included delivered GB, not per-route charges. Usage accounting is not enabled in this preview. When limits arrive, we plan to pause further hosted downloads at the allowance rather than charge automatic overages.

Can I bring my own tiles and map style?

Yes. Point the SDK at your own compatible Valhalla tiles and use your preferred MapLibre style. Our quickstart includes a MapLibre example with a public demo style. Your app remains responsible for the attribution and terms of its data sources.

What happens to location data?

Route calculation runs locally. Hosted tile requests still reveal which areas are downloaded. A third-party basemap receives its own map requests, too. Local processing reduces the need to send route requests to a server; it does not make network activity invisible.

Can I use this in a mobile app?

The JavaScript SDK targets browser environments, including mobile browsers and web-based app shells. Native integrations and Safari/iOS offline behavior need additional testing; we are not claiming full native SDK parity.