Skip to content
Aditya Aryan, home

01 / live demo / 496 stations / 26 routes / live trains

The whole system, and the one event it never reports.

The MTA’s live data never says when a train arrives. A train that reaches a platform just stops being listed for it. This page shows that happening, on real trains, right now.

Live, from the MTA’s own feeds

Loading the network…

02 / one line, up close

Now watch one arrival happen.

This is one line, right now: whichever one you picked with the line buttons above, or the L if you haven’t picked one. The table shows when the MTA expects a train at its next stops, refreshed every 30 seconds. When the train reaches a platform, that stop drops off its list. That’s the arrival. Nothing here is recorded or simulated.

Starting the line…

What you are looking at.

  1. 01

    These are real trains

    The page reads the MTA's live data and refreshes every 30 seconds: every line on the map, and the one you picked in the table.

  2. 02

    Pick a line, and the close-up follows

    Switch a line on with the buttons above the map and the section below it changes to that line: its stations, its trains, its arrivals. Switch several on and it follows the last one. With every line showing, it shows the L.

  3. 03

    A train between stations is a best guess

    The MTA says which stop a train is heading for and when it expects to get there. It never says where the train is. So each train is placed from that prediction.

  4. 04

    An arrival is a stop disappearing

    When a train passes a platform, that stop leaves its list, and the last time it was predicted is taken as the arrival. If it disappears while still more than two minutes away, it was cancelled, so it doesn't count.

  5. 05

    Then it becomes waiting time

    Arrivals give the gaps between trains, and the gaps give how long a rider waits. Bunched trains make the wait worse even when the average gap looks fine.

  6. 06

    How I know it's right

    Nobody publishes when a train really arrived, so I test the method on made-up data where the answer is known.

The eight feeds this reads from.

The MTA splits the subway into eight live feeds, grouped by line. They’re open to anyone, with no password.

  • gtfs1 · 2 · 3 · 4 · 5 · 6 · 7 · S
  • gtfs-aceA · C · E
  • gtfs-bdfmB · D · F · M
  • gtfs-gG
  • gtfs-jzJ · Z
  • gtfs-nqrwN · Q · R · W
  • gtfs-lL
  • gtfs-siSIR

Read the case studySee the six stepsBack to selected work