OSRMplus

Compact Routing Network

A new data representation
for road network routing

OSRM stores road networks as flat arrays of absolute values. This is fast to read but wastes memory because nearby roads share most of their properties. CRN re-encodes that data so it stays small in memory and still answers every lookup in constant time.

Planet-scale memory footprint

Stock OSRM (planet)

256+ GB

CRN default compression

~96 GB

CRN at memory floor

~16 GB

Measured on real OSRM builds. The floor is where the server is still responsive but uses SSD-backed paging for cold data. The default compression point has no paging. Everything fits in RAM.

Validated

Measured, not estimated

Every number on this page comes from booting real OSRM containers on real map data and comparing process-level memory, query latency, and API responses.

63%

RAM reduction, lossless

Measured on a real MLD build. Runtime memory dropped to under half with identical API responses across all six OSRM services.

91%

At floor (large region, mmap-backed)

On a large multi-country region, stock OSRM needs 1.5 GB to stay up. CRN serves the same data from 144 MB with memory-mapped paging. The ratio improves with scale.

0

Bytes differ in API responses

Routes, distance matrices, snapping, map-matching, trips, and tiles all return MD5-identical responses between stock and CRN. Verified end-to-end, not assumed from the encoding.

Questions

Common questions

What does CRN stand for?

Compact Routing Network. It is a new data format for serving road network routing with significantly less memory.

Does CRN change route results?

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

How does it fit with an existing OSRM setup?

Your existing preprocessing pipeline stays the same. CRN adds one step at the end and swaps the serving image. No data pipeline changes, no API migration.

Where does the RAM 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.

Does the saving improve with larger regions?

Yes. Larger datasets benefit more because each query only touches a small portion of the total data. The rest can stay on disk.

Can I use CRN without OSRMPlus?

Yes. CRN is the data format and routing engine. OSRMPlus adds fleet optimization and licence management on top. CRN works independently for the RAM saving alone.

Try it on your own data

If you already run OSRM, your pipeline stays exactly as it is. Add one step, swap the image, and see the difference.