Traffic Statistics
All countries · Live and recent days. Every figure says how many trains it is based on.
One coverage rule across the page. A train "has data" when its realtime feed reports a valid delay (between −60 and +120 min). Punctuality is computed over those trains only: trains without data never count as on time. A country enters a ranking when at least 30% of its trains have data and there are 20 or more; a station, with 10 or more. On time = under 3 min late.
Current punctuality (<3 min)
Punctuality league · now
Trains running right now. Sortable by column. The vertical line on each bar marks the 30 % threshold.
| Rank | |||||
|---|---|---|---|---|---|
| 1 | 🇯🇵 Japan 97 % at 0 s: 119 of 123 trains report exactly 0 s: the feed may be padding the delay with 0. | 123 / 173 | 0.0 min | ||
| 2 | 🇫🇮 Finland | 24 / 33 | 0.3 min | ||
| 3 | 🇩🇪 Germany | 208 / 259 | 0.8 min | ||
| 4 | 🇦🇺 Australia | 329 / 434 | 0.5 min | ||
| 5 | 🇨🇿 Czechia | 111 / 111 | 1.5 min | ||
| 6 | 🇵🇱 Poland | 144 / 155 | 1.4 min | ||
| 7 | 🇬🇧 United Kingdom | 90 / 92 | −0.6 min | ||
| 8 | 🇺🇸 United States | 182 / 404 | 7.6 min |
Not enough data · 17 countries outside the ranking
With fewer than 30 % of trains reporting data, punctuality describes a minority that need not resemble the rest (e.g. one operator only). They are not ranked and their percentage is not shown as if it were the country's. Their 419 trains do appear on the map.
| Country | Trains with data / total | Coverage | Reason |
|---|---|---|---|
| 🇳🇴 Norway | 6 / 6 | Small sample (6 < 20) | |
| 🇫🇷 France | 17 / 19 | Small sample (17 < 20) | |
| 🇳🇱 Netherlands | 1 / 5 | Only 20.0% of trains with data (minimum 30%) | |
| 🇨🇭 Switzerland | 3 / 40 | Only 7.5% of trains with data (minimum 30%) |
No realtime delay feed (13):
- 🇷🇴 Romania · 195 trains
- 🇸🇰 Slovakia · 50 trains
- 🇭🇷 Croatia · 21 trains
- 🇨🇦 Canada · 18 trains
- 🇪🇸 Spain · 13 trains
- 🇮🇱 Israel · 12 trains
- 🇸🇮 Slovenia · 10 trains
- 🇩🇰 Denmark · 9 trains
- 🇱🇻 Latvia · 9 trains
- 🇲🇾 Malaysia · 8 trains
- 🇱🇺 Luxembourg · 2 trains
- 🇵🇹 Portugal · 1 trains
- 🇧🇪 Belgium · 1 trains
Trend · 30 days
Daily punctuality, weighted by services (source: daily_stats).
2,522,225 services with data over 28 days. 13–16 countries per day.
Delay Distribution · now
Over the 1,238 trains with RT data (not the 2,080 on the map).
- Early or on time 73.5 %
- < 3 min 13.1 %
- 3-5 min 3.8 %
- 5-10 min 3.9 %
- 10-20 min 1.9 %
- > 20 min 3.9 %
Historical Punctuality
Weighted by services: a day with 4,000 trains weighs more than one with 400.
| Rank | Country | Services | Days with data | Punctuality |
|---|---|---|---|---|
| 1 | 🇨🇭 Switzerland | 78,075 | 28 / 28 | |
| 2 | 🇯🇵 Japan | 75,115 | 28 / 28 | |
| 3 | 🇫🇮 Finland | 29,024 | 28 / 28 | |
| 4 | 🇦🇺 Australia | 167,461 | 28 / 28 | |
| 5 | 🇸🇪 Sweden | 17,057 | 28 / 28 | |
| 6 | 🇳🇴 Norway | 10,459 | 28 / 28 | |
| 7 | 🇩🇪 Germany | 1,041,731 | 24 / 28 | |
| 8 | 🇫🇷 France | 97,054 | 28 / 28 | |
| 9 | 🇺🇸 United States | 65,406 | 28 / 28 | |
| 10 | 🇬🇧 United Kingdom | 800,939 | 28 / 28 | |
| 11 | 🇨🇿 Czechia | 235,658 | 28 / 28 | |
| 12 | 🇮🇪 Ireland | 22,751 | 28 / 28 | |
| 13 | 🇵🇱 Poland | 161,860 | 25 / 28 | |
| 14 | 🇮🇹 Italy | 10,570 | 28 / 28 | |
| 15 | 🇪🇸 Spain | 129,284 | 28 / 28 |
Period 6 Sept – 3 Oct. 28 days with data in the system. ⚑ = the country has data on fewer than 50 % of those days (14); none in this period. Average delay = mean over all trains with data, weighted by services.
Stations · now
Next stop of running trains, from worst to best punctuality. Only stations with 10 or more trains with data; n = trains with data.
| Station | n | Punctuality |
|---|---|---|
| Jamaica | 10 | 80 % |
| Penn Station | 13 | 100 % |
Only 2 of the 1,282 stations with trains approaching meet the minimum right now. With n = 10, a single train moves punctuality by 10 points: that is why n is always shown.
Punctuality by hour
Last 7 days, each country's local time (source: line_delay_hourly). The units are position readings, not trains: a train counts once per reading.
Filters
Punctuality by Type
Click on a bar to filter by that type
Worst Lines
More data by country
Active Services by Country
| Country | Services | Delayed | Average delay | RT Data |
|---|---|---|---|---|
| 🇦🇺 Australia | 434 | 22 | 0.5 min | Yes |
| 🇺🇸 United States | 404 | 81 | 7.6 min | Yes |
| 🇩🇪 Germany | 259 | 13 | 0.8 min | Yes |
| 🇷🇴 Romania | 195 | — | — | No |
| 🇯🇵 Japan | 173 | 0 | 0.0 min | Yes |
| 🇵🇱 Poland | 155 | 17 | 1.4 min | Yes |
| 🇨🇿 Czechia | 111 | 10 | 1.5 min | Yes |
| 🇬🇧 United Kingdom | 92 | 21 | −0.6 min | Yes |
| 🇸🇰 Slovakia | 50 | — | — | No |
| 🇨🇭 Switzerland | 40 | — | — | No |
| 🇫🇮 Finland | 33 | 1 | 0.3 min | Yes |
| 🇭🇷 Croatia | 21 | — | — | No |
| 🇫🇷 France | 19 | — | — | No |
| 🇨🇦 Canada | 18 | — | — | No |
| 🇪🇸 Spain | 13 | — | — | No |
| 🇮🇱 Israel | 12 | — | — | No |
| 🇸🇮 Slovenia | 10 | — | — | No |
| 🇩🇰 Denmark | 9 | — | — | No |
| 🇱🇻 Latvia | 9 | — | — | No |
| 🇲🇾 Malaysia | 8 | — | — | No |
| 🇳🇴 Norway | 6 | — | — | No |
| 🇳🇱 Netherlands | 5 | — | — | No |
| 🇱🇺 Luxembourg | 2 | — | — | No |
| 🇵🇹 Portugal | 1 | — | — | No |
| 🇧🇪 Belgium | 1 | — | — | No |
How late are the late trains (only trains with any delay, ≤2h; countries with ≥30% coverage)
| Country | Median | Average | P90 | Maximum | >5min | Total |
|---|---|---|---|---|---|---|
| 🇬🇧 United Kingdom | 10.0 min | 20.3 min | 54.5 min | 88.0 min | 17 | 24 |
| 🇺🇸 United States | 7.0 min | 15.3 min | 42.0 min | 58.0 min | 65 | 106 |
| 🇵🇱 Poland | 6.5 min | 10.9 min | 20.1 min | 63.0 min | 11 | 20 |
| 🇩🇪 Germany | 2.5 min | 8.6 min | 18.5 min | 81.0 min | 7 | 26 |
| 🇨🇿 Czechia | 2.0 min | 6.7 min | 12.0 min | 52.0 min | 5 | 25 |
| 🇦🇺 Australia | 1.2 min | 1.8 min | 3.5 min | 14.4 min | 4 | 115 |
| 🇯🇵 Japan | 1.0 min | 1.0 min | 1.0 min | 1.0 min | 0 | 4 |
| 🇫🇮 Finland | 0.3 min | 1.5 min | 3.7 min | 5.1 min | 1 | 4 |
Data Quality by Country
| Country | Method | Interpolated | Records |
|---|---|---|---|
| 🇦🇺 Australia | gps | No | 434 |
| 🇧🇪 Belgium | gtfs_timed | Yes | 1 |
| 🇨🇦 Canada | gtfs_timed | Yes | 18 |
| 🇨🇭 Switzerland | gtfs_timed | Yes | 40 |
| 🇨🇿 Czechia | gps | No | 111 |
| 🇩🇪 Germany | gtfs_timed | Yes | 259 |
| 🇩🇰 Denmark | gtfs_timed | Yes | 9 |
| 🇪🇸 Spain | gps | No | 13 |
| 🇫🇮 Finland | gps | No | 33 |
| 🇫🇷 France | gtfs_timed | Yes | 19 |
| 🇬🇧 United Kingdom | gps | No | 92 |
| 🇭🇷 Croatia | gtfs_timed | Yes | 21 |
| 🇮🇱 Israel | gtfs_timed | Yes | 12 |
| 🇯🇵 Japan | api_timed | Yes | 143 |
| 🇯🇵 Japan | gps | No | 30 |
| 🇱🇺 Luxembourg | gtfs_timed | Yes | 2 |
| 🇱🇻 Latvia | gtfs_timed | Yes | 9 |
| 🇲🇾 Malaysia | gps | No | 8 |
| 🇳🇱 Netherlands | gps | No | 1 |
| 🇳🇱 Netherlands | api_timed | Yes | 4 |
| 🇳🇴 Norway | gps | No | 6 |
| 🇵🇱 Poland | gtfs_timed | Yes | 155 |
| 🇵🇹 Portugal | gtfs_timed | Yes | 1 |
| 🇷🇴 Romania | gtfs_timed | Yes | 195 |
| 🇸🇮 Slovenia | gtfs_timed | Yes | 10 |
| 🇸🇰 Slovakia | gtfs_timed | Yes | 50 |
| 🇺🇸 United States | gps | No | 404 |
Historical Data
86 records
| Date | Services | Positions | Punctuality | Average delay |
|---|---|---|---|---|
| Sat 03 Oct | 133,225 | 15,646,874 | 77.5 % | 1.9 min |
| Fri 02 Oct | 144,227 | 17,574,900 | 76.0 % | 2.1 min |
| Thu 01 Oct | 144,989 | 17,279,166 | 75.7 % | 2.2 min |
| Wed 30 Sept | 144,240 | 17,779,085 | 76.6 % | 2.2 min |
| Tue 29 Sept | 145,609 | 17,980,106 | 77.4 % | 2.1 min |
| Mon 28 Sept | 142,038 | 17,400,687 | 78.2 % | 2.0 min |
| Sun 27 Sept | 115,425 | 15,131,744 | 78.0 % | 2.0 min |
| Sat 26 Sept | 130,571 | 16,561,260 | 76.1 % | 1.9 min |
| Fri 25 Sept | 144,009 | 17,489,238 | 75.2 % | 2.2 min |
| Thu 24 Sept | 144,134 | 17,918,510 | 75.6 % | 2.2 min |
| Wed 23 Sept | 144,040 | 17,948,450 | 74.2 % | 2.4 min |
| Tue 22 Sept | 144,740 | 17,989,102 | 74.7 % | 2.3 min |
| Mon 21 Sept | 145,090 | 17,863,895 | 75.1 % | 2.3 min |
| Sun 20 Sept | 109,693 | 13,691,134 | 78.6 % | 2.0 min |
| Sat 19 Sept | 125,510 | 15,200,184 | 74.9 % | 2.3 min |
| Fri 18 Sept | 141,469 | 16,738,790 | 73.2 % | 2.5 min |
| Thu 17 Sept | 139,907 | 16,883,030 | 73.6 % | 2.6 min |
| Wed 16 Sept | 141,460 | 17,337,405 | 72.8 % | 2.5 min |
| Tue 15 Sept | 140,751 | 17,171,707 | 75.6 % | 2.2 min |
| Mon 14 Sept | 139,215 | 16,795,677 | 75.5 % | 2.3 min |
| Sun 13 Sept | 109,711 | 13,669,334 | 78.4 % | 2.0 min |
| Sat 12 Sept | 124,260 | 15,288,363 | 75.7 % | 2.2 min |
| Fri 11 Sept | 139,747 | 16,675,745 | 73.6 % | 2.6 min |
| Thu 10 Sept | 140,128 | 17,013,167 | 74.7 % | 2.3 min |
| Wed 09 Sept | 136,763 | 16,310,106 | 74.0 % | 2.5 min |
| Tue 08 Sept | 139,793 | 17,126,164 | 74.8 % | 2.3 min |
| Mon 07 Sept | 139,640 | 16,806,369 | 75.9 % | 2.2 min |
| Sun 06 Sept | 110,666 | 13,751,856 | 78.7 % | 1.9 min |
| Sat 05 Sept | 124,045 | 15,203,657 | 74.6 % | 2.5 min |
| Fri 04 Sept | 135,016 | 15,668,952 | 73.0 % | 2.7 min |
| Thu 03 Sept | 134,420 | 15,628,797 | 75.4 % | 2.3 min |
| Wed 02 Sept | 134,197 | 15,709,259 | 76.8 % | 6.4 min |
| Tue 01 Sept | 133,900 | 15,576,911 | 75.6 % | 7.2 min |
| Mon 31 Aug | 131,587 | 15,438,180 | 77.5 % | 7.2 min |
| Sun 30 Aug | 104,979 | 12,109,112 | 81.3 % | 6.9 min |
| Sat 29 Aug | 117,958 | 13,692,245 | 81.1 % | 5.7 min |
| Fri 28 Aug | 136,763 | 15,703,244 | 74.0 % | 7.2 min |
| Thu 27 Aug | 136,961 | 15,959,074 | 74.7 % | 7.1 min |
| Wed 26 Aug | 136,903 | 15,932,842 | 75.6 % | 6.6 min |
| Tue 25 Aug | 135,862 | 15,812,163 | 76.7 % | 6.5 min |
| Mon 24 Aug | 135,347 | 15,900,811 | 74.6 % | 7.2 min |
| Sun 23 Aug | 104,342 | 12,449,325 | 78.7 % | 6.3 min |
| Sat 22 Aug | 117,002 | 13,789,668 | 78.2 % | 6.2 min |
| Fri 21 Aug | 135,995 | 15,783,295 | 74.8 % | 7.5 min |
| Thu 20 Aug | 136,326 | 15,914,899 | 74.4 % | 7.1 min |
| Wed 19 Aug | 136,676 | 15,772,911 | 75.6 % | 6.7 min |
| Tue 18 Aug | 136,991 | 15,879,733 | 75.8 % | 6.9 min |
| Mon 17 Aug | 134,846 | 15,853,329 | 74.9 % | 7.1 min |
| Sun 16 Aug | 105,792 | 12,555,009 | 77.3 % | 7.1 min |
| Sat 15 Aug | 117,097 | 13,793,402 | 69.6 % | 7.5 min |
| Fri 14 Aug | 135,148 | 15,747,649 | 72.5 % | 8.2 min |
| Thu 13 Aug | 134,122 | 15,742,163 | 73.7 % | 8.0 min |
| Wed 12 Aug | 136,437 | 16,003,180 | 74.9 % | 6.9 min |
| Tue 11 Aug | 136,640 | 15,966,402 | 76.7 % | 6.4 min |
| Mon 10 Aug | 135,974 | 15,953,168 | 76.2 % | 6.8 min |
| Sun 09 Aug | 104,755 | 12,362,363 | 77.9 % | 6.6 min |
| Sat 08 Aug | 118,492 | 13,712,296 | 72.8 % | 7.1 min |
| Fri 07 Aug | 135,590 | 15,794,038 | 74.5 % | 7.5 min |
| Thu 06 Aug | 135,327 | 15,815,212 | 76.1 % | 6.7 min |
| Wed 05 Aug | 136,805 | 15,990,623 | 76.1 % | 6.7 min |
| Tue 04 Aug | 135,830 | 15,779,108 | 74.9 % | 7.3 min |
| Mon 03 Aug | 135,297 | 15,857,510 | 75.7 % | 7.6 min |
| Sun 02 Aug | 106,232 | 12,621,173 | 78.3 % | 6.3 min |
| Sat 01 Aug | 118,266 | 13,823,903 | 79.9 % | 5.9 min |
| Fri 31 Jul | 134,437 | 15,757,015 | 74.8 % | 7.2 min |
| Thu 30 Jul | 134,492 | 15,802,565 | 74.9 % | 7.7 min |
| Wed 29 Jul | 135,340 | 15,852,459 | 75.3 % | 7.3 min |
| Tue 28 Jul | 135,345 | 15,772,390 | 77.1 % | 6.6 min |
| Mon 27 Jul | 134,532 | 15,841,114 | 78.4 % | 6.7 min |
| Sun 26 Jul | 106,162 | 13,031,939 | 77.8 % | 6.9 min |
| Sat 25 Jul | 117,107 | 15,002,769 | 72.6 % | 7.0 min |
| Fri 24 Jul | 134,905 | 16,626,837 | 76.7 % | 6.7 min |
| Thu 23 Jul | 134,052 | 16,490,821 | 78.3 % | 6.4 min |
| Wed 22 Jul | 136,127 | 16,911,040 | 77.6 % | 6.7 min |
| Tue 21 Jul | 135,445 | 16,774,967 | 76.9 % | 6.7 min |
| Mon 20 Jul | 135,247 | 16,720,497 | 76.9 % | 7.0 min |
| Sun 19 Jul | 99,694 | 12,993,783 | 72.3 % | 7.8 min |
| Sat 18 Jul | 76,245 | 2,695,528 | 69.0 % | 8.3 min |
| Fri 17 Jul | 69,146 | 1,352,311 | 72.3 % | 8.0 min |
| Thu 16 Jul | 89,362 | 1,989,455 | 73.7 % | 7.9 min |
| Wed 15 Jul | 135,209 | 16,702,333 | 71.4 % | 7.7 min |
| Tue 14 Jul | 136,113 | 16,917,784 | 70.2 % | 7.9 min |
| Mon 13 Jul | 134,074 | 16,653,511 | 70.2 % | 8.5 min |
| Sun 12 Jul | 99,542 | 12,897,985 | 71.9 % | 8.3 min |
| Sat 11 Jul | 117,361 | 13,454,987 | 75.7 % | 7.4 min |
| Fri 10 Jul | 19,604 | 834,252 | 72.4 % | 9.7 min |
Sources: current_positions, daily_stats and line_delay_hourly · 5 Oct 2026, 04:05 CEST