Train NS 8954 Utrecht Centraal – Bodegraven

Utrecht Centraal 16:05 → Bodegraven 16:30 Mon, Tue, Wed, Thu, Fri 0 h 25 min · 6 stops NS (Nederlandse Spoorwegen)

It does not run today

Last recorded run: Friday 6 November No data

Next service: tomorrow 16:05 from Utrecht Centraal · Mon 9 Nov

Next departure 16:05 tomorrow · Utrecht Centraal
On-time · 30 days
100%
4/4 runs under 3 min
RT coverage: 0 full · 4 partial · 15 no data
On-time · 90 days
100%
9/9 runs under 3 min
RT coverage: 5 full · 4 partial · 52 no data
Typical delay
0min
Median at arrival, 90 days
P90
+1min
9 in 10 runs arrive with less than this

Last 30 days

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

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

Distribution · 90 days

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

  • Early 0% · 0
  • On time 100% · 9
  • 3–10 min 0% · 0
  • 10–30 min 0% · 0
  • 30+ min 0% · 0

On-time by weekday

  • 100% M n=2
  • 100% T n=2
  • 100% W n=2
  • 100% T n=2
  • 100% F n=1
  • — S n=0
  • — S n=0

Stops and timetable

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

Last 90 days, 9 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
16:05on time on time
16:09≈ on time ≈ on time
16:11≈ on time ≈ on time
16:15≈ on time ≈ on time
16:21 / 16:22≈ on time ≈ on time
16:30on 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 NovWoerden 16:34No data—
Thu 5 NovWoerden 16:38Partial coverage0 min—
Wed 4 NovWoerden 16:37Partial coverage0 min—
Tue 3 NovWoerden 16:34No data—
Mon 2 NovWoerden 16:34No data—
Fri 30 OctWoerden 16:36No data—
Thu 29 OctWoerden 16:36No data—
Wed 28 OctWoerden 16:36No data—
Tue 27 OctWoerden 16:37Partial coverage0 min—
Mon 26 OctWoerden 16:36No data—
Fri 23 OctWoerden 16:36No data—
Thu 22 OctWoerden 16:36No data—
Wed 21 OctWoerden 16:36No data—
Tue 20 OctWoerden 16:36No data—
Fri 16 OctWoerden 16:36No data—
Thu 15 OctWoerden 16:36No data—
Wed 14 OctWoerden 16:36No data—
Tue 13 OctWoerden 16:36No data—
Mon 12 OctWoerden 16:37Partial coverage+1 min+1 min
Fri 9 OctLeiden Lammenschans 17:03+1 min+1 min
Thu 8 OctLeiden Lammenschans 17:010 min—
Wed 7 OctLeiden Lammenschans 17:01+1 min+1 min
Tue 6 OctLeiden Lammenschans 17:010 min—
Mon 5 OctLeiden Lammenschans 17:010 min—
Fri 2 OctLeiden Lammenschans 17:04No data—
Thu 1 OctLeiden Lammenschans 17:01No data—
Wed 30 SeptLeiden Lammenschans 17:01No data—
Tue 29 SeptLeiden Lammenschans 17:01No data—
Mon 28 SeptLeiden Lammenschans 17:02No data—
Fri 25 SeptLeiden Lammenschans 17:03No data—