IR15 2521 Genève-Aéroport – Luzern
Alerts for train 2521
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 15:01 0 min
- Genève-Aéroport11:45
- Nyon12:07
- Lausanne12:37
- Romont FR13:13
- Fribourg/Freiburg13:32
- Zofingen14:28
- Luzern15:01
Next service: tomorrow 11: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
- Thu 27 Aug Max en route +57 min · last fix heading to Luzern +57 min
- Sun 4 Oct Max en route +4 min · last fix heading to Luzern +4 min
Distribution · 90 days
20 runs with a known final delay. On time = under 3 min, the same cut the map uses.
- Early 0% · 0
- On time 90% · 18
- 3–10 min 5% · 1
- 10–30 min 0% · 0
- 30+ min 5% · 1
On-time by weekday
- 100% M n=1
- 100% T n=1
- 100% W n=3
- 75% T n=4
- 100% F n=3
- 100% S n=3
- 80% S n=5
Stops and timetable
Timetable of the latest run from the operator’s GTFS (12 stops).
| Stop | Sched. |
|---|---|
| 11:45 | |
| 11:52 / 11:54 | |
| 12:07 / 12:09 | |
| 12:24 / 12:26 | |
| 12:37 / 12:40 | |
| 12:57 | |
| 13:13 | |
| 13:32 / 13:33 | |
| 13:56 / 14:00 | |
| 14:28 / 14:29 | |
| 14:41 / 14:42 | |
| 15: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 15:02 | 0 min | +2 min |
| Sat 10 Oct | Luzern 15:02 | 0 min | +1 min |
| Fri 9 Oct | Luzern 15:02 | 0 min | +1 min |
| Thu 8 Oct | Luzern 15:02 | 0 min | — |
| Wed 7 Oct | Luzern 15:02 | 0 min | — |
| Tue 6 Oct | Luzern 15:02 | +1 min | — |
| Mon 5 Oct | Luzern 15:03 | 0 min | — |
| Sun 4 Oct | Luzern 15:22 | +4 min | +4 min |
| Sun 27 Sept | Luzern 14:01 | +1 min | — |
| Sat 26 Sept | Luzern 17:00 | 0 min | +9 min |
| Thu 24 Sept | Luzern 22:00 | +1 min | — |
| Fri 18 Sept | Luzern 23:00 | +1 min | — |
| Sat 12 Sept | Luzern 19:00 | 0 min | — |
| Sun 30 Aug | Fribourg/Freiburg 10:27 | 0 min | — |
| Thu 27 Aug | Luzern 23:00 | +57 min | +57 min |
| Fri 21 Aug | Luzern 17:00 | 0 min | — |
| Sun 16 Aug | Lausanne 00:22 | 0 min | +3 min |
| Thu 13 Aug | Luzern 19:00 | 0 min | — |
| Wed 12 Aug | Luzern 19:00 | 0 min | — |
| Wed 5 Aug | Luzern 00:01 | +1 min | +2 min |
| Sat 25 Jul | Luzern 23:59 | No data | — |
| Fri 24 Jul | Luzern 23:59 | No data | — |
| Sat 18 Jul | Bern 23:59 | No data | — |
| Fri 17 Jul | Fribourg/Freiburg 21:16 | No data | — |