A “bus bunch” on the 66 eastbound to Navy Pier. If these two buses are on top of each other, you can bet someone is waiting for a delayed bus elsewhere on the line. Photo credit: Steven Vance, via Flickr
An event to plug: September 2nd | A Conversation with Matt Brewer: Matt Brewer is an attorney and former CEO of the Chicago Housing Authority. He’s also running for Mayor. Join us for a conversation with him about his career, the CHA, and how he’d run the city. We’ll be at Jefferson Tap and Grille from 5:30-7pm. Register here.
Today’s piece is written by an anonymous CTA bus operator. The opinions reflected in this article are solely theirs and do not reflect the opinions of their employer
Few things are more frustrating to a rider than waiting 30 minutes for a delayed bus, only to finally see three show up at the same time. This is called a ‘bus bunch’ and it’s all too common across CTA’s network. It’s also a much harder problem to fix than you might think.
I’ve previously noted that CTA needs a dedicated team to manage bus spacing and ensure consistent service when things go wrong. Today, we’ll go deeper into the causes of the bus bunching problem, and explain how a dedicated bus spacing control team could help.
CTA’s bunching explainer offers a fairly standard picture of the cause. Something delays a bus en route, which causes it to fall behind, getting closer to the bus behind it. In the meantime, more passengers build up waiting to get on the route, which means the delayed bus now has more (and longer) stops to make. That causes it to slow down even more, pushing it further back. Meanwhile, the bus behind it has relatively fewer passengers, and catches up. Without mitigation, the bunched buses have to share stops, which slows both of them down, potentially causing more buses to catch up and become part of the bunch.1
This is especially common on high frequency routes, as even a minute or two delay on a 5-minute headway essentially guarantees bunching. If you look at the CTA Bus Tracker for westbound 66 buses around rush hour, this kind of thing will show up: buses that left the Navy Pier terminal more or less on time, but are all bunched together by the middle of the route.
This is certainly a way that buses bunch, but as highlighted in a recent article from a University of Chicago Researcher, many bunches originate at the terminal. That’s when multiple buses depart from the first stop simultaneously.
To understand how this happens, we’re going to need to dig deep into how CTA bus operations actually work on the ground. To do so, let’s look at an hour of time in an operationally simple(r) route, see where things can go wrong, and explore how having a control center branch focused on bus headway management could help.
Westbound Route 66 - Chicago - 5:00PM -> 6:00PM
Map from the Transit App
CTA route 66 buses start at Navy Pier, and either head to Austin (~8.5 miles away) or are “shortlined” at Pulaski (~6 miles). They take a fairly straight shot, heading down Grand till they get out of out of Navy Pier, turn on Fairbanks, then follow Chicago till their destination.2
You can see a diagram of the buses that depart Navy Pier below. Solid lines represent in service routes, and dotted lines represent periods where buses run without providing service (“deadheads”). Note the time frame difference for the first column vs the second and third columns.
Source: Author, based on data from CTA run paddle
The first bus in our window is run number 5666 (with the “5” indicating it is a bus from the Chicago Garage, and the first 6 indicating its primary route is Chicago). It arrives at Navy Pier at 4:43, sits for 15 minutes before departing for Pulaski at 5:01PM, then turns into the garage, which is conveniently located at Chicago & Pulaski.
From here, 12 more buses will leave Navy Pier before 6PM, for an average departure interval of under 5 minutes. 9 of them are also buses arriving in service from Austin, all sitting for about 15 minutes before turning around. Two of them (5667 and 5628) deadhead (or run “Not in Service”) from Austin direct to Navy Pier via the Eisenhower, Lower Wacker, and DuSable Lake Shore Drive. They sit for 15 minutes at Navy Pier before entering service.
Fifteen minutes may seem like a lot of time to pay for a bus to sit around, but keep in mind that a “15-minute break” is fairly standard for most jobs, and bus drivers need a bit of mid-shift “personal time” too. Just as important, these breaks serve as buffer time, to ensure that even if a bus experiences delays arriving at Navy Pier, it can still start its route on time.
This brings us to our third way a bus gets to Navy Pier - run #5683. 5683 deadheads from the Chicago Garage, but does so on essentially the same route as in service buses, running in mixed traffic on Chicago Avenue. It is scheduled to sit at Navy Pier for about 5 minutes before turning around.
Implications for Bunching
As mentioned earlier, some level of bunching is basically guaranteed to happen en route. But perhaps the most frustrating, most impactful kind of bunching is that which begins before the buses leave the terminal - or “terminal-originating bunching.” One bus (or more than one) arrives late enough to the terminal that it and its follower were scheduled to have already left, and no supervisor or controller has provided a fix. When this happens, they will often leave late as a group. In this case, the buses slow each other down from the jump, and riders at the middle or end of the line experience a very long wait.
Let’s look at where this is likely to occur, and look at possible fixes.
Least likely (although it still happens) are the buses coming in service from Austin. The 15-minute buffers these buses have when they arrive at the end of the line in Austin, and again when they arrive at Navy Pier, can absorb a lot of sins. However, if these buses encounter a lot of traffic, or if the bus ahead of them was taken out of service, or perhaps a transfer train line or bus line they cross has experienced bunching, these conditions can create an overfull train or bus that dumps a lot of riders onto a 66 bus, slowing it down. They can then be at risk of overrunning their 15-minute scheduled layover.3
If these buses dispatch in a bunch, one solution is to “short-turn”, or have the bus turn around early on its trip to Navy Pier, discharging passengers onto the following bus. This maneuver can help put a bus back on schedule for its trip from Navy Pier. 4
A second solution is to have a delayed bus “run light” – deadheading without passengers for a few blocks while leaving Navy Pier. This saves time by preventing it from having to stop to pick up passengers, and helps prevent overcrowding when it does enter service. This may not work if there’s heavy demand at the beginning of the run, or if the traffic is so heavy that deadheading provides little time savings. This trick works better off peak, or when there’s shortcuts available on a route (e.g. for routes that run somewhat parallel to the highways).
The buses deadheading from Austin – 5667 and 5628 – are at greater risk of potential terminal-originating delays. These buses are exposed to a completely different traffic risk since they take the expressways. One frustrating element of operating buses is when you get screwed by traffic that is not part of your route. It’s hard to explain to riders “yeah, so the reason this 66 bus is late is because of a crash on Interstate 290 that’s backing it up. I know that doesn’t make sense.” There’s also less buffer for these buses, because they don’t have a 15-minute buffer at Austin before they turn around and deadhead back to Navy Pier.
But by far the worst carry-over bunching is going to be #5683 - the bus that deadheads down Chicago from the garage. It only holds for 5 minutes at Navy Pier, with only a 4 minute gap until its follower leaves, meaning just a 7-minute delay will put it essentially on top of its follower from jump.
The good news for deadheading buses is that since they have no passengers, they can be turned around and enter service mid run,5 somewhat consequence-free. Assuming the rest of the line is stable, riders at Navy Pier do not experience any extra wait: their bus was already late enough that it would’ve arrived with its follower. Riders down the line benefit moderately, as their bus arrives sooner, and the whole line benefits from reducing bunching (which delays all the buses in the bunch).
Unfortunately, this is effectively never done in practice, because control does not have the tools or manpower to execute granular maneuvers like this. Operators cannot decide this (despite an old, defunct pilot of this idea), both because we do not have the authority to reroute ourselves and because we cannot see the performance on the line: maybe a bus hasn’t left Navy Pier in 15 minutes due to an incident, and the next two buses – no matter how late – have to go there to provide enough capacity for built-up demand.
Notably, it’s much more difficult for control to reduce bunching en route, although things like bus lanes, all-door boarding, transit signal priority, and bus stop consolidation that speed buses will also enhance reliability and reduce – but not eliminate – bunching.6 Instead, a more proactive control could do is reduce extreme bunching by maintaining smoother dispatching and preventing a build up of minor delays that turn into big delays. Service gaps of 30 or 40 minutes start as 10-minute gaps, remain unaddressed, and then build into bigger problems over the course of the day. Catching the gaps early can ensure small annoyances for riders don’t snowball into bigger problems.
It’s easy to see a 25-minute gap in service on a frequent route and think “how hard could it be to just send out a bus?” or “they must be pretty short staffed if this bus isn’t coming”, but the truth is bus operations are a much more complex and fragile beast than most folks think. By adding more proactive oversight to the network, CTA could mitigate some of this fragility and provide more reliable service without just throwing more buses and operators at the problem: a more expensive solution that often doesn’t work.
A City That Works graciously obtained a bunch of the “run paddles” for CTA via FOIA. The full paddles discussed are available here. To learn how to read a run paddle, click here.
This is particularly common for long, infrequent routes with lots of schools on them. School lets out, everybody gets delayed. Buses are still fairly evenly spaced, but just run slower, slightly off schedule, and operators lose their breaks at terminals.
A more proactive bus control center could reduce impacts to passengers by ensuring there is an immediate transfer for riders to continue on. However, this procedure may delay the following bus, potentially causing more problems. Having live passenger counts provided to the control center can help mitigate these issues so the control center can avoid discharging particularly full buses.
For example, cut short the drive to Navy Pier, and turn around and enter service at Chicago & Michigan
There are a few things that can be tried: On routes with X counterparts (4/X4 Cottage Grove, 9/X9 Ashland, 49/X49 Western, etc.), converting an X bus to a regular bus could address gaps in regular service (somewhat annoying the X riders), and converting regular buses to X buses could help get runs back on schedule, although this only works while the X service is running. Allowing a bunched bus to run express or drop off only for a period, similar to how control center will mitigate bunching problems on the rail network, is also a potential strategy to fight bus bunching. Expressing buses or putting them drop off only used to be somewhat more common – and it comes with its own set of problems – but I’ve basically never seen it done recently.






Stop consolidation and bus lanes (with enforcement) would go a long way to fix this!
This is the kind of "deep in the weeds" analysis that got me interested in A City That Works and always keeps me coming back for more. Kudos to both the blog founders and to the anonymous author for putting this together.