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.
Nothing has left this page. With the map set to None the tool opens no socket: the file is read here, the turns are worked out here, and the PDF is written here byte by byte.
—
fetching map squares…
The route
—
| № | Turn | Instruction | At | Then | Coordinates |
|---|
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.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.FIT. Every app that writes one also
exports GPX or TCX for the same ride.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.