CityMapper is a free public transit-navigation application, designed specifically to help people navigate complex urban environments like New York City. It combines the live data for the MTA subway, buses, LIRR (Long island rail road), Metro North, ferries and the PATH (Port Authority Trans-Hudson); and allows you to instantly compare your transit options and track in real-time across all transit-modes. I evaluated CityMapper from the perspective of a first-time novice user navigating from 14th St, Manhattan all the way to 408 Lefferts Ave, Brooklyn. While CityMapper effectively communicates ideal route choices and provides continuous feedback during transit, some aspects of it’s interface create confusion between the digital interface and it’s physical environment.
1. Getting Started Is Almost Effortless

CityMapper’s onboarding (figure 1) demonstrates strong discoverability and effective signifiers. The user was immediately able to spot the clearly labelled ‘START‘, which made the next action obvious without requiring prior knowledge of the app, as the user stated. The button creates a clear affordance: its visual treatment communicates that it can be pressed to begin the experience.
The user was guided through and only asked to grant access to location services along with permission to send notifications in order to proceed forward to plan their transit via the home screen. The home screen continued this clarity, where the first thing the user noticed was the search bar labelled as “GET ME SOMEWHERE” [figure 2 (1)], which established a very understandable conceptual model of the application’s primary purpose. The app also provides the user with “GET ME HOME” or “TO WORK” shortcut [figure 2 (1)] which would reduce the need for the user to repeatedly enter a familar destination.
For a first time user, this creates a small gulf of execution, where the user’s goal is immediately translated into an obvious action. There is very little to fix here as CityMapper succeeds by making the user’s next action visible rather than requiring effort to explore further or memorize possible actions. This is especially applicable to a user that is quite used to a mental model of another navigation application they have been using daily i.e. Google Maps.
2. Route Selection : Comparing Options At a Glance

CityMapper does an excellent job of transforming the complexity of New York’s public transportation into a manageable set of choices. After entering the destination, CityMapper presented multiple route options with clear information about travel time, transport mode, ease, and total cost. This made it easy for the user to identify the fastest and most suitable option without having to compare each route manually. [figure 2 (3)]
The interface [figure 2 (3)] demonstrates good visibility because the information required to make a decision is presented immediately. CityMapper also fosters good mapping between the user’s priorities and the available route choices; if the user wants the fastest route, the interface clearly indicates which option satisfies that goal. On the other hand, the app also supports knowledge in the world by using the same colors associated with New York subway lines. For example, the 2 train is shown in red and the A/C train in blue, matching how these lines are represented in subway stations. This makes the correct line easier to recognize without requiring the user to recall it from memory. Overall CityMapper helps the user build a clear conceptual model of the available travel options to get to their destination.
This interaction worked pretty well and required little correction because the relationship or the bridge between the user’s goal and available choices was easy to understand.
3. Trip Progress: Excellent Feedback, BUT…

Once the user starts their trip, CityMapper divides the journey into smaller stages (figure 3) that can be swiped through, preventing the user from being overwhelmed by the entire journey at once, reducing the overall cognitive load through showing only the relevant information that the user needs based on where they are in their travel journey. Live train updates, remaining stops, ETA notifications, and Dynamic Island integration provide continuous feedback without requiring the user to repeatedly open the application (figure 4). The user also pointed out that the directional cursor was particularly quite reactive and effective at communicating what direction they were facing and moving in.

However, the split journey stages lacked clear signifiers for the user’s current situation [figure 3(2-6)]. The walking stage remained highlighted and accessible even though the user was past that stage and had already boarded the train. This creates a poor mapping between the user’s actual state and the state that is being represented by the interface.
This can also suggest an increase in gulf of evaluation, where after performing an action and entering the train, the user cannot immediately determine whether the app recognizes that they have progressed to the next stage.
For a fix, I would suggest a highlight in terms of a colored card for the current situation or stage the user is in. That could help the user distinguish between the current, upcoming and completed stages of their journey. CityMapper should also provide explicit feedback when the destination is reached, such as a “TRIP COMPLETE” state.
4. The Frustrating Bit: Where’s the entrance?!

The most frustrating part for the user while utilizing CityMapper was when the app directed them to the correct station but represented it’s location without clearly indicating the usable entrance. Following the map, led the user to an entrance marked “NO ENTRY“, requiring approximately five additional minutes of walking to find the correct entrance.
This represents a problem with mapping, specifically the relationship between the digital representation and the physical environment. The user’s mental model was focused on finding stations with the “2 Train”. Therefore, the station marker acted as an insufficient signifier for the action the user needed to perform. (figure 5)
The interface could also use physical constraints more effectively. A closed or inaccessible entrance is a real-world constraint that should influence the route presented digitally.
CityMapper could represent individual station entrances rather than treating the station as a single location. Labels such as “2 Train Entrance” or “Entrance closed use entrance across the street” would create more accurate mapping between the digital and physical environments and help prevent errors before they occur.
5. Additional Features: Extending the Journey Experience

CityMapper includes smaller features that add value beyond basic navigation. The app recommends the user which section of the train to board to be closer to the best and most convenient exit at the destination [figure 6(2)]. This creates a good bridge between the digital instructions and the physical journey, helping the user position themselves conveniently before they even reach their stop.
Additionally, the share trip [figure 6(1)] feature extends CityMapper’s feedback beyond the person travelling. When the user shared their late-night journey with a friend, the friend could track their progress in real time, including their current stop and updated ETA. This reduced the need to constantly check in with the user while providing an added sense of reassurance during late-night travel.
In Conclusion
From a UX perspective, CityMapper succeeds because it understands that navigating a city isn’t just about finding the shortest route, but reducing uncertainty throughout the journey. Strong signifiers, feedback, and mapping made a rather confusing transit system feel manageable, even for a first-time user. However, there were a few hurdles as well. The station entrance and trip-progress issues show how small gaps between the interface and the physical world can quickly create confusion for the user. Overall, CityMapper demonstrates that good navigation design is not only about providing the right information, but providing it at the right moment and ensuring it accurately reflects what the user is experiencing in the real world.
