Map Data
OpenRydr's maps, routes and some app data are made from OpenStreetMap. © OpenStreetMap contributors. OpenStreetMap data is available under the Open Database License 1.0 (ODbL).
When we change OpenStreetMap data, section 4.6 of the ODbL asks us to offer the changes, or the method we used to make them. This page lists each one. The original data is free from openstreetmap.org, planet.openstreetmap.org and regional extracts such as Geofabrik.
Map tiles
Our map tiles (the maps in the app, on this website, and in offline maps) are built from OpenStreetMap with Planetiler and the planetiler-openmaptiles profile. The tiles are a database made from OpenStreetMap, and we license them under ODbL 1.0.
Status: the tiles in use today are a stock Planetiler build (June 2026) with no changes to the data. Our patched tiles, below, are not live yet. This page will say when they are.
The patch
The patched build is planetiler-openmaptiles at commit 60b0ea877879bb827edf74022f3dc0119d60ccc2 with one patch: openrydr-transportation.patch. It changes only the road layer (transportation):
- Adds the speed limit (
maxspeed) to roads at zoom 13 and above. Only values tagged in mph are kept, written as “55 mph”. Other values are left out. - Adds the road name and route number (
ref) at zoom 13 and above. - Shows residential and unclassified roads from zoom 9 (stock: 12).
- Shows tertiary roads from zoom 9 (stock: 11).
To build it you need Java 25 (Java 17 fails). Download the patch first, then run the commands below with its path:
git clone https://github.com/openmaptiles/planetiler-openmaptiles.git cd planetiler-openmaptiles git checkout 60b0ea877879bb827edf74022f3dc0119d60ccc2 git apply /path/to/openrydr-transportation.patch ./mvnw -DskipTests package java -Xmx20g -jar target/planetiler-openmaptiles-*-with-deps.jar \ --area=us --download --threads=4 --output=us.pmtiles
Highway exit numbers
The app has a built-in table of highway exit numbers for turn-by-turn cues. A script fetches every highway=motorway_junction node in our routing area from the Overpass API. For each one it keeps the position (rounded to 5 decimal places) and the exit number (ref). A node tagged noref=yes is kept with no number. Nodes with neither are left out. Nothing else is added or changed.
Script: genExitJunctions.ts. The table is OpenStreetMap data under ODbL 1.0.
Loved-road shapes
To draw the roads riders love on the map, we copy each reviewed road's shape from the same OpenStreetMap extract our routing uses. The method:
osmium getid -rcuts the reviewed roads (by OSM way ID) and their nodes out of the extract.osmium export -f geojsonseq -a idturns each road into a line.- Coordinates are rounded to 6 decimal places and repeated points are dropped.
Nothing else changes. The shapes are OpenStreetMap data under ODbL 1.0.
Routes
Routes come from GraphHopper 9.1 on our own server. Its road graph is imported from unchanged OpenStreetMap state extracts from Geofabrik, merged with osmium. The import:
- leaves out footways, cycleways, paths, pedestrian streets and steps;
- turns OpenStreetMap tags and geometry into GraphHopper's road values (road class, surface, speed limit, access, curviness and similar);
- adds elevation from NASA/USGS SRTM, which is public domain. Elevation does not come from OpenStreetMap and doesn't change any OpenStreetMap data.
Each route type (Twisty, Scenic and the others) is a set of weights GraphHopper applies when a route is asked for. It doesn't change the graph.
Our reading: the routing graph is not a Derivative Database we need to publish, and there is no change file to offer:
- The OSMF's Trivial Transformations guideline lists turning data into “a format required for routing” as a trivial transformation, along with filtered extracts and graph algorithms run on OpenStreetMap data. It counts a change as trivial only when no other source of data is involved. That guideline is still a proposal.
- Our graph has one other source: SRTM elevation. We meet that condition by keeping it separate. Every elevation value comes from SRTM and none from OpenStreetMap, so under the Collective Database guideline (endorsed by the OSMF board in 2016) the elevation is an independent dataset alongside the OpenStreetMap data, not a change to it. The OpenStreetMap part is unchanged apart from the filtering and format conversion above.
- A route is a Produced Work (ODbL sections 1 and 4.5b). The OSMF's attribution guidelines say a routing engine and the apps that use it credit OpenStreetMap. The app does.
The OSMF Licensing Working Group has not published a ruling on routing graphs. If it reads this differently, we will publish what it asks for. Either way, the build is described above.
Community road ratings
Riders' road ratings are our own data, not OpenStreetMap data. They point at OpenStreetMap roads by their OSM way ID and hold no OpenStreetMap tags or shapes. The OSMF's Collective Database guideline treats a dataset like this, which adds a property from entirely non-OpenStreetMap data and links to OpenStreetMap by reference, as independent of it. ODbL share-alike doesn't apply to it. We keep OpenStreetMap data out of the ratings.
Questions
Email support@openrydr.com. Other licenses are on Open-source licenses.