Data Source
Performance data is derived from Network Rail TRUST (Train Running Under System TOPS) train movement data. TRUST records the actual time every train passes through each reporting point on the network.
Data is consumed in real-time via the Rail Data Marketplace and stored locally. Data collection began in February 2026; statistics are based on however many days of data are available, up to 90 days for the rolling view.
How We Calculate On-Time Performance
- A train is counted as "on time" if it arrives at its destination within 5 minutes of the planned arrival time.
- This includes trains marked as EARLY or ON TIME by Network Rail, plus trains marked as LATE with a delay of 5 minutes or less.
- We use arrival events only (not departures) as this reflects the passenger experience.
Note: The official industry measure (PPM/On Time) uses different thresholds for different service types. We use a uniform 5-minute threshold for simplicity and transparency.
Cancellation Rate
- A train is counted as cancelled if Network Rail issued a cancellation message for that service.
- Cancellation rate = number of cancelled services / total activated services for that operator in the period.
- Both full cancellations and part-cancellations are included.
Average Delay
- Calculated as the mean delay in minutes across all arrival events for trains that arrived late (more than 0 minutes behind schedule).
- Trains that arrived early or on time are counted as 0 minutes delay for this calculation.
This gives a sense of "when trains are late, how late are they?" rather than an overall average skewed by the majority of on-time services.
Data Coverage
- Not all TRUST messages may be received, due to system outages, network issues, or unmapped stations.
- We calculate data coverage as: (number of days with at least one recorded service for an operator) / (total days in the period).
- Operators with coverage below 80% are suppressed from the league table entirely, as the data would be unreliable.
- Coverage percentage is shown alongside all displayed statistics.
How This Differs From Official Statistics
The Office of Rail and Road (ORR) publishes official performance statistics using the On Time measure and Cancellations & Significant Lateness (CaSL). ORR data is supplied by Network Rail through internal systems and undergoes quality assurance and revision.
Our data is independently collected from the same underlying TRUST system but may differ due to:
- Different thresholds — we use 5 minutes uniformly; ORR uses varying thresholds.
- Data gaps — our Kafka consumer may miss messages that Network Rail's internal systems capture.
- No post-hoc corrections — ORR data is revised; ours is not.
- Different measurement periods — we use calendar months; ORR uses rail periods.
For official statistics, visit the ORR Data Portal.
Monthly Archives
- At the end of each calendar month, we generate a permanent snapshot of that month's performance data.
- Archive pages record the exact calculation period, data coverage, methodology version, and any known data gaps.
- Monthly archives are retained for 3 years.
- If our methodology changes, archived pages reflect the methodology version used at the time of generation.
Methodology Version v1
Current version: 1. Changes to the methodology will be documented here with version numbers. Historical archive pages will note which version was used for their calculations.