Every notable passenger train route I could verify, drawn on one map with no basemap under it, so the rail lines themselves trace the coastlines. 1,166 routes across 119 countries, about 309,000 km of line once shared corridors are counted once.
Coloured by what kind of journey it is: 459 classic intercity, 246 scenic, 138 heritage, 135 high-speed, 108 night trains, 48 funiculars, 32 luxury cruise trains.
The geometry is the part I have spent the most time on. Route shapes are traced from OpenStreetMap railway relations and ways rather than drawn by hand, so the lines sit on real track. This week I finished a pass that put the last stragglers on their actual alignment, including a Saudi line that turned out to be running 200 km up a branch and back down again.
It is a free hobby project, no ads and no signup, and the route data is open. Corrections are genuinely welcome and get credited; forum readers have already fixed a number of errors in it.
Caveat worth stating plainly: it is a curated atlas of notable routes, not a complete inventory of the world’s railways. Somewhere like China or Germany has far more track than the routes shown here.


If you are interested in all rail infrastructure checkout OpenRailwayMap
It’s the new vector version with clickable features, now it can display routes as well. Click on a rail than you can click on the routes at the bottom of the popup.
Not curated even the slightest, just all the data, as it should be.
site doesn’t load for me, just hangs during page load
edit: ah now it did load :) just took a while
The problem is that not all of the lines on OpenRailwayMap are currently having passenger traffic. Perfect example of that is Albania, where they had railways during communism, but it is discontinued at the moment and will be for many years.
This project tries something else. To be factual and easy to use for the average user at the same time. The information displayed on Railrouter is a bit different, because the average user want to see different type of information.
I understand that curated data is not optimal, but I do not have a community behind me and I do not expect it either. Therefore, it will be a long time before it will be up to a similar standard to OpenRailwayMap. For someone like me, I will rather use Railrouter because it is just simpler and not to technical. I am not trying to compete against OpenRailwayMap.
Instead whenever someone is critical on forums or in the internet general, I will verify the feedback and then implement it where the user will be cited as well. Corrections log: https://trainrouter.com/corrections/
Yes, different projects for different goals. OpenRailwayMap even displays the reference numbers of switches, and goes into displaying micromapped details of train stations.
For TrainRouter you could read the actual routes from GTFS. Most European transport companies publish their schedules in this format, and it contains the geometry of the routes, not just a list of stops. You can browse some GTFS feeds here: https://www.transit.land/map Another nice, free api is here: https://transitous.org/
The “shapes” file should contain the data you are looking for: https://en.wikipedia.org/wiki/GTFS#shapes
And here is me thinking I (being a railway enthusiast and an OSM contributor) would have already known this existed. :D Thanks for the link, I was previously only aware of the raster version.
There should be a heat map to show how late trains are in the routes. Canada would just be red 🤣
GTFS Realtime has that data. For Canada this site shows the delays, currently Vancouver-Toronto train is 37 minutes late: https://maps.catenarymaps.org/?page=trip&chateau=viarail&trip=111&route=8-119&start_date=20260729#map=6.2%2F50.288%2F-92
It’s just up to programmers to create a map which displays these feeds. E.g. .for Hungary we have this site which shows delays real time: https://vonatinfo.mav.hu/ Green is less than 5 minutes late, yellow 6-14 mins, orange 14-59 mins, red more than 1 hours. This is an official site, but the data is public, so 3rd parties can build around that. That’s how Gmaps knows how much a train is late.
BTW thanks for the link for OpenRailwayMap! I have not seen this version before right now:)