The D Line Is Not a Single Service
The D train changes its routing based on the time of day, and most people do not realize this until they are standing on the wrong platform. During weekday morning rush, the D runs as Sixth Avenue Express from Bay Ridge through Manhattan to East 179th Street. Between roughly 9:30 PM and 6 AM, it operates as Broadway Local, meaning it uses a completely different set of platforms at stations like 59th Street, 42nd Street, and Times Square. After midnight on weekends, it becomes Eighth Avenue Local and stops at every station from 59th down to Bay Ridge. This is not a formal document you download. The MTA publishes a static PDF timetable, but it is almost useless for real navigation because it does not reflect shuttle service, temporary reroutes, or the kind of midday service changes that happen when there is construction or signal work. The weekday morning schedule shows 2-to-4-minute headways between trains. By late night, those gaps stretch to 12-to-20 minutes, and bunching becomes a regular problem where two trains arrive together and then you wait the better part of a quarter hour for the next one. There is also a consistent mid-morning gap around 9 AM when service slows to roughly 6-to-8-minute intervals. The MTA does not advertise this well. It is just something you notice if you ride regularly.
The D line has a well-known bunching pattern on the Upper West Side, particularly between 72nd and 96th Streets. Two trains will often arrive within a minute of each other, followed by a wait of 10 or 12 minutes for the next one. This happens because of dwell time accumulation downtown, where the train picks up enough extra time at crowded stations that it falls out of sync with the schedule. The workaround is simple: do not get on the first train that arrives if the one behind it is noticeably less crowded. Wait 90 seconds. I ran into this problem head-on during the Astoria Extension construction in 2024. The D was running as a shuttle terminating at 96th Street instead of continuing to 125th Street. I was on a train heading uptown with no indication that it would terminate early. The announcement came too late. I had to transfer to a shuttle bus at 96th Street, which I did not know existed until I was standing on the platform reading a poorly placed sign. The workaround I use now is checking the MTA Service Advisory page directly before any trip during known construction periods. Third-party apps lag behind or miss these announcements entirely. The MTA site updates in near real time, and shuttle routes are posted there first. The MTA timetable PDF is available through the official MTA website under the Maps and Schedules section. It gives you the baseline schedule, but treat it as a starting point, not the truth. If you want real-time information, the MYmta app is the only tool that consistently works. It shows which cars have working doors, which helps you position yourself on the platform before the train arrives. I have missed trains because I was standing at a car with a broken door and a packed crowd blocking the exit. The app tells you which cars are open.
Another thing the schedule does not tell you is how the D interacts with the C train. On certain weekdays, the C runs express while the D runs local between West 4th Street and 14th Street, and the crossover arrangements mean you can end up on a train that makes more stops than expected. If you see a D train displaying "Local" on its destination sign during peak hours, it is not a mistake. It is running a modified service pattern. The Upper West Side stations on the D line have a quirk that catches people off guard. The express and local platforms at 72nd, 86th, and 96th Streets are stacked, with the local tracks on the lower level and express on the upper level. During late-night Broadway Local service, the D uses the local tracks. If you are coming from the uptown express platform, you will need to go down one flight of stairs to find your train. People routinely walk the wrong way and miss their ride. At Union Square, the D train stops on the upper level while the N, Q, R, and W stop on the lower level. The cross-platform transfer is not direct. You have to walk up or down a flight of stairs and cross a narrow hallway. During rush hour, this transfer can take 5 to 7 minutes because of the crowd density. If you are transferring from the D to the N or Q, consider whether walking to the street and using the sidewalk, or transferring at a different station like 14th Street, might actually be faster. It sounds backwards, but it is often the case.
Get the Full Details

The D line terminates at different points depending on the disruption. The normal northern terminus is East 179th Street, but during weekday late-night service it sometimes terminates at 167th Street or 145th Street. The southern terminus is Bay Ridge–95th Street, though during weekend construction it has been known to terminate at Broad Street or Frank Avenue. The timetable will not warn you about these short turns. The train's destination sign is your only reliable indicator. One more detail that matters: the D and the Q share tracks between Jay Street–MetroTech and Fulton Street in Downtown Brooklyn. This means the Q train is also using the D train's tracks during certain hours. If you are headed toward Lower Manhattan or the Bronx and you see a Q train, it is running on the same rail corridor. The D does not have a dedicated track through that section, which is why service interruptions there affect both lines simultaneously. During the 8th Avenue Local late-night service, the D runs slower than the express version because of the added stops. A trip from 59th Street to Bay Ridge takes roughly 40 minutes on local service compared to about 25 minutes on the Sixth Avenue Express weekday schedule. Factor that in if you are riding past midnight on a Friday or Saturday.
The MTA also publishes service changes on their Twitter account, @MTA Subway, but they are not always accurate or timely during active disruptions. I learned this the hard way during a signal failure on the A/C/D/B line in 2023. The tweets said service was restored when it was not. The Service Advisory page was still listing the suspension. I rode downtown based on the tweet and had to transfer to a bus at 59th Street because the D was still not running. The advisory page had the correct information all along. If you want the raw schedule data, the MTA opens a data portal that includes timetable information for all subway lines. It is technical and not user-friendly, but it is the source that apps pull from. The data is in GTFS format. If you know how to parse it, you can build your own schedule checker. Most people do not bother with this. They just look at the MYmta app or the timetable PDF and hope for the best. The D line is one of the busiest routes on the system, which means crowding is a constant factor. On the southbound side during morning rush, the train fills up fast at Bay Ridge and stays full through Manhattan. The best cars to board are near the middle of the platform, where doors typically open on the less crowded side. The front and rear cars are usually packed first. This is not a tip you will find in any official guide, but it is practical and it works.
The last thing to keep in mind is that the D line schedule is not a single timeline. It is three or four overlapping schedules that shift based on the time of day and the state of construction. Understanding which service pattern is active is more useful than memorizing any individual timetable. Check the train's destination sign. Check the Service Advisory. Watch the MYmta app. Those three things will get you where you are going faster than any PDF ever will.
