How live bus tracking actually works
Where the positions come from, how an expected time is worked out, and why some buses are never tracked.
A live bus time looks simple: the bus is here, so it will reach you then. Underneath, there are a couple of steps that have to work before a scheduled time can honestly be replaced with an expected one, and understanding them explains why tracking sometimes stops.
Step one: buses report where they are
Vehicles report their position, which is republished nationally. Each report includes the position, the route, the operator, a vehicle reference, the time the position was recorded, and details of which scheduled journey the bus is running.
A few properties of that feed matter to you as a passenger:
- Positions are a few seconds old. A report has to be generated, sent and republished before anything can show it. It is close to real time, not instant.
- Not every operator sends them. Live positions are published separately from timetables, and an operator can publish a perfect timetable while sending no positions at all.
- Not every vehicle in a fleet reports reliably. Equipment fails, so one journey on a route may be tracked while the next is not.
This is why a stop can show live times against some departures and plain scheduled times against others. It is normal, and it is not a sign that the untracked ones are cancelled.
Step two: work out which journey the bus is running
This is the part that decides whether tracking is useful. Knowing a bus is on route 21 near a particular junction does not tell you when it reaches your stop. For that, you have to know which scheduled journey it is operating — the 14:05 from one end, or the 14:35.
The feed carries several fields that could identify the journey. Choosing between them is an empirical question rather than a matter of preference, so we measured it against live data. Matching on the operator, the route and the journey's scheduled departure time from its origin identified the correct journey for 94% of the vehicles running routes we hold. An alternative identifier in the same feed managed 13%.
Where no confident match can be made, we show the scheduled time. A wrong expected time is worse than an honest timetable.
Step three: work out how late it is
Once the journey is known, the delay is measurable. The timetable says where that journey should be at every minute of its route. The feed says where the bus actually is. Comparing the two gives a delay, and applying that delay to the scheduled time at your stop gives the expected time.
Two details keep this honest:
- The delay is measured from the timestamp on the position report, not from the current clock. Otherwise a position half a minute old would read as half a minute of lateness on every bus.
- If a bus is a long way from its own route, or the calculated delay is implausible, no expected time is shown. That usually means the match was wrong, and it is better to fall back to the timetable.
What "on time" means on screen
Delays are calculated in seconds and shown in minutes. A bus 40 seconds behind is not meaningfully late, so anything within a minute either way is described as on time rather than as a one-minute delay sitting next to an unchanged time.
Buses genuinely do run early as well as late, particularly between timing points, which is why early running is shown rather than hidden.
Why an expected time can move
It is an estimate based on current position, so it updates as the bus moves. Traffic clearing means a late bus can recover time between stops. The estimate tightening is the normal case, not a fault — but it is the reason to leave a little margin rather than arriving on the exact minute.
What tracking does not tell you
- It cannot confirm a cancellation. A journey with no live data may be running untracked. Absence of a position is not evidence of absence of a bus.
- It cannot tell you how full a bus is.
- It does not replace disruption notices. A diverted bus may be tracked perfectly while not calling at your stop at all. Check service updates for that.
Seeing it in practice
Open a busy stop and watch the departures for a minute. On a well-served corridor you will typically see a mix: several journeys with live expected times, and others showing scheduled times only. The nearby stops page is a quick way to find a busy stop close to you.
For the shorter version of this, see what "live" means on a bus timetable.
