Transit Agency Apps Suck!

When you want to try public transit, do you find the official apps frustrating? This article examines a San Francisco Bay Area transit app that has trouble finding the agency's own stations!
Sorry to be blunt, but official apps from public transit agencies like BART (which I'll cover today) and AC Transit (next time) have terrible user interfaces. As a software engineer, I am ashamed of this category of software. If I get frustrated as a lifelong transit rider, I can only imagine what it's like for an occasional rider — a visitor, someone new to the area, a person whose car is in the shop, or a concertgoer trying to get home safely without paying a rideshare service's "surge" price.
The Airport Test
Figuring out how to get into town from the airport is the fundamental usability test for any big-city public transit agency's app. The San Francisco Bay Area Rapid Transit District's official app fails miserably.
BART is a state special district that serves three member counties (including the City and County of San Francisco, which owns SFO) and two non-member counties (including San Mateo County, where SFO is located).
First, let me point out that this usability test simulates a planning task, done before you leave your home city. If the app tries to preselect the nearest station or show it on a local map, geolocation won't work.
If you tap "Plan Trip" and type sfo
in the A (origin) field (whose help text reads, "Enter Location or Select Station"), the BART app suggests four bus stops, the automated people mover station at the rental car center, two parking garages, and a luxury hotel — everything except the agency's own airport train station!
What Is My Terminal? Does It Exist? Where Am I Going?
The top four search results are near public transit bus or shuttle bus stops for "Terminals" A, G, 2 and 3. Terminal 1 is inexplicably missing. The International Terminal is hidden, because an automated data conversion process, or a consultant who has never been to the airport, thought that "A" and "G" were terminals. In fact, these letters represent the two ends of the International Terminal. The distinction matters to a visitor. Flight reservations, itineraries, and electronic ticket receipts, generated weeks in advance, rarely mention the arrival terminal. Your boarding pass, generated up to 24 hours before your flight, might not mention a tentative arrival gate like A10; it might mention the International Terminal without specifying the A or G end.
If you are sure of your arrival location and you choose one of the top four search results, BART's app will give you directions starting from the ground level of the airport. You'll see the dark, cold, noisy exterior level, hemmed in by overpasses, parking garages, etc. Think of the workers' city in the film Metropolis.
I'm Riding BART, Not Renting a Car!
The app's fifth recommendation is the "SFO Rental Car Center Airtrain Station". Airtrain gives you hope that you've found the train to the City, but in fact it's the automated people mover that circles the airport. Why would you be interested in the rental car center, anyway, if you're using a public transit app?
Just Walk Across the Highway!
If the top five search results don't seem quite right, the sixth, "San Francisco International Airport", sounds general enough that it might be the train station. If you choose this, the app gives you directions from the middle of the sweeping curb in front of the International Terminal lobby. At least this is the nicer exterior level of the airport; think of the futuristic skyline in Metropolis.
The map view is a real piece of work! As mentioned, the International Terminal has two ends, A and G. The trip planner uses a Point A to Point B metaphor. So, your point of origin, labeled A, appears half-way between the ends of the terminal, one of which is also A. To add insult to injury, BART's official app will direct you to walk across the highway instead of staying inside the terminal.
I'm Riding BART, Not Sleeping at the Airport!
The best rate I could find at the SFO Grand Hyatt hotel was $352 per night, in mid-January (low season). Why does BART's official app list an expensive airport hotel in seventh place when you type sfo
in the trip planner? Is it a paid placement, a suggestion of where to go if your flight is delayed and you miss the last train to the City, which departs at the unreasonably early hour of midnight?
Public transit buses still serve SFO 24 hours a day, but occasional transit riders have little hope of figuring out how to use this service. Only airport workers, and those of us who were accustomed to taking transit before the BART extension opened in 2003, know how it works.
I'm Riding BART, Not Retrieving My Parked Car!
BART's SFO extension was over-budget, over-built, never came close to meeting ridership projections, and now never will. In fairness, the planned level of service was never operated, service cuts on the extension have accumulated over the years, and the service pattern (where trains originate, whether they serve the airport first or second, and whether you have to switch trains on the way) has been changed every few years. Planners could not have foreseen September 11th, the Great Recession, or the COVID-19 pandemic, each of which depressed underlying demand.
If you're not a public transit rider, the SFO extension is a boon because BART provides discounted, police-patrolled parking, one stop away from the airport! For less than $8 per weekday (weekends and holidays free), you can park for almost a month. BART's garage at Millbrae Station is so big that it never fills up. For comparison purposes, $24 per day is the cheapest (long-term) rate for airport-operated parking.
I digress. You're visiting. Why does the BART app suggest airport-operated parking garages as the eighth and ninth options when you try to plan a train trip from sfo
to San Francisco? You want to ride public transit, not drive! If the app must suggest parking garages, why the airport-operated ones instead of BART's own nearby garage?
San Francisco International Airport Isn't in San Francisco!
The tenth and final suggestion when you type sfo
in the trip planner of BART's official app is named "Sfo, San Francisco". Maybe this is the train station you've been looking for. Nope, this entry is a mistake. On the map, it's an arbitrary point in the Hayes Valley neighborhood of San Francisco! It's neither a BART station nor an airport.
If at First You Don't Succeed, Try, Try Again
sfo
seemed like the most logical search term, but since it's wrong, you try airport
next. This yields ten intersections near public transit bus stops. None is on the airport property, and none is walkable unless you want to cross another highway. The last intersection is near the tiny Santa Rosa airport, in a county not even served by BART.
If your trip starts or ends at a BART station (this is BART's official app, after all), the trip planner only recognizes official station names. The official names of BART's two airport stations are San Francisco International Airport BART Station
and Oakland International Airport BART Station
. You'll only find the SFO BART station in the trip planner if you type international air[port]
or airport bar[t]
, either of which ranks OAK ahead of SFO even though OAK is smaller. san fran[cisco]
also works, although it matches the BART station at the airport, which isn't in San Francisco, and will not match any of the BART stations in San Francisco (your destination, for this usability test).
Why Transit Agency Apps Suck
Explaining transportation offerings is an information design problem, incorrectly reduced to a general programming or procurement problem.
A competent worker in this field understands:
-
The domain:
- How often do the transportation services run?
- What connections are feasible?
- How are the stops and connection points laid out?
- What visual and auditory clues allow people to find the intended route, direction, stop, platform, etc.? (In other words, how will the brain match writing on a screen with objects in the physical world?)
-
Human abilities:
- Visual processing
- Auditory processing
- Cognition
- Working memory
-
Computer programming
-
Æsthetics (This is optional, but can't hurt.)
This combination of skills is hard to find. Most transit agencies don't have enough work to employ such experts continuously. The work happens project by project, when a new line is about to open or an existing information system has to be replaced. When cellular telephone carriers shut down 2G data service, for example, San Francisco Municipal Railway information signs abruptly stopped working. Muni had to call vendor personnel ("Inside the Muni NextBus meltdown: Emails reveal what could have averted crisis", Joe Fitzgerald Rodriguez, San Francisco Examiner, January 17, 2017).
Transit agencies do employ a few software workers. By necessity these scarce workers rotate between different systems, perhaps writing a custom payroll report one month, adding capabilities to the vehicle maintenance tracker the next month, and then tinkering with the inputs to the schedule optimization software at the end of the quarter.
Transit agencies don't pay competitive wages for software work. If they did, resident software developers and information technology experts would earn almost as much as the general manager! The job is either a labor of love or a last resort. "Well, what do you expect for six dollars?" quips Professor Nucleus von Fission to Kermit ("The Six Dollar Man", Sesame Street, Children's Television Workshop, 1976, via YouTube, 02:48).
Quality also suffers if a transit agency contracts-out mobile app development. The bidding process is likely to be strict, but usability is not likely to be among the scoring criteria. In institutional procurement, "The selection is almost always based on price plus a list of required features. Usability? Not considered. [...] There are no requirements regarding understandability or usability of the product, even though in the end those aspects of the product can end up costing the company a lot of money in wasted time [...] and lower productivity" (The Design of Everyday Things, Don Norman, Basic Books, 2013, p. 241).
Let me be clear: a diligent developer could have produced a usable trip planner for BART even with no knowledge of public transit or of BART's stations. Examining the search log (now called "telemetry" or "analytics" to make it sound sophisticated) one week after launch would have done the trick. Cases where a user immediately tries a new search instead of selecting a recommended result are failed searches. They reveal chains of synonyms, like sfo
≈ airport
≈ san francisco international airport bart station
. It's easy to add synonyms to a full-text search dictionary. Similarly, if you don't know anything about the subject matter, it's safe to assume that users are selecting the best search results. It's easy to override the rankings of a small subset of the universe of all search results. The 50 most popular search results probably are BART's 50 stations.
BART's trip planner was tested to show that it generates trip plans, doesn't crash, etc. (features). Clearly, it was not tested to see whether it prioritizes the agency's own train stations (usability).
When the Santa Clara Valley Transportation Agency sought a new supplier of cakes for office parties, at least they tasted the cakes first ("Let transit agency eat cake, or maybe not", Barry Witt, East Bay Times, February 1, 2007).
What is your favorite public transit app? Tell people about it by commenting on the LinkedIn version of this article!
I tested BART's official app and captured the screen shots in July, 2025. The app has been this way for years, but maybe BART will fix it someday.