Train NS 3520 Utrecht Centraal – Den Haag Centraal

Utrecht Centraal 07:41 → Den Haag Centraal 08:42 Mon, Tue, Wed, Thu, Fri, Sat 1 h 01 min · 6 stops NS (Nederlandse Spoorwegen)

✓ Today’s run finished

Today, last fix heading to Leiden Centraal at 08:46 0 min

  1. Utrecht Centraal07:41
  2. Amsterdam Bijlmer ArenA07:58
  3. Amsterdam Zuid08:04
  4. Schiphol Airport08:13
  5. Leiden Centraal08:30
  6. Den Haag Centraal08:42

Next service: Monday 07:41 from Utrecht Centraal · Mon 2 Nov

Next departure 07:41 Monday · Utrecht Centraal
On-time · 30 days
87%
20/23 runs under 3 min
RT coverage: 22 full · 1 partial · 3 no data
On-time · 90 days
87%
20/23 runs under 3 min
RT coverage: 22 full · 1 partial · 54 no data
Typical delay
0min
Median at arrival, 90 days
30 days: 0 min
P90
+3min
9 in 10 runs arrive with less than this
30 days: +3 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

  • Wed 28 Oct Max en route +10 min · last fix heading to Rotterdam Blaak +10 min
  • Sat 17 Oct Max en route +8 min · last fix heading to Rotterdam Blaak +7 min
  • Fri 30 Oct Max en route +4 min · last fix heading to Rotterdam Blaak +4 min

Distribution · 90 days

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

  • Early 0% · 0
  • On time 87% · 20
  • 3–10 min 9% · 2
  • 10–30 min 4% · 1
  • 30+ min 0% · 0

On-time by weekday

  • 100% M n=3
  • 100% T n=4
  • 75% W n=4
  • 100% T n=4
  • 75% F n=4
  • 75% S n=4
  • — S n=0

Stops and timetable

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

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
Sat 31 OctLeiden Centraal 08:46Partial coverage0 min—
Fri 30 OctRotterdam Blaak 09:46+4 min+4 min
Thu 29 OctRotterdam Blaak 09:300 min—
Wed 28 OctRotterdam Blaak 09:29+10 min+10 min
Tue 27 OctRotterdam Blaak 09:300 min—
Mon 26 OctRotterdam Blaak 09:330 min—
Sat 24 OctRotterdam Blaak 09:260 min—
Fri 23 OctRotterdam Blaak 09:350 min—
Thu 22 OctRotterdam Blaak 09:310 min—
Wed 21 OctRotterdam Blaak 09:300 min—
Tue 20 OctRotterdam Blaak 09:330 min—
Mon 19 OctRotterdam Blaak 09:350 min—
Sat 17 OctRotterdam Blaak 09:36+7 min+8 min
Fri 16 OctRotterdam Blaak 09:250 min—
Thu 15 OctRotterdam Blaak 10:580 min—
Wed 14 OctRotterdam Blaak 09:290 min—
Tue 13 OctRotterdam Blaak 09:330 min—
Mon 12 OctRotterdam Blaak 09:300 min—
Sat 10 OctRotterdam Blaak 09:260 min—
Fri 9 OctRotterdam Blaak 09:27+1 min+2 min
Thu 8 OctRotterdam Blaak 09:31+2 min+2 min
Wed 7 OctRotterdam Blaak 09:31+1 min—
Tue 6 OctRotterdam Blaak 09:300 min—
Mon 5 OctRotterdam Blaak 09:29No data—
Sat 3 OctDordrecht 09:38No data—
Fri 2 OctRotterdam Blaak 09:25No data—
Thu 1 OctRotterdam Blaak 09:30No data—
Wed 30 SeptRotterdam Blaak 09:31No data—
Tue 29 SeptRotterdam Blaak 09:30No data—
Mon 28 SeptRotterdam Blaak 09:32No data—