Zagreb has no public sensor network that would tell you how congested an avenue is. What it does have is several hundred vehicles driving through it all day and reporting their position every ten seconds or so — buses. On Wednesday 16 September that turned out to be enough to reconstruct an entire motorway closure backwards, out of nothing but the speed of public transport.
Shortly before 11:00 on Wednesday 16 September 2026, two lorries and two cars collided on the Zagreb bypass, on the Sava bridge at kilometre 38 of the A3 heading towards Lipovac. One person was killed. Between the police investigation and the recovery of the vehicles, the section stayed closed for roughly four and a half hours.
Traffic was taken off at the Kosnica junction and sent along Domovinski most, Radnička cesta and Slavonska avenija to the Zagreb East junction. Which is to say: motorway traffic was tipped onto the city’s avenue network, and onto exactly the stretch that eight ZET bus routes run along.
Why this is measurable. A bus is not only a victim of a queue — it is also an instrument inside it. It runs a fixed route, stops in the same places every day, and reports its position into ZET’s GTFS-Realtime feed. When the time between two stops triples, that is not something that happened to the bus. It is the state of the street, measured.
Slavonska avenija has two separate carriageways. The detour used only the eastbound one, because the motorway was closed towards Lipovac. If the slowdown really came from diverted traffic rather than from anything else about that day, it had to show up in one direction and be absent from the other.
That is exactly what it does. Until 11:00 both carriageways hold their usual speed. Then the eastbound side starts falling and does not stop until 15:00, when the median reaches 5.1 km/h — slower than walking pace. At quarter-hour resolution the floor is lower still, 4.0 km/h between 15:00 and 15:15. The westbound carriageway is working normally throughout.
Median speed on stop-to-stop segments. The shaded band is the period the bypass was closed. On the left, the carriageway the detour used; on the right, the one it did not.
The control direction is what makes this more than an observation that traffic was bad. Rain, a strike, a lane closed for roadworks, or simply a heavy day across the whole city would have slowed both carriageways. Only the one carrying motorway traffic slowed.
The totals split the same way. Across the whole day, eastbound buses on this stretch lost 453 minutes against the same hour on an ordinary weekday — almost all of it between 11:00 and 18:00. Westbound, over that same window: 12 minutes. Across the full day, essentially nothing.
Broken down by segment, the queue turns out not to have been spread evenly along the avenue. The first stretch, Vjesnik to Marohnićeva, was actually faster than usual that afternoon. The congestion starts at the National and University Library and breaks open at Trg Savica.
Segments ordered west to east rather than by size of delay: the question is where the queue began, and that is only legible if the geography survives.
The worst is Trg Savica → Rakušina: 1,148 metres that normally take 1:51. That afternoon the median was 9:46 — five and a half times longer, and the largest single ratio anywhere on the avenue. It is the approach to the Radnička cesta junction, which is where traffic coming off Domovinski most was joining. The queue built backwards from the bottleneck, as queues do — westwards, into vehicles that had nothing to do with the bypass at all.
The slowest single run belongs to route 222: 427 metres from Končar to Čavićeva in 10 minutes 41 seconds, at 15:11. That is 2.5 km/h. A passenger who got off at Končar and walked would have beaten the bus they got off.
At the eastern end of the avenue the delay simply stops. Everything from Slavonska-Čulinečka onwards runs normally — that is already past the Zagreb East junction, where the detour handed traffic back to the motorway.
Eight routes use this stretch. On the day of the crash 99 eastbound departures ran through it, and the lost time divides between them like this:
| Route | Segments | Lost | Times longer |
|---|---|---|---|
| 107 | 58 | 169 min | 2.7× |
| 281 | 42 | 145 min | 2.4× |
| 222 | 15 | 56 min | 3.4× |
| 216 | 6 | 24 min | 4.1× |
| 218 | 6 | 15 min | 1.8× |
| 276 | 6 | 6 min | 1.5× |
| 108 | 1 | 5 min | 2.8× |
The clearest sense of what a passenger actually experienced comes from one unbroken run: 5,401 metres from Vjesnik to Čavićeva, seven consecutive segments. The timetable allows 11:30. Across 96 runs on the reference days the median is 12:06. On 16 September the median was 18:13, and the slowest run took 49:48 — very nearly fifty minutes for five and a half kilometres of straight avenue.
Everything above is derived from vehicle positions. The same feed also publishes something entirely separate — ZET’s own per-stop delay estimate, which none of the figures above use in any way. If the analysis is right, the two signals have to say the same thing.
| Hour | 16 Sep | 15 Sep | 16 Sep, p90 |
|---|---|---|---|
| 12:00 | 5.1 min | 1.9 min | 16 min |
| 13:00 | 9.3 min | 3.8 min | 28.5 min |
| 14:00 | 11.9 min | 3.7 min | 31.9 min |
| 15:00 | 23.4 min | 5.1 min | 64.5 min |
| 16:00 | 26.1 min | 11.1 min | 85.2 min |
| 17:00 | 17.9 min | 10.8 min | 77.4 min |
| 18:00 | 7.4 min | 1.1 min | 26.1 min |
They do. At 16:00 the median reported delay was 26 minutes, against 11 minutes at the same time the day before, and one vehicle in ten was more than an hour and 25 minutes late. Two independent signals out of the same feed, the same peak, the same recovery.
It would be easy to conclude from all this that Zagreb ground to a halt that afternoon. It did not. The same measure applied to every ZET bus in the city shows a slowdown of a few per cent:
| Hour | 16 Sep | Reference | Difference |
|---|---|---|---|
| 14:00 | 23.5 km/h | 24.6 km/h | -4.5 % |
| 15:00 | 22.3 km/h | 23.7 km/h | -5.9 % |
| 16:00 | 22.6 km/h | 24.1 km/h | -6.2 % |
| 17:00 | 24.2 km/h | 25.4 km/h | -4.7 % |
That is what closing the bypass actually does to a city: it does not slow it down evenly, it drops the entire load onto one street and one direction. A city-wide average hides that neatly.
The corridor is defined by geometry, not by stop names. We took the main carriageways of Slavonska avenija from OpenStreetMap, buffered them by 35 metres, and kept every timetable segment whose geometry spends at least 60 % of its length inside that buffer and is longer than 150 metres. That leaves 30 segments, 15 per direction.
Data and sources. Vehicle positions: ZET GTFS-Realtime, published as open data by the City of Zagreb under the Open Licence. Street geometry: OpenStreetMap, ODbL. Details of the crash and of the detour route: tportal and Index. This is not an official ZET site.