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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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