How it really works
What you’re
looking at.
A live bus isn’t a live broadcast. It’s a sequence of snapshots, taken at intervals, that arrive with a little delay. This page tells you exactly how long those intervals and that delay are, because they’re numbers you can measure — and we measured them.
Measurements redone on 8 August 2026 on both the road and the water networks.The three clocks
Between the real bus and the dot on your screen there are three different clocks, and it’s worth keeping them apart because they do different things.
- Every 10 seconds — the vehicle sends its position. That’s its own rhythm, very regular.
- Every 15 seconds — ACTV publishes the bundle with all vehicles together. This one’s a metronome too.
- About 1 second — how long we take to notice and bring it to you.
The two rhythms aren’t in sync with each other, and in between there’s the time the position takes to travel from the vehicle to ACTV’s systems. The result, measured over a few thousand positions: when a position appears, it’s typically between 12 and 20 seconds old, sixteen on average.
Sixteen seconds at city pace is about sixty metres. On a clear road, two hundred. That’s why every so often the bus is already at the stop while on the map it still has to turn the corner: nothing’s missing, that snapshot was just taken earlier.
On the part that depends on us — that one second — we’ve worked hard. On the rest no one can: it’s the physics of a position that has to be read, sent, collected and republished.
The question mark
If a vehicle has a ? instead of a number it means something precise: this vehicle exists and it’s there, but the data doesn’t say which trip it’s running.
Position and trip travel together but are born separate. The position is sent by the vehicle. The trip is information that has to be matched to it, and that match can be missing for plenty of ordinary reasons: the vehicle is moving out of service, heading back, on a break between two shifts, or simply not linked to a scheduled trip at that moment.
It’s no one’s slip-up and it’s not wrong data. It’s data that says less: here’s where it is instead of here’s where it is and what it’s doing. With a fleet of hundreds of vehicles going in and out of service all day, a share of unlinked vehicles is normal.
What changes a lot is the time of day. In daytime most vehicles on the road have their trip. Late at night it flips: when service ends, almost all the ones you see are heading back, and the map becomes a field of question marks. One August night, at a quarter past midnight, we counted them: 103 vehicles out of 104. The vaporetti, which have more regular night lines, generally keep declaring themselves normally.
We could hide them and the map would look cleaner. We don’t: that vehicle really is there, and hiding it would mean making real information disappear to make our screen look tidier.
How we try to guess the line
Here’s the part we’re proudest of, and it’s only fair to tell it in full because it’s a guess of ours, not data.
When you select a line, we take all the vehicles with no assigned trip and look for any that are less than a hundred metres from that line’s route. If we find one, we attribute it to the line and show it to you saying it’s a guess.
A hundred metres and not three hundred because in Venice and Mestre parallel streets are everywhere, and a wide radius would scoop up the bus on the next street over. Better to say nothing than something convenient and wrong.
There’s a second condition, and it’s the one that saves the guess from becoming nonsense: the line has to be in service at that hour. On the route of the 7 at two in the morning, however close it is, a 7 it is not. We run that check against the official timetable, trip by trip.
The place you see this best is the Ponte della Libertà. Almost every line between Venice and the mainland passes there, and at certain hours you find seven or eight question-mark vehicles all in a row. If you select a line that runs across it, some of them take its number: not because we know, but because they’re on its route, at that hour, and the simplest explanation is that they’re running it.
It doesn’t always work and it doesn’t claim to. It’s an honest fallback so we don’t leave you an empty map when the vehicles are there.
The colour tells you how much to trust it
Every vehicle carries the age of its last position, and we show it instead of hiding it:
- 0–30 seconds — up to date. This is the normal state.
- 31–90 seconds — recent. It skipped a beat: it’s further along than where you see it.
- 91–180 seconds — not up to date. Read it as an area, not a point.
- over 3 minutes — we don’t show it at all.
The last line is the most important decision in the whole app. After three minutes a bus could be anywhere within a few kilometres: drawing it stuck where it was would be a very precise lie, and a precise lie is worse than an honest absence.
So every so often the map has gaps. They’re deliberate, and now you know how to read them.
The dot walks even when nothing arrives
Positions arrive in jumps, every fifteen seconds. The dot on the map, instead, moves continuously.
That gliding is ours: between one position and the next we slide the marker toward the point it reached. It’s an interpolation — a reasonable guess about what happened in between — and no one measured those fifteen seconds.
We do it because a jumping dot is harder to follow with your eye, and because the direction of movement stays useful information even when it’s approximate. But it’s right that you know where the data ends and the drawing begins. It says so on each vehicle’s card, too.
When it vanishes and comes back
Sometimes a vehicle disappears for a minute and reappears further on. We didn’t lose it: it lost the signal.
Underpasses, tunnels, stretches between tall buildings, the spots where even your phone drops to one bar. The vehicle stops transmitting, its last position ages, passes three minutes and vanishes. As soon as it picks up again it snaps back to where it got to in the meantime.
If a line seems to have a gap right where you need it, this is often what it is — not a skipped trip.
Where the data comes from
BusBus isn’t the official app and has no agreement with ACTV. We use the open data the company publishes for anyone, in the standard formats that cities all over the world run on — the same ones that let whoever wants build something on top.
That ACTV publishes it isn’t a given: many companies don’t, and without that choice this map wouldn’t exist.
But it also means we’re a link at the end of the chain. If a source figure is missing or imprecise, ours is too as a result: we have no second source to cross-check and we invent nothing to fill the gaps. When we don’t know, we write that we don’t know.
For official timetables, strike notices, tickets and complaints, the right place is still ACTV. We do one thing only: tell you where the vehicles are now, with the precision the data allows.
If you made it this far
Now you have the numbers: ten seconds the vehicle’s rhythm, fifteen the publishing one, sixteen the typical age of what you see, three minutes the threshold beyond which we’d rather stay quiet, a hundred metres the radius within which we allow ourselves a guess.
With these you read a map of vehicles much better — including other people’s, which have exactly the same limits but rarely write them down anywhere.
And next time someone says “that app doesn’t work, the bus was already there”, the answer isn’t an excuse: it’s that that snapshot was sixteen seconds old, and sixteen seconds on a clear road is two hundred metres.
BusBus is made by someone who actually gets around Venice. If you find something that’s genuinely wrong — not late, actually wrong — write in: that’s how it improves.