Access · New York City

The 45-minute city

Click anywhere. The map shows every street you can reach from that spot by subway, bus, taxi, bike or foot, using published schedules, the city's street network and measured traffic, including the wait for the train, the bus or the car.

This map was built with heavy use of an AI coding assistant. The travel times come from published Metropolitan Transportation Authority schedules and the street network comes from the city's own centerline file, but the code that stitches them together was largely machine-written and may contain errors. Treat it as a research sketch, not a trip planner. The methodology note explains exactly what is measured and what is assumed.

Methodology

This map answers one question: from a given spot in New York City, which streets can you reach inside a time budget? Every travel time below is computed from published schedules and the city's street geometry. No travel time is hand-tuned.

Where the numbers come from

InputSource
Subway timesMTA GTFS static feed, gtfs_subway.zip
Bus timesMTA GTFS static feeds for all five boroughs plus MTA Bus Company
Staten Island FerryNYC Department of Transportation GTFS, via NYC Open Data
NYC FerryOperator GTFS (Astoria, East River, South Brooklyn, Rockaway, Soundview, Governors Island, St. George)
PATHPort Authority Trans-Hudson GTFS
New Jersey streetsOpenStreetMap, PATH corridor only
StreetsNYC Open Data Centerline (CSCL), including posted speeds and one-way directions
Taxi calibrationTLC yellow-cab trip records (March 2026) + NYC taxi zones

Ride times

For every pair of consecutive stops on every route, we take all scheduled trips in a time band and compute the median of departure-from-A to arrival-at-B. That median of timetable rows is the ride time.

As a check, dividing straight-line distance by these times gives a median implied speed of 7.4 mph for buses and 15.1 mph for the subway. Those are lower bounds, since track and street distance always exceed straight-line distance. New York City buses average roughly 7 to 8 mph citywide, so the bus figure lands where it should. No segment implies a bus faster than 45 mph.

Express buses

New York's 79 express routes — the SIM, BM, BxM, QM and X families — are included. They are the fast, limited-stop, one-seat rides that carry Staten Island and the far outer boroughs to Manhattan over the highways. They are treated as buses, which they are. Two caveats: they run mostly at the peak (about 2,500 express segments in the weekday morning band against 1,180 overnight, so a midday map correctly shows far less), and they cost $7.25 against $3.00 for a local bus or the subway. This map does not model fares, so express and local reach look identical even though a Staten Island rush-hour "bus" isochrone leans heavily on premium express service, which commuters use daily at more than twice the $3.00 fare the color implies.

Waiting

For each stop, route and direction, we count scheduled departures in the time band and divide the band length by that count to get a headway. The wait is half the headway — the average for a rider who turns up without consulting a timetable.

Direction matters: a rider going uptown gains nothing from downtown trains. Counting both directions at one station would halve every subway wait, so departures are counted per direction.

You pay a wait when you board, and riding onward is free. A model that charged a wait at every stop would bill you thirty waits down Lexington Avenue.

The "longest wait you'd accept" slider caps this. At 20 minutes, an hourly bus contributes a 20-minute wait rather than 30, which is roughly how people behave with infrequent service: they consult the schedule instead of turning up blind.

Taxi

Cars are routed on a directed version of the same street network — one-way streets are honored, and highways, bridges, tunnels and ramps are included — at each segment's posted speed limit. Posted limits are a ceiling, so we slow them by a factor measured from real trips: a month of Taxi and Limousine Commission yellow-cab records (roughly 64,000 to 77,000 usable trips per time band, March 2026), each compared against the same zone-to-zone journey routed at posted speeds.

The factor is measured per borough from 11.9 million non-shared Uber and Lyft trips, because one citywide number made Manhattan look faster and the outer boroughs slower than they are: at weekday midday Manhattan moves at 35% of posted limits (a 25 mph street is really an 8.8 mph street) while Queens moves at 47% and Staten Island at 68%. The cab also pays a measured pickup wait — about 4 minutes, the median request-to-pickup gap across every trip — because the train pays its platform wait and a fair race starts both clocks at the same moment.

Traffic is a control: Light, Typical and Heavy are the 25th-percentile, median and 75th-percentile real trip for that borough and hour. From Washington Square at the morning rush a cab reaches 7,207 km of street in light traffic and 2,105 in heavy — a 3.4-fold swing — while the train's reach does not move at all, because the train runs on its schedule regardless of traffic.

The "Train vs cab" view colors every street by which door-to-door trip wins from your origin. The train's territory is the express spines; the cab's is the near field, the space between lines and everywhere the train cannot go in time. At 3am the train's territory nearly vanishes. In heavy morning traffic it inverts: the train wins 1,371 km against the cab's 626.

Two caveats. Yellow-cab trips skew heavily toward Manhattan, so the factor mostly describes Manhattan streets; outer-borough driving is somewhat faster than this map shows. And one factor per time band compresses the difference between a jammed crosstown street and a flowing expressway, so highway-heavy trips — to the airports especially — read slower than reality. Both errors run the same way: the taxi map is conservative. And any single ride varies enormously; the interquartile range of the calibration is reported in the data files.

PATH, and why not the commuter railroads

PATH is here. The Long Island Rail Road, Metro-North and New Jersey Transit are not. What separates them is whether this map's wait model describes the service accurately.

The map assumes you turn up without checking a timetable and wait, on average, half the gap between trains. That describes how people use frequent service and misdescribes how they use infrequent service: nobody strolls to a station hoping to catch a train that comes once an hour. So the test for any railroad is whether riders turn up and go.

At the morning rush, PATH's combined headway is 3.0 minutes and the map's 20-minute wait cap binds at none of its stations. The Long Island Rail Road's median is 60 minutes, and the cap binds at 60% of its stops. PATH is a subway that happens to cross a river; the map describes it as accurately as it describes the L. The railroads are a different kind of thing, and modelling them this way would invent a 20-minute wait where a commuter with a watch waits three. Including them properly would mean rebuilding the router to search timetables rather than frequencies. That is worth doing, and a much bigger job than adding a feed.

Fares point the same way. Inside the city the local subway and bus fare is a flat $3.00 and PATH is close to it, so ignoring fares is mostly defensible — the one exception is the express bus at $7.25, noted above. "Ronkonkoma in 45 minutes" is true and misleading at $18.

PATH adds seven routes and 13 stations, and with them the west bank of the Hudson: Newark, Harrison, Journal Square, Grove Street, Exchange Place, Newport and Hoboken. From Hoboken at the morning rush the World Trade Center is 21 minutes away, Times Square 26. Those stations needed streets to arrive on, so the walkable network for the PATH corridor comes from OpenStreetMap. Walking still cannot cross the Hudson — from Hoboken the walk network reaches zero nodes in Manhattan, which is correct — and PATH links the banks in the transit graph, exactly as the ferry links St George to Whitehall.

Taxi/Uber deliberately stops at the city line. Its speeds come from 11.9 million measured taxi trips, and the Taxi and Limousine Commission regulates New York City vehicles only. There is no equivalent free record of what traffic does on the New Jersey Turnpike, and routing cars over New Jersey at posted speed limits would imply free-flowing highways on exactly the trip where congestion decides everything. The New Jersey streets here are for walking to a PATH station.

One caveat: the only PATH feed published is from June 2025 and its validity window has expired. Its schedule is stable and it is the only GTFS PATH offers, but it is the least current input in this map. Everything else is inside its validity window.

Ferries

Both systems are in, from three separate feeds, none of them the Metropolitan Transportation Authority's — which is why an earlier version of this map had no boats at all. NYC Ferry adds seven routes and 25 landings: Astoria, East River, South Brooklyn, Rockaway, Rockaway-Soundview, Governors Island and St. George. Its feed also contains the free Rockaway shuttle buses, so each route's type is read from the feed rather than assumed, and those 17 stops are counted as bus stops, not ferry landings.

The headways come straight from the schedules: the East River route runs every 12 to 26 minutes at the morning peak, but Astoria and South Brooklyn run every 36 to 45. From Red Hook the ferry reaches Wall Street in 41 minutes — most of that is waiting for a boat that comes every 45. The Staten Island Railway was already here, arriving inside the subway feed as route SIR, all 21 stations from Tottenville to St George.

The Staten Island Ferry

The ferry is included, and it carries more weight than any other single line here. It is run by the Department of Transportation rather than the Metropolitan Transportation Authority, so it lives in its own feed and is easy to miss — an earlier version of this map missed it, and the result was that Staten Island could not reach a single Manhattan subway station in an hour. The borough has 29 express bus routes over the Verrazzano, but on the schedules none of them does that trip in the time. That cut a borough of half a million people off from Manhattan.

The feed gives the scheduled 25-minute crossing and headways: every 18 minutes at rush hour, every 30 midday and overnight. From St George that works out to Whitehall in 34 minutes, South Ferry station at 39, Times Square at 60. Both terminals are accessible, so the ferry stays available with accessible transit switched on. Walking still cannot leave Staten Island, which is correct — there is no pedestrian path across the Verrazzano.

Accessibility

The "I require accessible transit" toggle limits subway boarding and exiting to the Metropolitan Transportation Authority's listed accessible stations — 171 of 496, per the MTA's own station file — while trains still ride through the rest. PATH is included too: nine of its thirteen stations are elevator-accessible (Newark, Harrison, Journal Square, Grove Street, Exchange Place, Newport, Hoboken, 33rd Street and World Trade Center, per the Port Authority), so Jersey City and Newark stay on the map for accessible-transit riders; the four Sixth Avenue stops in Manhattan are not accessible. Every bus has a ramp. Walking routes on the street network minus step streets. Taxi/Uber becomes a wheelchair-accessible vehicle, with a measured wait: the Taxi and Limousine Commission logs a request and pickup timestamp for every Uber and Lyft trip, and the median request-to-pickup gap for accessible-vehicle requests in March 2026 runs 7 to 8 minutes by time of day, against about 4 for standard cars.

Access-A-Ride is deliberately absent: it books by 5pm the previous day, so it cannot appear in a map of where you can go from here, now.

One caveat: the map treats every listed accessible station as accessible all the time. In reality elevators break down, and a station's only elevator being out of service makes it inaccessible until it is fixed. The accessible reach shown here is therefore a best case — every elevator working at once. The Metropolitan Transportation Authority publishes live elevator and escalator status; on a real trip, check it.

Bridges

The city's centerline file types car-only expressway decks as bridges alongside walkable crossings. Every major crossing with pedestrian access has dedicated path segments in the file (the Brooklyn Bridge promenade, the George Washington Bridge path), so same-named roadway decks are excluded from walking and biking; local drawbridges whose sidewalks live on the roadway stay. Staten Island, which has no pedestrian crossing, stands as its own walk network rather than being deleted for not touching the mainland's.

Walking and cycling

Both are routed on the street network — 199,859 nodes and 267,515 segments from the city centerline file. Walking uses streets, bridges, boardwalks, paths, step streets and alleys. Cycling uses the same minus step streets, which are stairs. Both exclude highways, ramps, driveways and ferry routes.

Default speeds are 3.1 mph walking and 8.9 mph cycling; both are sliders, so you can set your own.

An earlier version of this map assumed walking distance was always 1.4 times straight-line distance. We measured that: routing 2,395 random origin and destination pairs on the street network gives a median ratio of 1.31, with a range from 1.13 to 1.73. No single constant fits that range, so this version routes the network instead of applying a factor.

What this does not model

Confidence

Ride times and headways: high confidence, straight from published schedules. Street routing: high confidence. Walking and cycling speeds: assumptions, exposed as sliders. Waiting model: standard practice, and deliberately conservative. The gap between this map and reality is mostly delay, and it runs in one direction: the city is slower than this map.

Rebuilding the data

Run pipeline/build_transit.py, then build_streets.py, build_link.py, build_car.py, calibrate_taxi.py and pack.py. Each downloads from source and writes to data/. pipeline/validate.py runs the speed and headway checks quoted above.

Loading the city