Felix' Workshop

Route Sheet

Drop a route here, or

GPX TCX KML KMZ GeoJSON

A sheet of paper does not need a signal, a battery or a network. Give this a route and it prints one: an overview map with the path on it, a scale bar and a north arrow, the numbers that matter, and a numbered list of every turn — how far along it is, how far to the next one, and the coordinates, so a phone that comes back to life can be told where to go.

Every sport app exports GPX, and Komoot, Strava, AllTrails, RideWithGPS and Garmin all do. So do TCX, GeoJSON and the KML or KMZ that Google My Maps hands you. Those carry the path itself, every vertex of it, and they make the best sheets.

Google Maps directions and Waze do not export. A share link from either carries the stops and not the road between them, so this tool reads the stops, draws them joined by a dashed line, and says on the sheet that the dashes are not a road. That is the honest limit of what those two links contain — for a real path out of Google, build the route in My Maps and export the KML.

Carries the whole path
GPX tracks, routes and waypoints · TCX activities and courses, including Garmin's course points, which are real turn instructions · KML and KMZ, including Google My Maps exports · GeoJSON · a response from the Google Directions, OSRM, Mapbox or GraphHopper routing APIs, whose written instructions are used as they are · an encoded polyline pasted on its own.
Carries only the stops
Links from Google Maps, Waze, Apple Maps, OpenStreetMap and Bing. None of the five publishes the road between the stops, so the sheet draws a dashed line and labels it as not a road. A maps.app.goo.gl short link cannot be opened here at all: following it is a cross-origin redirect the browser forbids, and resolving it on a server somewhere would hand your destination to a stranger to save you a paste. Open it in Maps and copy the long address.
Does not read
Garmin's binary FIT. Every app that writes one also exports GPX or TCX for the same ride.
Where the instructions come from
If the file has them, they are used and the street names come with them. A recorded track has none, so they are worked out from the shape of the path: the direction of travel is measured over a window either side of each point, and where it changes by enough the tool says so, with the angle it turned through and the compass heading it leaves on. That is less than a routing engine knows — it can never name a road — but it is all that can be had without sending your route to somebody else, and next to a map it is enough to follow.
The one thing that leaves
With Map set to anything but None, this page asks tile.openstreetmap.org for the squares of map the route crosses. That request carries your IP address and, in the squares it asks for, where you are going. Nothing is uploaded, nothing is kept, and the tiles are held in memory for as long as the tab is open and no longer. Set it to None and the page opens no socket at all.