IR15 2519 Genève-Aéroport – Luzern
Alerts for train 2519
Alerts are saved per line, not per trip id, so they keep working when the operator changes the timetable. This train runs on line IR15.
✓ Today’s run finished
Today it reached Luzern at 14:02 +1 min
- Genève-Aéroport10:45
- Nyon11:07
- Lausanne11:37
- Romont FR12:13
- Fribourg/Freiburg12:32
- Zofingen13:28
- Luzern14:01
Next service: tomorrow 10:45 from Genève-Aéroport · Mon 12 Oct
Last 30 days
Arrival delay at Luzern, in minutes. One bar per run.
- On time (<3 min)
- 3–10 min
- 10–30 min
- 30+ min
- Partial coverage
- No data
Worst days
- Sun 30 Aug Max en route +11 min · last fix heading to Luzern +10 min
- Wed 29 Jul Max en route +8 min · last fix heading to Fribourg/Freiburg +8 min
Distribution · 90 days
26 runs with a known final delay. On time = under 3 min, the same cut the map uses.
- Early 4% · 1
- On time 88% · 23
- 3–10 min 4% · 1
- 10–30 min 4% · 1
- 30+ min 0% · 0
On-time by weekday
- 100% M n=5
- 100% T n=2
- 50% W n=2
- 100% T n=3
- 100% F n=4
- 100% S n=4
- 83% S n=6
Stops and timetable
Timetable of the latest run from the operator’s GTFS (12 stops).
| Stop | Sched. |
|---|---|
| 10:45 | |
| 10:52 / 10:54 | |
| 11:07 / 11:09 | |
| 11:24 / 11:26 | |
| 11:37 / 11:40 | |
| 11:57 | |
| 12:13 | |
| 12:32 / 12:33 | |
| 12:56 / 13:00 | |
| 13:28 / 13:29 | |
| 13:41 / 13:42 | |
| 14:01 |
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
| Date | Last stop | Final | Max |
|---|---|---|---|
| Sun 11 Oct | Luzern 14:03 | +1 min | — |
| Sat 10 Oct | Luzern 14:03 | +1 min | — |
| Fri 9 Oct | Luzern 14:02 | 0 min | — |
| Thu 8 Oct | Luzern 14:05 | +3 min | +3 min |
| Wed 7 Oct | Luzern 14:02 | +1 min | — |
| Tue 6 Oct | Luzern 14:02 | 0 min | — |
| Mon 5 Oct | Luzern 14:04 | +1 min | +1 min |
| Sun 4 Oct | Luzern 14:17 | −1 min | — |
| Mon 21 Sept | Luzern 16:00 | 0 min | — |
| Mon 14 Sept | Luzern 09:00 | +1 min | +1 min |
| Fri 11 Sept | Luzern 09:00 | 0 min | +9 min |
| Tue 8 Sept | Luzern 23:00 | 0 min | — |
| Sun 6 Sept | Luzern 23:00 | +1 min | +1 min |
| Sat 5 Sept | Luzern 23:00 | +1 min | +1 min |
| Fri 4 Sept | Luzern 23:00 | +1 min | — |
| Mon 31 Aug | Luzern 00:00 | 0 min | — |
| Sun 30 Aug | Luzern 00:00 | +10 min | +11 min |
| Sun 23 Aug | Luzern 22:00 | 0 min | — |
| Sat 22 Aug | Luzern 22:00 | −1 min | — |
| Fri 21 Aug | Luzern 00:00 | +2 min | +2 min |
| Thu 13 Aug | Fribourg/Freiburg 00:39 | No data | — |
| Thu 6 Aug | Fribourg/Freiburg 00:34 | −1 min | — |
| Sun 2 Aug | Luzern 23:16 | 0 min | — |
| Wed 29 Jul | Fribourg/Freiburg 00:45 | +8 min | +8 min |
| Mon 27 Jul | Fribourg/Freiburg 00:33 | 0 min | +1 min |
| Sat 25 Jul | Luzern 23:59 | 0 min | — |
| Thu 23 Jul | Bern 23:59 | 0 min | — |
| Tue 21 Jul | Bern 23:59 | No data | — |
| Sun 19 Jul | Bern 23:59 | No data | — |
| Sat 18 Jul | Luzern 23:59 | No data | — |