OSRMplus

Technology

How we serve road
networks at scale

OSRM is fast, but it loads the entire road graph into memory. A planet-scale dataset needs hundreds of gigabytes of RAM, which is expensive and limits how many regions a single machine can serve.

CRN is the data format behind our API. It re-encodes the same routing graph so it stays small in memory while answering every lookup in the same time. This is what makes it practical to serve multiple regions from a single fleet of machines.

Memory footprint for a planet-scale region

Stock OSRM

256+ GB

CRN default compression

~96 GB

CRN at memory floor

~16 GB

Measured on real OSRM builds. The floor uses SSD-backed paging for data not currently in use. The default compression point holds everything in RAM with no paging.

What this means for the API

Faster, cheaper, same answers

0

Bytes differ in results

Routes, distance matrices, snapping, and map-matching all return identical results. Verified end to end, not assumed from the encoding.

91%

Less memory per region

Lower memory per region means more regions on fewer machines, which keeps the service fast and the pricing simple.

1.7ms

Median routing latency

The compression does not slow down the routing. Point-to-point queries answer in under two milliseconds in production.

Questions

Common questions

What is CRN?

Compact Routing Network. A data format that stores the same road network OSRM uses in a fraction of the memory. It is what makes the API fast and affordable to run at scale.

Does CRN change route results?

No. The routing algorithm and the underlying graph are unchanged. CRN only changes how the data is stored and read. API responses are byte-for-byte identical to stock OSRM.

Where does the memory saving come from?

Road network data has a lot of internal structure that standard storage formats do not take advantage of. CRN is purpose-built to exploit that structure while keeping query results identical.

Is there a performance trade-off?

Point-to-point routing adds minimal overhead. Distance matrices are somewhat slower per element. For optimization workloads, application-level techniques like clustering and parallel builds offset this.

Do I need to know any of this to use the API?

No. CRN is what runs behind the API. You send coordinates, you get results. This page is here for anyone who wants to understand why the service works the way it does.

Try it yourself

The playground lets you click on a map and see routes, matrices, and optimized plans. No account needed for the demo region.