Building a 1920s travel network for tabletop roleplaying, and what we got wrong on the way.
I used to hand-wave travel in my 1920s games. “You board a ship, three weeks later you’re in Cairo.” When I wanted something better, I’d lose an evening in Photoshop making a ticket that never quite looked right.
So we built Passage, a free tool that generates period-accurate 1920s travel documents. You give it a departure, a destination and a date between 1920 and 1939, and it prints the papers: a steamship ticket for every company on the route, the itinerary, a baggage label, a landing card, a passenger list.
This post is about how 1920s travel actually worked, because researching it changed what we built three times.
Did ocean liners sail on demand?
No, and this was the first thing we had to unlearn.
A liner ran a fixed itinerary on a repeating schedule, like a bus route. Southampton, Gibraltar, Marseille, Port Said, Aden, Bombay, leaving every Thursday. A passenger boarded at one stop and disembarked at another, staying aboard the same vessel for everything in between.
That matters because a ticket names one ship. Our first model stored pairs of ports with a distance between them and let the engine chain them together. It computed a correct total duration and produced nonsense: a passenger changing vessel three times to cross the Mediterranean.
So the data is not pairs of ports. It is whole routes, with their ports of call and their sailing days.
The payoff is the part people notice. Ask Passage for 12 March 1925 and it tells you the next sailing leaves on Thursday the 14th. That is what a booking clerk would have told you, and no other tool does it.

Why can’t you calculate sea distances from a map?
Because two ports 3,000 km apart as the crow flies are not 3,000 km apart by sea. Ships go around continents rather than through them.
There is no clever solution. We entered the distances by hand, in nautical miles, between adjacent calls on each route. A few dozen numbers, taken from period shipping references, correct once and correct forever. Building a maritime routing engine would have been weeks of work to produce something worse.
The Suez and Panama canals are handled separately, because a transit takes its own time regardless of distance. It also happens to be one of the better moments in a campaign, so the ticket says so.
What were the passenger classes on a 1920s ocean liner?
Here is the detail that tells you whether a tool was built by someone paying attention.
Passenger class naming shifted during exactly the period we cover. Steerage gave way to third class through the 1920s. Tourist third cabin appeared mid-decade on the North Atlantic, effectively invented to fill berths emptied by American immigration restrictions.
So the available classes, and what they are called, depend on the year and the route. A 1921 ticket and a 1932 ticket to the same port do not offer the same thing.
This is about three lines of code and a table. It is also the kind of detail a knowledgeable player spots in half a second.
How much did a 1920s steamship ticket cost?
Our first approach was a fare grid per currency. That is wrong by construction, and the reason is the French franc.
The franc lost roughly four fifths of its value between 1920 and 1926, before the Poincaré stabilisation. Meanwhile sterling returned to gold at its pre-war parity in 1925. Any fixed relationship between the two is false somewhere inside our window, sometimes by a factor of four.
So Passage holds one fare grid in sterling and a table of annual exchange rates. Fares come out in pounds, dollars, francs, lire or guilders at that year’s rate, and the year is doing real work rather than decorating the document.
Why are the shipping companies fictional?
Several historical lines are still live trademarks. Cunard trades today. White Star has been revived. P&O exists.
Trademark protection does not follow the copyright public domain calendar, so a ticket carrying a real house flag is a different legal question from one carrying a 1925 typeface. We chose not to find out the hard way.
Every line in Passage is fictional and modelled on a real one, with its own name, house flag and route family. Twenty-seven companies running 139 vessels. Each ship carries a service period, so it can never appear on a ticket dated before it was launched.
If you want your own line, you can rename it and upload your own flag. Most Keepers do.
Does it cover Masks of Nyarlathotep?
Yes, and this was a design target rather than an accident.
Masks of Nyarlathotep is the most played globe-trotting campaign in Call of Cthulhu, and travel is its skeleton. New York, London, Cairo, Nairobi, Shanghai, Australia, and Peru in later editions. Keepers routinely spend hours working out how long each leg takes and what it costs, because the campaign moves at the players’ pace and the Keeper is expected to know.
Every port in that itinerary is in the network. Generate the legs and the campaign’s travel comes out as documents your players can hold.
The same applies to Horror on the Orient Express, where the Simplon-Orient-Express is in the network as a named service with its own ticket.
And Arkham, Innsmouth, Kingsport and Dunwich sail from Boston, because of course they do.

Is any of this AI-generated?
No. There is no generative AI anywhere in this tool, and that is a studio-wide position rather than a marketing line.
The network was researched and entered by hand, from period timetables and shipping registers. The documents are computed from that data, not written by a model imitating what a ticket sounds like.
That distinction is the whole point. Other handout tools give you a blank template and you type the text. Passage works out what must be on the document: which sailing, which vessel, how many days, how much, in what currency, under which class name for that year. A language model cannot do that, because it requires actually knowing the route.
It also means the same inputs always produce the same document. A shared link rebuilds it exactly, which is why sharing is a link rather than a file.
What’s in the network?
- 87 places, ports and inland cities with boat trains to the quay
- 27 fictional shipping and rail companies, each modelled on a real one
- 139 vessels: steamers, named expresses, aeroplanes and one airship line
- Fixed sailing days, ports of call, night stops, Suez and Panama transits
- Fares in pounds, dollars, francs, lire and guilders at each year’s rate
- Class names that shift across the decade
- 1920 to 1939
Try to break it
Generating, downloading and sharing are free and need no account. Documents export as PNG for your virtual tabletop, and every result has a permanent link that rebuilds it exactly. The interface is in English and French.
The most useful thing you can do is find a journey the network cannot handle. There are gaps, and I would rather hear about them.
