delay.world

Countries compared

How punctual are trains in the countries we cover? Every country on the same rule. Inside one table, all countries use the same period.

On time = under 6 minutes late, counted over the stops that ran. Cancelled = share of all stops.

All four countries over the same period

January to June 2026. The Swiss archive ends in June 2026, and we have Belgium from January 2026.

Long distance

#CountryOn time (under 6 min)Cancelled
1Switzerland97.0 %3.7 %
2Netherlands93.9 %12.0 %
3Belgium91.3 %not in the source
4Germany56.3 %7.5 %

Regional

#CountryOn time (under 6 min)Cancelled
1Switzerland97.5 %1.6 %
2Netherlands97.2 %5.2 %
3Belgium95.0 %not in the source
4Germany82.9 %3.3 %

Newer months, without Switzerland

January to August 2026, without July. July is left out because the German raw data has too many gaps in that month. Switzerland is missing here because its archive ends in June.

Long distance

#CountryOn time (under 6 min)Cancelled
1Netherlands93.9 %11.4 %
2Belgium91.6 %not in the source
3Germany55.5 %7.4 %

Regional

#CountryOn time (under 6 min)Cancelled
1Netherlands97.2 %5.0 %
2Belgium95.2 %not in the source
3Germany82.7 %3.4 %

Read with care: the networks differ. Dutch long-distance trains run short distances at a dense frequency, German ones often run long distances. And the Netherlands cancels more stops, which a ranking by punctuality alone does not show. That is why both values sit side by side.

Belgium: the source (Infrabel) lists only trains that ran and has no information on cancellations. That is why the “Cancelled” column is empty, and why the Belgian punctuality values look better than they can be for travellers if many trains are cancelled. They are not directly comparable with the other countries.

The Swiss source sometimes delivers the last forecast received as the actual time, so the Swiss values can be too favourable.

Based on public timetable and train archive data, not the railway companies' own measurement. Sources and licences are on the method page.

How we calculate

One day, three countries

Wednesday 19 August 2026 in Germany, the Netherlands and Belgium on one map. Every filled dot is a passenger train that ran that day, on its track and coloured by its delay: white = on time (under 6 minutes), yellow to pink = increasingly late. Rings are cancelled trains on their planned path (Germany and the Netherlands only; they are not counted). The counters show how many trains are in service in each country and what share of them is running 6 or more minutes late at that moment.

Share of the trains in service running 6 or more minutes late at 5:45 pm: Germany 27.8 % of 2,179 trains, the Netherlands 2.9 % of 346, Belgium 11.8 % of 304. At 8 am: 23.3 %, 2.5 % and 3.1 %.

The counters are a snapshot of the trains on the move at one minute, all train types together. The tables above count stops over several months, so the percentages do not compare directly. It was a normal Wednesday: in Germany 83.0 % of the stops that ran were under 6 minutes late that day, on the other August Wednesdays 82.3 to 84.2 %. Cancelled trains are not in the shares, and the Belgian data has none at all. The sources record delays differently, so compare with care.

Data: Deutsche Bahn timetable data (CC BY 4.0), collected by Piet Brömmel (piebro/deutsche-bahn-data), Rijden de Treinen (CC BY 4.0), Infrabel (CC0). Stations: DB Station&Service (CC BY 4.0), Rijden de Treinen / NS (CC0), Infrabel (CC0). Tracks: DB InfraGO (CC BY 4.0), ProRail (CC0), Infrabel (CC0). Map: Natural Earth. Analysed by delay.world.