Train NS 654 Leeuwarden – Den Haag Centraal

Leeuwarden 14:46 → Den Haag Centraal 17:20 Daily 2 h 34 min · 9 stops NS (Nederlandse Spoorwegen)

✓ Today’s run finished

Today, last fix heading to Gouda at 17:19 +1 min

  1. Leeuwarden14:46
  2. Heerenveen15:02
  3. Meppel15:26
  4. Zwolle15:41
  5. Amersfoort Centraal16:24
  6. Gouda17:01
  7. Den Haag Centraal17:20

Next service: tomorrow 14:46 from Leeuwarden · Sat 7 Nov

Next departure 14:46 tomorrow · Leeuwarden
On-time · 30 days
93%
13/14 runs under 3 min
RT coverage: 5 full · 9 partial · 16 no data
On-time · 90 days
82%
14/17 runs under 3 min
RT coverage: 5 full · 12 partial · 72 no data
Typical delay
0min
Median at arrival, 90 days
30 days: 0 min
P90
+4min
9 in 10 runs arrive with less than this
30 days: +1 min

Last 30 days

Arrival delay at Den Haag Centraal, in minutes. One bar per run.

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

Worst days

  • Tue 6 Oct Max en route +5 min · last fix heading to Gouda +5 min
  • Wed 7 Oct Max en route +5 min · last fix heading to Gouda +5 min
  • Sat 31 Oct Max en route +3 min · last fix heading to Gouda +3 min

Distribution · 90 days

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

  • Early 0% · 0
  • On time 82% · 14
  • 3–10 min 18% · 3
  • 10–30 min 0% · 0
  • 30+ min 0% · 0

On-time by weekday

  • 100% M n=3
  • 0% T n=1
  • 50% W n=2
  • 100% T n=2
  • 100% F n=3
  • 67% S n=3
  • 100% S n=3

Stops and timetable

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

Last 90 days, 17 runs. At intermediate stops it is an estimate from the delay at origin and destination. Delays over 2 h count as “> 2 h”: our data does not measure them exactly.

StopSched.Usually 9 days in 10
14:46on time on time
15:02≈ on time ≈ on time
15:16≈ on time ≈ on time
15:26≈ on time ≈ on time
15:41 / 15:49≈ on time ≈ on time
16:24 / 16:26≈ on time ≈ +1 min
16:39 / 16:43≈ on time ≈ +1 min
17:01 / 17:02≈ on time ≈ +1 min
17:20on time +1 min

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.

Will I make my connection?

Pick where you get off and how many minutes you have until your next train. We work it out from what this train did over the last 90 days.

Include the time to change platforms. It is an estimate from past data, not a guarantee. Days more than 2 h late count as a missed connection.

Recent runs

DateLast stopFinalMax
Fri 6 NovGouda 17:19Partial coverage+1 min+1 min
Thu 5 NovGouda 17:19No data—
Wed 4 NovGouda 17:24Partial coverage0 min—
Tue 3 NovGouda 17:19No data—
Mon 2 NovGouda 17:19No data—
Sun 1 NovGouda 17:22Partial coverage0 min—
Sat 31 OctGouda 17:16Partial coverage+3 min+3 min
Fri 30 OctGouda 17:16No data—
Thu 29 OctGouda 17:25Partial coverage0 min—
Wed 28 OctGouda 17:27No data—
Tue 27 OctGouda 17:38No data—
Mon 26 OctGouda 17:30No data—
Sun 25 OctGouda 17:36No data—
Sat 24 OctGouda 17:21+1 min+1 min
Fri 23 OctGouda 17:270 min—
Thu 22 OctGouda 17:23No data—
Wed 21 OctGouda 17:28No data—
Tue 20 OctGouda 17:23No data—
Mon 19 OctAmersfoort Centraal 16:440 min—
Sun 18 OctUtrecht Overvecht 17:23+1 min—
Sat 17 OctUtrecht Overvecht 17:24No data—
Fri 16 OctGouda 17:31No data—
Thu 15 OctGouda 17:39No data—
Wed 14 OctZwolle 17:23No data—
Tue 13 OctGouda 17:44No data—
Mon 12 OctGouda 17:230 min—
Sun 11 OctGouda 17:21Partial coverage0 min—
Sat 10 OctGouda 17:21Partial coverage0 min—
Fri 9 OctGouda 17:21Partial coverage0 min—
Thu 8 OctGouda 17:37Partial coverage0 min—