Subway slow zones
Every stretch of the subway where trains ran well over their usual time for days on end, since 2022, with what it cost riders.
- Rows
- 10,442
- Size
- 254 KB
- Covers
- Zones starting 2022-01-01 or later
- Updated
- Nightly
- Source
- Built from subway segment times; riders from MTA origin-destination estimates
- License
- CC BY 4.0
https://data.transitlab.nyc/v1/subway_slow_zones.parquetRows and size from catalog.json, 2026-10-06.
What a row is
Section titled “What a row is”One episode on one segment: a run of four or more weekdays in a row when trains took at least 10% and 10 seconds longer than usual (one ordinary day inside the run is allowed). “Usual” is a good typical day: the 10th percentile of the previous 120 weekdays of subway segment times.
Not every episode is a slow order on the track. The kind column sorts them:
kind | What it means |
|---|---|
slow zone | Median extra time up to 2 minutes and 150%. Most likely a speed restriction or work nearby. The site shows only these. |
disruption | More extra time than that: reroutes, skipped stops, shuttles. |
service change | The routes using the segment changed, or the segment is new. |
system-wide change | 15 or more episodes started the same day: a timetable change or a network-wide event. |
The full method, and how we checked it against the news, is in Subway slow zones.
Query it
Section titled “Query it”-- Rider-hours lost to slow zones, by the year each zone startedSELECT year(start_date) AS year, count(*) AS zones, round(sum(rider_hours_lost)) AS rider_hours_lostFROM 'https://data.transitlab.nyc/v1/subway_slow_zones.parquet'WHERE kind = 'slow zone'GROUP BY yearORDER BY year;Columns
Section titled “Columns”a_stopvarcharGTFS stop ID where the segment starts.
b_stopvarcharGTFS stop ID where it ends.
segmentvarcharReadable name, e.g. Queensboro Plaza → 60 St tunnel.
routesvarcharRoutes running through it during the zone, space-separated.
start_datedateFirst slow weekday.
end_datedateLast slow weekday. Recent zones may still be going.
slow_daysbigintSlow weekdays in the zone.
baseline_sdoubleUsual time in seconds: 10th percentile of the previous 120 weekdays.
extra_s_mediandoubleMedian extra seconds per train over the baseline.
extra_s_maxdoubleWorst day's extra seconds.
extra_pctdoubleextra_s_median as a percentage of baseline_s.
trains_per_daybigintTypical trains a weekday, 6:00 to 21:59.
train_hours_lostdoubleExtra seconds × trains, summed over the zone, in hours.
riders_per_weekdaybigintRiders passing through on a typical 2025 weekday daytime.
rider_hours_lostbigintExtra seconds × riders, summed over the zone, in hours.
usual_routesvarcharRoutes on the segment in the 60 weekdays before.
kindvarcharslow zone, disruption, service change or system-wide change. The site shows only slow zone.
Good to know
Section titled “Good to know”- One stretch of slow track shows up as several rows, one per segment and direction.
- Run time includes the stop. A segment can look slow because platforms got busier, not because of a speed restriction.
- Rider counts are 2025 averages, routed along the fastest path, which sends too many riders to express lines.
- Zones from 2021 are left out. Baselines from near-empty pandemic trains made the 2021 return of riders look like slow zones.
- The MTA doesn’t publish its speed restrictions, so this is an outside estimate, not a copy of an official list.