Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Public Transport Falsehoods

Falsehoods programmers believe in about public transportation.

This collection was inspired by other falsehood collections - curated lists of falsehoods programmers believe in.


With some experience in reviewing or writing public transport APIs and working with data coming from a variety of public transport operators, one comes to experience the wild west of edge cases.

This list aims to raise awareness for some of these quirks both with newcomers as well as people who already spent some time thinking about public transportation - there is always something weird you didn't see yet, after all!

If you know of any falsehoods that are not included below, you're very much encouraged to contribute, have a look at the contributing section of this page!


  • Most examples from this list originate somewhere around Berlin, which happens to be where @juliuste lives. If you add any points to this list, you're encouraged to use other places as examples as well!

  • The naming in this list (e.g. what is a station, a stop, a journey, etc.) is very much influenced by the naming in the friendly public transport format, you might want to spend a look at its docs.

  • Most points will have some sort of counter-example for an assumption. Note that even if there might just be one counter-example listed, there will probably be a lot more, so you shouldn't just manually hard-code exceptions for the listed ones and expect things to be fine again

Falsehood list

  1. A vehicle on a specific trip doesn't stop at the same stop or station more than once.

    Counter-example: Trips with some sort of circular structure, e.g. on Berlin's circle line

  2. A vehicle on a specific trip doesn't stop at the same station twice or more in a row.

    Counter-example: Berlin's Naturkundemuseum station where trams stop at two stops on the same street corner - that belong to the same station and have the same name - consecutively.

  3. Vehicles never change their direction sign/headsign in the middle of a trip.

    Counter-example: Changing the headsign is quite common in trips that run via some important hub in a city, e.g. on a line with route A → Main station → B, the headsign will often be Main station on the first part and B on the second part of the trip.

  4. Vehicles never change the line name in the middle of a trip.

    Counter-example: This happens quite frequently for international trains crossing borders.

  5. A line always has at least two routes ("directions").

    Counter-example: One-way circular lines.

  6. A line always has a number.

    Counter-example: Paris' RER A-E

  7. Okay then, a line always has a number and/or a letter.

    Counter-example: London's tube lines

  8. OKAY, a line always has some clearly defined name.

    Counter-example: Most long-distance connections have lines that don't have an explicit name. There are high speed trains going from Berlin to Munich every hour, which can be seen as one line, but that line doesn't really have a name passengers would clearly identify it with.

  9. Official station names are unique in their local transit system.

    Counter-example: Singapore's bus services 57 (direction 2) and 317, which both stop at stations named "Opp Blk 1", referring to completely separate appartment blocks with the number 1.

  10. The geographical path of a route never self-intersects.

    Counter-example: Singapore's Downtown Line, which also doesn't have a station at the location where it self-intersects.

  11. probably many more falsehoods waiting to be added here…


If you know of any other falsehoods not included in the list, you're very much encouraged to contribute, feel free to send a pull request or leave us a hint at the issues page! Note that, by participating in this project, you commit to the code of conduct.


Falsehoods programmers believe in about public transportation.


Code of conduct





No releases published


No packages published