Train NS 2309 Haarlem – Vlissingen

Haarlem 05:25 → Vlissingen 07:50 Mon, Tue, Wed, Thu, Fri 2 h 25 min · 15 stops NS (Nederlandse Spoorwegen)

✓ Today’s run finished

Today, last fix heading to Middelburg at 07:58 0 min

  1. Haarlem05:25
  2. Leiden Centraal05:44
  3. Delft06:06
  4. Rotterdam Centraal06:18
  5. Dordrecht06:36
  6. Middelburg07:43
  7. Vlissingen07:50

Next service: tomorrow 05:25 from Haarlem · Fri 16 Oct

Next departure 05:25 tomorrow · Haarlem
On-time · 30 days
95%
21/22 runs under 3 min
RT coverage: 21 full · 1 partial · 0 no data
On-time · 90 days
96%
55/57 runs under 3 min
RT coverage: 56 full · 1 partial · 6 no data
Typical delay
0min
Median at arrival, 90 days
30 days: 0 min
P90
+1min
9 in 10 runs arrive with less than this
30 days: +1 min

Last 30 days

Arrival delay at Vlissingen, in minutes. One bar per run.

  • On time (<3 min)
  • 3–10 min
  • 10–30 min
  • 30+ min
  • Partial coverage
  • No data

Worst days

  • Mon 12 Oct Max en route +7 min · last fix heading to Middelburg +4 min
  • Thu 23 Jul Max en route +4 min · last fix heading to Schiedam Centrum +3 min

Distribution · 90 days

57 runs with a known final delay. On time = under 3 min, the same cut the map uses.

  • Early 4% · 2
  • On time 93% · 53
  • 3–10 min 4% · 2
  • 10–30 min 0% · 0
  • 30+ min 0% · 0

On-time by weekday

  • 92% M n=12
  • 100% T n=12
  • 100% W n=11
  • 92% T n=12
  • 100% F n=10
  • — S n=0
  • — S n=0

Stops and timetable

Timetable of the latest run from the operator’s GTFS (15 stops).

StopSched.
05:25
05:30
05:44 / 05:46
05:54 / 05:55
05:58 / 05:59
06:06
06:14
06:18 / 06:21
06:24
06:36 / 06:37
07:00 / 07:02
07:12
07:31
07:43
07:50

Each run is closed into train_runs (country, train number, service day) from the live positions. Final delay = last delay seen. Partial coverage: the feed stopped before the final stop (last value used, hatched in the chart). No data: a run without any valid delay; counts as neither on time nor late. Data collected since 11 July 2026.

Recent runs

DateLast stopFinalMax
Thu 15 OctMiddelburg 07:58Partial coverage0 min—
Wed 14 OctMiddelburg 07:580 min—
Tue 13 OctMiddelburg 07:580 min—
Mon 12 OctMiddelburg 08:05+4 min+7 min
Fri 9 OctMiddelburg 07:58+1 min—
Thu 8 OctMiddelburg 07:570 min—
Wed 7 OctMiddelburg 07:570 min—
Tue 6 OctMiddelburg 07:59+2 min+2 min
Mon 5 OctRotterdam Blaak 12:060 min+4 min
Fri 2 OctRotterdam Blaak 00:52+1 min+4 min
Thu 1 OctRotterdam Blaak 17:040 min+3 min
Wed 30 SeptRotterdam Blaak 15:150 min+2 min
Tue 29 SeptRotterdam Blaak 17:33+1 min+8 min
Mon 28 SeptRotterdam Blaak 14:210 min—
Fri 25 SeptRotterdam Blaak 17:230 min+1 min
Thu 24 SeptRotterdam Blaak 22:410 min+2 min
Wed 23 SeptRotterdam Blaak 08:440 min—
Tue 22 SeptRotterdam Blaak 21:21+1 min+14 min
Mon 21 SeptRotterdam Blaak 00:040 min+19 min
Fri 18 SeptRotterdam Blaak 23:20−1 min+3 min
Thu 17 SeptRotterdam Blaak 00:060 min+3 min
Wed 16 SeptRotterdam Blaak 21:450 min+5 min
Tue 15 SeptRotterdam Blaak 23:040 min+8 min
Mon 14 SeptRotterdam Blaak 17:050 min+2 min
Fri 11 SeptRotterdam Blaak 17:510 min+3 min
Thu 10 SeptRotterdam Blaak 00:390 min+8 min
Tue 8 SeptRotterdam Blaak 19:17−4 min+2 min
Mon 7 SeptRotterdam Blaak 19:500 min+3 min
Fri 4 SeptRotterdam Blaak 00:540 min—
Thu 3 SeptRotterdam Blaak 18:050 min+11 min