package icon

BayesianBahn

Empirical arrival-time distributions for Deutsche Bahn trains
New in version 0.4.0
• DB's live delay is now the middle of a range, not a fixed number — widened by how wrong such reports turn out to be that far ahead. Your connecting train's departure is treated the same way, so a change weighs two honest ranges. Measured against DB over 16 days: better arrival times, and clearly better at flagging the connections you miss.
• Trains with a brand-new run number now borrow their line's history.

Fixed: connection searches froze the screen instead of showing progress (#2).
Early release: predictions are experimental — always cross-check
times and connections with DB's official apps.

BayesianBahn predicts when you will actually arrive — as a full
probability distribution, not a single number.

Enter where you start, where you want to go and when (also future trips):
the app searches direct trains and journeys with one change — routes
needing two or more changes are not covered yet, so it will sometimes
find fewer connections than DB's own apps. For each option it shows:

* the median predicted arrival time at your destination,
* an 80% credible interval,
* the full delay distribution as a chart,
* the probability of catching each connecting train,
* a Deutschland-Ticket filter that keeps you on regional trains.

Transfers are propagated with Bayes' theorem: you board the first
connecting train that has not left yet — so a delayed earlier train
counts as catchable, and a missed connection honestly shifts the whole
distribution. Live station boards and per-train predictions (including
cancellation rates) are also available.

Predictions are empirical: they come from months of real historical runs
of that exact train at that station (collected from Deutsche Bahn's
public IRIS API, CC BY 4.0), reweighted for recency and weekday. When
DB reports an actual delay the forecast is anchored on it; when it
reports nothing — which it does for most trains until shortly before
departure — the history is left to speak for itself, which measurably
beats treating the timetable as a forecast. Delay history updates
in-app — a small daily data release keeps predictions fresh to within a
day. Trains without history get an honest Bayesian prior estimate.

The app talks only to the keyless public IRIS timetable endpoint and the
project's own data releases, needs no account, no API key, no Google
services, and collects no data.

Versions

Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.

Download F-Droid
  • Version 0.4.0 (8) suggested Added on Sep 12, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 8.0 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • io.github.derweh.bayesianbahn.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 5 MiB PGP Signature | Build Log

  • New in version 0.3.0
    Journeys with a change:

    • A route is found for 86% of journeys instead of 82%, and for 73% instead of 57% at large stations. The search now weighs every possible change, not just the first trains to leave.
    • Routes arrive 5 minutes earlier on average.
    • Busy stations no longer fill the list with trains that have already left.
    • A warning shows when DB reports a disruption on your route.

    Fixed: picking a date searched from 06:00 instead of the time on the button.
  • Version 0.3.0 (7) - Added on Aug 31, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 8.0 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • io.github.derweh.bayesianbahn.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 5 MiB PGP Signature | Build Log

  • New in version 0.2.0
    • DB's live time is now trusted only when it reports a delay. Most of the time DB just repeats the timetable: three hours ahead it called 99% of trains on time, and a quarter of those arrived late. Expect this app to disagree with the platform display more often — the prediction screen explains why. Measured against DB's own forecasts, this version is more accurate on arrival times and on missed connections.

    • The interface is now available in German.
  • Version 0.2.0 (6) - Added on Aug 27, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 8.0 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • io.github.derweh.bayesianbahn.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 5 MiB PGP Signature | Build Log