Which UK bus operators run on time?
We continuously compare live bus GPS positions against the published timetable and record whether each bus was on time (within 5 minutes). These league tables cover local bus services over the last 30 days — 201,006 observations. No other UK site publishes this.
These are our own measurements, not official statistics. They are not comparable with the Department for Transport's figures further down this page and read roughly 25–30 points lower by construction. Why, and what else they don't tell you →
Operators ranked by punctuality
| Operator | On time | Avg delay | Observations |
|---|---|---|---|
| The Keighley Bus Company | 75% | 1.7 min | 342 |
| morebus | 73% | 1.9 min | 3,133 |
| First Portsmouth, Fareham & Gosport | 71% | 1.7 min | 2,534 |
| Swindon's Bus Company | 70% | 2.2 min | 813 |
| Southern Vectis | 70% | 1.4 min | 274 |
| Salisbury Reds | 70% | 2.5 min | 349 |
| Go North East | 70% | 2.6 min | 4,421 |
| The Blackburn Bus Company | 69% | 2.1 min | 642 |
| Metrobus | 69% | 2.8 min | 2,291 |
| Globe Holidays | 68% | 2.4 min | 250 |
| Gateshead Central Buses | 68% | 2.5 min | 287 |
| Vision Bus | 67% | 3.7 min | 314 |
| The Burnley Bus Company | 67% | 1.3 min | 464 |
| First Potteries | 67% | 1.5 min | 6,062 |
| Warrington's Own Buses | 66% | 2.1 min | 512 |
| Arriva North East | 66% | 2.8 min | 4,538 |
| Plymouth Citybus | 65% | 2.3 min | 5,308 |
| Stagecoach South Wales | 64% | 2.4 min | 3,939 |
| Stagecoach North East | 64% | 3.3 min | 4,411 |
| Sargeants Brothers | 64% | 3.5 min | 300 |
| Pulhams Coaches | 64% | 3.4 min | 592 |
| National Express Coventry | 64% | 2.5 min | 4,444 |
| Ipswich Buses | 64% | 2.5 min | 3,426 |
| First South & West Wales | 64% | 1.9 min | 1,432 |
| Diamond Bus East Midlands | 64% | 3.1 min | 285 |
| Coastliner | 64% | 1.8 min | 494 |
| Carousel Buses | 64% | 3.2 min | 1,087 |
| Yeomans Travel | 63% | 2.8 min | 848 |
| Stagecoach Yorkshire | 63% | 2.1 min | 3,228 |
| Go Cornwall Bus | 63% | 3.2 min | 2,120 |
| Faresaver | 63% | 3.8 min | 320 |
| Chaserider | 63% | 2.6 min | 428 |
| Arriva Kent and Surrey | 63% | 2.6 min | 1,566 |
| Arriva Derby | 63% | 2.6 min | 358 |
| Archway Travel | 63% | 0.6 min | 350 |
| Redline | 62% | 2 min | 204 |
| Go Ahead West Yorkshire | 62% | 3 min | 357 |
| First South Yorkshire | 62% | 1.8 min | 2,445 |
| East Yorkshire | 62% | 2.2 min | 1,932 |
| Bluestar | 62% | 3 min | 2,050 |
Colour shows where an operator sits against the others measured here — top third green, middle amber, bottom third red — not a pass mark. Every figure in this table is low against the official ones because it is measured differently (why), so compare operators with each other and never with a Department for Transport percentage. An operator appears once, under the name it trades as, even where it holds several licences.
Most punctual services
- 55B North Walsham → Norwich via Westwick, Coltishall 92% on time 50 obs
- 13 Bournemouth → Wimborne Minster via Redhill, Leigh Park 88% on time 94 obs
- 13A Bournemouth → Wimborne Minster via Lansdowne, Redhill 88% on time 56 obs
- 11C Nottingham → Holme Pierrepont via Meadows, Lady Bay 85% on time 55 obs
- 7 Portsmouth → Wecock via Cosham, Waterlooville 84% on time 159 obs
- 11 Nottingham → Lady Bay via Meadows, Trent Bridge 84% on time 173 obs
- 936 Birmingham → Walsall via Pheasey, Chuckery 84% on time 51 obs
- 59 Ipswich → Little Bealings via Rushmere, Rushmere St Andrew 84% on time 88 obs
- 21 Bournemouth → Bearwood via Redhill, Turbary Common 83% on time 60 obs
- X22 Sedgefield → Peterlee via Stockton, Shotton Colliery 83% on time 71 obs
- 120A Wakefield → Healey via Lupset, Ossett 83% on time 123 obs
- 56 Sunderland → Newcastle upon Tyne via Hylton Red House, Gateshead 83% on time 121 obs
- 2 Three Bridges → Ifield West via Crawley, Southgate 82% on time 60 obs
- 195A Wakefield → Hemsworth via Havercroft, Newstead 82% on time 171 obs
- 48A Atherstone → Nuneaton via Mancetter, Hartshill 82% on time 66 obs
- 196 Wakefield → Newstead via Walton, Crofton 81% on time 237 obs
- 297 Kirkby → St Helens via Knowsley, Prescot 81% on time 53 obs
- 10 Gatwick Airport → Kilnwood Vale via Manor Royal, Crawley 81% on time 191 obs
- 18 Ipswich → Claydon via Westbourne, Bramford 81% on time 167 obs
- 1A Bournemouth → Somerford via Iford, Jumpers Common 80% on time 167 obs
- 23 Hanley → Newstead via Fenton, Blurton 80% on time 400 obs
- 3E Ipswich → Greenwich via Priory Heath, Gainsborough 80% on time 93 obs
- 6 Bournemouth → Wimborne Minster via Lansdowne, Bearwood 80% on time 100 obs
- 102 East Moor → Wakefield 80% on time 127 obs
- 23 Seaburn → Thorney Close via Sunderland, Ashbrooke 80% on time 120 obs
Least punctual services
- 485 Wakefield → South Elmsall via Belle Vue, Upton 17% · avg -1.1 min late 126 obs
- X21 Stratford-upon-Avon → Solihull via Monkspath, Sharmans Cross 20% · avg 0.9 min late 66 obs
- PR Taunton → Ruishton 25% · avg 13.9 min late 55 obs
- 229 Stratford-upon-Avon → Redditch via Wilmcote, Snitterfield 26% · avg 1.4 min late 105 obs
- MK1 Bedford → Luton via Fenlake, St Annes 28% · avg 9.2 min late 75 obs
- 71 Temple Meads → Aztec West via Bristol, Filton 29% · avg 9.3 min late 66 obs
- 3 Chelmsford → Southend-on-Sea via Leigh-on-Sea, Prittlewell 29% · avg 9.2 min late 55 obs
- X1 Holmfirth → Wakefield via Shelley, Thornes 30% · avg -0.4 min late 136 obs
- 13 Claverton Down → Batheaston via Odd Down, Bath 31% · avg 3.2 min late 64 obs
- 5A City Loop → Edwalton 32% · avg 9 min late 56 obs
- 51 Swindon → Cirencester via Pinehurst, South Cerney 32% · avg 8.4 min late 110 obs
- 86C Liverpool circular via Toxteth, Wavertree 32% · avg 4.7 min late 50 obs
- 103 Pinderfields → Wakefield via Stanley, East Moor 32% · avg -1.5 min late 424 obs
- 3 Plymouth → Kingsbridge via Plymstock, Ashford 33% · avg 8 min late 51 obs
- 522 Bristol → Bath via Brislington, Keynsham 35% · avg 9.9 min late 110 obs
- 87 Truro → Newquay via Perranporth, Rosehill 35% · avg 7.6 min late 57 obs
- 37B Bristol Estate → Brighton via Kemp Town 36% · avg 7.1 min late 196 obs
- 11 Sprowston → Wymondham via Norwich, Hethersett (village) 36% · avg 7 min late 438 obs
- 472 Liverpool → Barnston via Birkenhead, Heswall 36% · avg 4.9 min late 102 obs
- 4 City, NTU Campus → Clifton, NTU Campus 37% · avg 7.4 min late 317 obs
- 48 City → Clifton 37% · avg 6.9 min late 324 obs
- 12 Nottingham → Cropwell Bishop via West Bridgford, Cotgrave 37% · avg 6.2 min late 73 obs
- 173 Wells → Bath via Haybridge, Binegar 37% · avg 2.3 min late 60 obs
- LOOP Margate circular via Broadstairs, Ramsgate 38% · avg 9.6 min late 151 obs
- 76 Liverpool → Halewood via Toxteth, Wavertree 38% · avg 9.1 min late 89 obs
Official punctuality by local authority (2025)
The Department for Transport publishes its own punctuality figures each year. They cover a whole council area rather than individual routes, but they go back to 2005 — far further than any live tracking. "On time" here means between 1 minute early and 5 minutes 59 seconds late.
| Local authority | On time | vs 2015 | Excess wait |
|---|---|---|---|
| Swindon | 98% | +6 | 2.8 min |
| Cheshire East | 95% | +1 | — |
| Blackpool | 93% | -3 | — |
| Blackburn with Darwen | 92% | +3 | 2.1 min |
| North East Lincolnshire | 91% | -4 | — |
| Nottingham | 90% | 0 | — |
| Hertfordshire | 90% | -5 | — |
| Halton | 89% | -7 | 2.2 min |
| Isle of Wight | 89% | +3 | — |
| Windsor & Maidenhead | 88% | +3 | — |
| Bournemouth, Christchurch and Poole | 88% | — | -0.1 min |
| Kingston upon Hull | 86% | — | — |
| Thurrock | 86% | -6 | — |
| Lancashire exc Blackburn & Blackpool | 86% | +9 | 0.9 min |
| Telford and the Wrekin | 84% | +8 | — |
| Stoke-on-Trent | 84% | +15 | — |
| Westmorland and Furness | 84% | — | — |
| Warrington | 83% | — | — |
| Reading | 83% | -6 | 0.5 min |
| Portsmouth | 83% | -8 | — |
| Cheshire West and Chester | 83% | -4 | — |
| Shropshire exc Telford & The Wrekin | 83% | +7 | — |
| Bracknell Forest | 82% | -14 | — |
| West Berkshire | 82% | -2 | — |
| Brighton & Hove | 81% | -5 | — |
| Gloucestershire | 81% | — | 5.8 min |
| West Sussex | 81% | -4 | — |
| Plymouth | 80% | -12 | 1.3 min |
| Durham exc Darlington | 80% | -8 | — |
| Norfolk | 80% | +3 | — |
| East Riding of Yorkshire | 79% | -5 | — |
| North Lincolnshire | 79% | -3 | — |
| North Somerset | 79% | +4 | 5.6 min |
| Luton | 79% | +1 | 1.1 min |
| Northumberland | 79% | -6 | 6 min |
| Cumberland | 79% | — | 1 min |
| Dorset exc Poole & Bournemouth | 79% | -2 | — |
| Warwickshire | 79% | -12 | — |
| York | 78% | -9 | — |
| Southend | 78% | +4 | — |
| Milton Keynes | 78% | -9 | — |
| Devon exc Plymouth & Torbay | 78% | +2 | 1 min |
| East Sussex exc Brighton & Hove | 78% | -7 | — |
| Lincolnshire | 78% | +3 | — |
| Nottinghamshire exc Nottingham | 78% | -6 | 1.8 min |
| Oxfordshire | 78% | +4 | — |
| Medway Towns | 77% | — | — |
| Southampton | 77% | -4 | 3.5 min |
| Cornwall exc. Scilly Isles | 77% | -5 | — |
| Wiltshire exc Swindon | 77% | -12 | — |
| Derbyshire exc Derby | 77% | -9 | — |
| Staffordshire exc Stoke-on-Trent | 77% | -12 | — |
| Slough | 76% | -13 | 1 min |
| Wokingham | 76% | +3 | — |
| Derby | 75% | -11 | 0.6 min |
| Bedford | 75% | -11 | — |
| Essex exc Southend & Thurrock | 75% | -8 | — |
| Kent exc Medway Towns | 75% | -14 | — |
| Buckinghamshire exc Milton Keynes | 74% | -4 | — |
| Somerset | 74% | -4 | — |
| Suffolk | 74% | -17 | — |
| Worcestershire | 74% | +3 | 3.6 min |
| Rutland | 72% | -23 | — |
| Herefordshire | 72% | — | — |
| Torbay | 72% | -16 | 1.2 min |
| Leicester | 71% | -6 | 1.1 min |
| Surrey | 71% | -4 | — |
| West Northamptonshire | 70% | — | — |
| North Yorkshire exc York | 70% | -4 | — |
| Hampshire exc Portsmouth & Southampton | 69% | -14 | — |
| Central Bedfordshire | 65% | -14 | — |
| Leicestershire exc Leicester & Rutland | 63% | -15 | — |
| North Northamptonshire | 61% | — | — |
Excess waiting time applies to frequent services only, so it is blank for many areas. Source: DfT bus reliability and punctuality (BUS09), Open Government Licence v3.0.
By English region (2025)
Each figure covers every council in the region combined, so it sets the context the table above sits in rather than competing with it.
| Region | On time | vs 2015 |
|---|---|---|
| North West | 86% | -3 |
| North East | 82% | 0 |
| Yorkshire and the Humber | 80% | -4 |
| South West | 80% | -1 |
| West Midlands | 79% | 0 |
| London | 79% | — |
| South East | 79% | -5 |
| East of England | 78% | -5 |
| East Midlands | 74% | -10 |
How this is measured
Operators publish their buses' live GPS positions through the DfT Bus Open Data Service. We match each tracked bus to its scheduled journey, estimate its delay from its position along the route, and store an anonymous observation. "On time" follows the industry convention: departing between 1 minute early and 5 minutes late. Services need 50+ observations (operators 200+) in the last 30 days to be ranked, so a single bad day doesn't condemn a service. See a route's own page for its individual score.
Local bus services only. That 1-early/5-late window is the Department for Transport's standard for a registered local bus service, and it is the only thing it measures fairly. A long-distance coach has timing points hours apart and runs on motorways; scoring it against a bus yardstick says nothing about the coach and a great deal about the yardstick. Coaches, trams, ferries and rail replacement are still tracked and still appear on their own pages — showing average delay, which needs no window — but they are not ranked here.
The unit is a service, not a timetable row. One service often exists as several routes in the raw data — a school working beside the all-day one, or the same line split by direction — and those ids are reissued when an operator republishes its dataset. Observations are gathered onto the operator's licence code, line and region instead, which is the same identity the weekly service history uses and survives a rebuild.
What these figures don't tell you
This is not a complete record of every bus that ran. We see a journey only when the bus is broadcasting its position and we can match that position to a scheduled journey, and buses don't always track — equipment fails, drivers sign on late or to the wrong journey, and some operators publish no live positions at all. If a route or an operator isn't listed here, it does not mean their buses run badly. It means we haven't seen enough of them to say anything.
Seven things worth knowing before quoting one of these numbers:
- A bus that never ran is invisible, not late. A cancelled journey, or one that ran with its tracker off, produces no observation at all — so it never counts against a score here. Punctuality and reliability are different questions, and this page answers the first.
- The worst delays drop out. When a vehicle's position implies it is more than 45 minutes behind schedule (or 8 minutes ahead), we discard the match rather than record a number we don't trust — at that distance it is as likely to be the wrong journey. The honest consequence is that severe delays are under-counted and these scores lean optimistic.
- Delay is estimated from position, not measured at a stop. We work out where along its route the bus has reached, interpolate the time its timetable gives for that point, and compare the two. A bus more than 3 kilometres off the route is treated as a bus we have mis-identified rather than a bus running late, and is discarded. That is a fair estimate of how late a journey is running; it is not a record of when it actually left any particular stop.
- Coverage follows attention, not need. Observations are recorded when someone opens a stop page, plus an automated daytime sweep of one busy stop in each of 25 towns. Busy urban routes are sampled far more heavily than rural ones, and night buses barely at all.
- Small samples move a long way. A service qualifies at 50 observations across 30 days, which can be a few journeys on a few days. One afternoon of roadworks can move a score by ten points. The observation count is printed beside every figure for exactly this reason — check it before believing a surprising one.
- An operator table is not a like-for-like comparison. Operators are ranked on the routes we happened to observe, which is not the same as the routes they run. A company working city-centre services in congestion will place below one running interurban routes on open roads, whatever either of them does well. It measures the conditions the buses run in at least as much as the company running them.
- These are not the DfT's numbers and are far lower. The official figures further down this page put many councils in the eighties and nineties; nothing here reaches 70%. That gap is the method, not a disagreement about which buses were late. The DfT measures a departure, at a timing point, against the time printed for that stop. We measure a bus's position, at an arbitrary moment, against where its schedule implies it should have got to — and a bus that leaves every timing point punctually still spends much of its run a few minutes off that line. Ours will always read lower. Compare our operators with each other; compare the DfT's councils with each other; never compare across the two.
The Department for Transport figures further up are collected on a different basis, at stops rather than along the route, over a full year rather than 30 days. They are here for the long trend and the decade of history we can never collect ourselves — not as a check on our numbers, which measure a different thing and sit roughly 25–30 points below them by construction.
Live position data: DfT Bus Open Data Service (Open Government Licence v3.0). Observations are our own derived measurements and carry no personal data.