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 92 % at 0 s: 135 of 147 trains report exactly 0 s: the feed may be padding the delay with 0. | 147 / 176 | 0.1 min | ||
| 2 | 🇳🇱 Netherlands 98 % at 0 s: 490 of 498 trains report exactly 0 s: the feed may be padding the delay with 0. | 498 / 573 | 0.1 min | ||
| 3 | 🇨🇭 Switzerland | 788 / 871 | 0.4 min | ||
| 4 | 🇫🇮 Finland | 114 / 128 | 1.2 min | ||
| 5 | 🇧🇬 Bulgaria | 63 / 65 | 0.8 min | ||
| 6 | 🇦🇺 Australia | 658 / 791 | 2.0 min | ||
| 7 | 🇸🇪 Sweden | 85 / 92 | 1.7 min | ||
| 8 | 🇵🇱 Poland | 653 / 667 | 2.7 min | ||
| 9 | 🇳🇴 Norway | 111 / 111 | 2.1 min | ||
| 10 | 🇫🇷 France | 1,077 / 1,095 | 4.3 min | ||
| 11 | 🇬🇧 United Kingdom | 1,940 / 1,951 | 1.8 min | ||
| 12 | 🇩🇪 Germany | 2,317 / 2,675 | 3.2 min | ||
| 13 | 🇺🇸 United States | 86 / 102 | 4.8 min | ||
| 14 | 🇮🇪 Ireland | 80 / 99 | 3.6 min | ||
| 15 | 🇪🇸 Spain | 689 / 796 | 6.4 min | ||
| 16 | 🇮🇹 Italy | 186 / 209 | 4.0 min |
Not enough data · 14 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 2,113 trains do appear on the map.
| Country | Trains with data / total | Coverage | Reason |
|---|---|---|---|
| 🇨🇦 Canada | 6 / 8 | Small sample (6 < 20) | |
| 🇨🇿 Czechia | 123 / 580 | Only 21.2% of trains with data (minimum 30%) |
No realtime delay feed (12):
- 🇧🇪 Belgium · 343 trains
- 🇩🇰 Denmark · 287 trains
- 🇷🇴 Romania · 207 trains
- 🇲🇾 Malaysia · 169 trains
- 🇸🇰 Slovakia · 146 trains
- 🇵🇹 Portugal · 119 trains
- 🇮🇱 Israel · 69 trains
- 🇭🇷 Croatia · 58 trains
- 🇱🇺 Luxembourg · 53 trains
- 🇸🇮 Slovenia · 42 trains
- 🇱🇻 Latvia · 23 trains
- 🇪🇪 Estonia · 9 trains
Trend · 30 days
Daily punctuality, weighted by services (source: daily_stats).
2,710,075 services with data over 28 days. 14–18 countries per day.
Delay Distribution · now
Over the 9,621 trains with RT data (not the 12,514 on the map).
- Early or on time 57.9 %
- < 3 min 17.3 %
- 3-5 min 7.3 %
- 5-10 min 9.1 %
- 10-20 min 5.2 %
- > 20 min 3.1 %
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 | 🇯🇵 Japan | 83,343 | 28 / 28 | |
| 2 | 🇨🇭 Switzerland | 268,905 | 28 / 28 | |
| 3 | 🇫🇮 Finland | 27,453 | 26 / 28 | |
| 4 | 🇦🇺 Australia | 172,795 | 28 / 28 | |
| 5 | 🇸🇪 Sweden | 19,990 | 28 / 28 | |
| 6 | 🇳🇴 Norway | 16,509 | 28 / 28 | |
| 7 | 🇫🇷 France | 160,173 | 28 / 28 | |
| 8 | 🇩🇪 Germany | 1,091,117 | 26 / 28 | |
| 9 | 🇬🇧 United Kingdom | 615,689 | 28 / 28 | |
| 10 | 🇨🇿 Czechia | 133,110 | 16 / 28 | |
| 11 | 🇺🇸 United States | 77,252 | 28 / 28 | |
| 12 | 🇵🇱 Poland | 180,198 | 28 / 28 | |
| 13 | 🇮🇪 Ireland | 22,554 | 28 / 28 | |
| 14 | 🇮🇹 Italy | 21,541 | 28 / 28 | |
| 15 | 🇪🇸 Spain | 143,479 | 28 / 28 |
Period 20 Sept – 17 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 |
|---|---|---|
| Madrid-Puerta de Atocha-Almudena Grandes | 13 | 0 % |
| Paris Gare de Lyon Hall 1 - 2 | 15 | 20 % |
| Barcelona-Sants | 15 | 20 % |
| Madrid-Chamartín-Clara Campoamor | 29 / 30 | 38 % |
| Stuttgart Hbf | 14 / 18 | 50 % |
| Köln Messe/Deutz | 10 | 50 % |
| Nürnberg Hbf | 15 / 20 | 53 % |
| Frankfurt(Main)Hbf | 14 / 17 | 57 % |
| München-Pasing | 12 | 58 % |
| Lyon Perrache | 10 | 60 % |
| Hamburg Hbf | 11 / 15 | 64 % |
| Mannheim Hbf | 12 / 13 | 67 % |
| Paris Montparnasse Hall 1 - 2 | 14 | 71 % |
| Hannover Hbf | 11 / 16 | 73 % |
| Ulm Hbf | 12 | 75 % |
| Barcelona Estació de França | 10 | 80 % |
| L'Hospitalet de Llobregat | 10 | 80 % |
| Bilbao-Intermod. Abando Indalecio Prieto | 10 | 100 % |
| Nantes | 10 | 100 % |
Only 19 of the 7,956 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
- 1 631BFR ice 0.0 % 39.0 min
- 2 C8bES Commuter 0.0 % 31.6 min
- 3 Pacific SurflinerUS Regional 0.0 % 27.4 min
- 4 RT1DE Regional 0.0 % 25.7 min
- 5 EurostarFR ice 0.0 % 22.3 min
- 6 601AFR ice 14.3 % 25.7 min
- 7 RT4DE Regional 16.7 % 37.8 min
- 8 631CFR ice 20.0 % 33.0 min
- 9 C8aES Commuter 20.0 % 20.0 min
- 10 MEX18DE Regional Expr. 50.0 % 23.0 min
More data by country
Active Services by Country
| Country | Services | Delayed | Average delay | RT Data |
|---|---|---|---|---|
| 🇩🇪 Germany | 2,675 | 652 | 3.2 min | Yes |
| 🇬🇧 United Kingdom | 1,951 | 519 | 1.8 min | Yes |
| 🇫🇷 France | 1,095 | 272 | 4.3 min | Yes |
| 🇨🇭 Switzerland | 871 | 26 | 0.4 min | Yes |
| 🇪🇸 Spain | 796 | 346 | 6.4 min | Yes |
| 🇦🇺 Australia | 791 | 129 | 2.0 min | Yes |
| 🇵🇱 Poland | 667 | 133 | 2.7 min | Yes |
| 🇨🇿 Czechia | 580 | — | — | No |
| 🇳🇱 Netherlands | 573 | 4 | 0.1 min | Yes |
| 🇧🇪 Belgium | 343 | — | — | No |
| 🇩🇰 Denmark | 287 | — | — | No |
| 🇮🇹 Italy | 209 | 113 | 4.0 min | Yes |
| 🇷🇴 Romania | 207 | — | — | No |
| 🇯🇵 Japan | 176 | 1 | 0.1 min | Yes |
| 🇲🇾 Malaysia | 169 | — | — | No |
| 🇸🇰 Slovakia | 146 | — | — | No |
| 🇫🇮 Finland | 128 | 14 | 1.2 min | Yes |
| 🇵🇹 Portugal | 119 | — | — | No |
| 🇳🇴 Norway | 111 | 24 | 2.1 min | Yes |
| 🇺🇸 United States | 102 | 33 | 4.8 min | Yes |
| 🇮🇪 Ireland | 99 | 38 | 3.6 min | Yes |
| 🇸🇪 Sweden | 92 | 17 | 1.7 min | Yes |
| 🇮🇱 Israel | 69 | — | — | No |
| 🇧🇬 Bulgaria | 65 | 8 | 0.8 min | Yes |
| 🇭🇷 Croatia | 58 | — | — | No |
| 🇱🇺 Luxembourg | 53 | — | — | No |
| 🇸🇮 Slovenia | 42 | — | — | No |
| 🇱🇻 Latvia | 23 | — | — | No |
| 🇪🇪 Estonia | 9 | — | — | No |
| 🇨🇦 Canada | 8 | — | — | 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 States | 10.0 min | 15.5 min | 35.9 min | 59.0 min | 25 | 42 |
| 🇫🇷 France | 10.0 min | 16.9 min | 40.0 min | 118.0 min | 174 | 273 |
| 🇪🇸 Spain | 7.0 min | 10.6 min | 22.0 min | 94.0 min | 263 | 423 |
| 🇮🇹 Italy | 5.0 min | 5.8 min | 10.0 min | 33.0 min | 63 | 149 |
| 🇩🇪 Germany | 4.0 min | 8.2 min | 19.0 min | 118.0 min | 399 | 940 |
| 🇵🇱 Poland | 4.0 min | 9.2 min | 20.2 min | 101.0 min | 72 | 200 |
| 🇸🇪 Sweden | 3.5 min | 6.5 min | 17.7 min | 29.8 min | 9 | 32 |
| 🇳🇱 Netherlands | 3.4 min | 8.4 min | 25.3 min | 30.4 min | 3 | 8 |
| 🇮🇪 Ireland | 3.0 min | 4.9 min | 8.0 min | 46.0 min | 15 | 59 |
| 🇧🇬 Bulgaria | 2.9 min | 3.1 min | 5.2 min | 7.1 min | 2 | 17 |
| 🇳🇴 Norway | 2.1 min | 3.2 min | 5.0 min | 30.3 min | 8 | 75 |
| 🇬🇧 United Kingdom | 2.0 min | 3.7 min | 8.0 min | 39.0 min | 209 | 1,070 |
| 🇫🇮 Finland | 2.0 min | 3.3 min | 6.7 min | 28.7 min | 8 | 43 |
| 🇦🇺 Australia | 1.9 min | 4.1 min | 9.1 min | 53.7 min | 70 | 337 |
| 🇯🇵 Japan | 1.0 min | 1.4 min | 2.0 min | 3.0 min | 0 | 12 |
| 🇨🇭 Switzerland | 0.6 min | 1.6 min | 2.8 min | 30.2 min | 14 | 280 |
Data Quality by Country
| Country | Method | Interpolated | Records |
|---|---|---|---|
| 🇦🇺 Australia | gtfs_timed | Yes | 70 |
| 🇦🇺 Australia | gps | No | 721 |
| 🇧🇪 Belgium | gtfs_timed | Yes | 343 |
| 🇧🇬 Bulgaria | gtfs_timed | Yes | 65 |
| 🇨🇦 Canada | gtfs_timed | Yes | 8 |
| 🇨🇭 Switzerland | gtfs_timed | Yes | 871 |
| 🇨🇿 Czechia | gtfs_timed | Yes | 457 |
| 🇨🇿 Czechia | gps | No | 123 |
| 🇩🇪 Germany | gtfs_timed | Yes | 2,675 |
| 🇩🇰 Denmark | gtfs_timed | Yes | 287 |
| 🇪🇪 Estonia | gtfs_timed | Yes | 9 |
| 🇪🇸 Spain | gps | No | 796 |
| 🇫🇮 Finland | gps | No | 128 |
| 🇫🇷 France | gtfs_timed | Yes | 1,095 |
| 🇬🇧 United Kingdom | gps | No | 1,951 |
| 🇭🇷 Croatia | gtfs_timed | Yes | 58 |
| 🇮🇪 Ireland | gps | No | 99 |
| 🇮🇱 Israel | gtfs_timed | Yes | 69 |
| 🇮🇹 Italy | gtfs_timed | Yes | 209 |
| 🇯🇵 Japan | gps | No | 29 |
| 🇯🇵 Japan | api_timed | Yes | 147 |
| 🇱🇺 Luxembourg | gtfs_timed | Yes | 53 |
| 🇱🇻 Latvia | gtfs_timed | Yes | 23 |
| 🇲🇾 Malaysia | gtfs_timed | Yes | 163 |
| 🇲🇾 Malaysia | gps | No | 6 |
| 🇳🇱 Netherlands | api_timed | Yes | 257 |
| 🇳🇱 Netherlands | gps | No | 316 |
| 🇳🇴 Norway | gps | No | 111 |
| 🇵🇱 Poland | gtfs_timed | Yes | 667 |
| 🇵🇹 Portugal | gtfs_timed | Yes | 119 |
| 🇷🇴 Romania | gtfs_timed | Yes | 207 |
| 🇸🇪 Sweden | gps | No | 92 |
| 🇸🇮 Slovenia | gtfs_timed | Yes | 42 |
| 🇸🇰 Slovakia | gtfs_timed | Yes | 146 |
| 🇺🇸 United States | gps | No | 102 |
Historical Data
88 records
| Date | Services | Positions | Punctuality | Average delay |
|---|---|---|---|---|
| Sat 17 Oct | 134,939 | 14,302,601 | 79.1 % | 2.3 min |
| Fri 16 Oct | 158,868 | 17,844,016 | 74.6 % | 2.8 min |
| Thu 15 Oct | 157,946 | 17,714,724 | 74.2 % | 2.8 min |
| Wed 14 Oct | 157,670 | 17,111,478 | 74.4 % | 2.8 min |
| Tue 13 Oct | 157,891 | 17,638,453 | 73.9 % | 2.9 min |
| Mon 12 Oct | 155,466 | 17,259,513 | 75.3 % | 2.8 min |
| Sun 11 Oct | 118,706 | 12,829,739 | 82.0 % | 1.9 min |
| Sat 10 Oct | 133,837 | 14,131,381 | 78.9 % | 2.4 min |
| Fri 09 Oct | 159,003 | 17,565,641 | 74.7 % | 2.9 min |
| Thu 08 Oct | 158,390 | 17,315,208 | 74.2 % | 2.9 min |
| Wed 07 Oct | 158,739 | 17,639,653 | 75.9 % | 2.8 min |
| Tue 06 Oct | 158,670 | 17,556,347 | 76.9 % | 2.5 min |
| Mon 05 Oct | 153,999 | 16,056,796 | 77.6 % | 2.4 min |
| Sun 04 Oct | 115,985 | 12,375,758 | 81.8 % | 1.9 min |
| Sat 03 Oct | 127,764 | 15,375,336 | 77.1 % | 2.2 min |
| Fri 02 Oct | 136,717 | 17,124,526 | 75.6 % | 2.4 min |
| Thu 01 Oct | 137,474 | 16,838,843 | 75.5 % | 2.4 min |
| Wed 30 Sept | 136,739 | 17,336,837 | 76.5 % | 2.4 min |
| Tue 29 Sept | 137,883 | 17,545,397 | 77.1 % | 2.3 min |
| Mon 28 Sept | 134,951 | 17,015,261 | 77.9 % | 2.2 min |
| Sun 27 Sept | 111,435 | 14,957,353 | 78.0 % | 2.2 min |
| Sat 26 Sept | 124,905 | 16,279,191 | 75.8 % | 2.2 min |
| Fri 25 Sept | 136,829 | 17,073,752 | 74.9 % | 2.5 min |
| Thu 24 Sept | 136,766 | 17,500,820 | 75.3 % | 2.4 min |
| Wed 23 Sept | 136,836 | 17,537,411 | 74.0 % | 2.6 min |
| Tue 22 Sept | 137,146 | 17,566,133 | 74.4 % | 2.5 min |
| Mon 21 Sept | 137,928 | 17,480,242 | 74.8 % | 2.5 min |
| Sun 20 Sept | 105,693 | 13,514,794 | 78.6 % | 2.1 min |
| Sat 19 Sept | 119,872 | 14,927,587 | 74.6 % | 2.7 min |
| Fri 18 Sept | 134,241 | 16,324,696 | 72.7 % | 2.7 min |
| Thu 17 Sept | 132,518 | 16,465,081 | 73.2 % | 2.8 min |
| Wed 16 Sept | 133,752 | 16,902,488 | 72.2 % | 2.9 min |
| Tue 15 Sept | 133,081 | 16,737,777 | 75.4 % | 2.4 min |
| Mon 14 Sept | 132,297 | 16,422,246 | 75.3 % | 2.5 min |
| Sun 13 Sept | 105,760 | 13,505,724 | 78.5 % | 2.1 min |
| Sat 12 Sept | 118,743 | 15,021,367 | 75.1 % | 2.5 min |
| Fri 11 Sept | 132,307 | 16,251,637 | 73.2 % | 2.8 min |
| Thu 10 Sept | 132,617 | 16,585,010 | 74.4 % | 2.5 min |
| Wed 09 Sept | 129,215 | 15,886,085 | 73.6 % | 2.8 min |
| Tue 08 Sept | 132,252 | 16,704,662 | 74.5 % | 2.5 min |
| Mon 07 Sept | 132,523 | 16,420,645 | 75.7 % | 2.4 min |
| Sun 06 Sept | 106,405 | 13,572,621 | 78.9 % | 2.1 min |
| Sat 05 Sept | 118,210 | 14,926,226 | 74.2 % | 2.8 min |
| Fri 04 Sept | 127,625 | 15,244,162 | 72.7 % | 2.9 min |
| Thu 03 Sept | 126,873 | 15,202,375 | 75.1 % | 2.5 min |
| Wed 02 Sept | 127,219 | 15,278,935 | 76.8 % | 5.8 min |
| Tue 01 Sept | 126,813 | 15,165,243 | 75.5 % | 6.7 min |
| Mon 31 Aug | 126,266 | 15,158,283 | 77.6 % | 6.6 min |
| Sun 30 Aug | 102,038 | 11,976,226 | 81.2 % | 6.4 min |
| Sat 29 Aug | 112,774 | 13,424,281 | 81.4 % | 4.9 min |
| Fri 28 Aug | 130,134 | 15,291,735 | 74.2 % | 6.3 min |
| Thu 27 Aug | 129,982 | 15,529,526 | 74.8 % | 6.4 min |
| Wed 26 Aug | 130,277 | 15,512,515 | 75.7 % | 5.9 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 |
Sources: current_positions, daily_stats and line_delay_hourly · 19 Oct 2026, 08:34 CEST