Legal
Privacy Policy
Last updated
1. Who is responsible
Live Trains is operated by an individual based in the United Kingdom, who is the data controller for the purposes of the UK GDPR and the Data Protection Act 2018.
For anything in this policy, including a request to see or delete your data, write to privacy@liverailway.co.uk.
If you think your data has been handled badly and we have not put it right, you can complain to the Information Commissioner’s Office at ico.org.uk. We would rather you told us first, but you do not have to.
2. Using Live Trains without an account
Searching, departure boards, the map and every station page work signed out, and always will. Using them this way, we hold two things:
- Server request logs. Like almost every web server, ours records the requests it receives. A log line includes the IP address the request came from, the page or API path, the time, and the browser’s user agent string. These exist so that faults can be diagnosed and abuse can be spotted. They are not used to build a profile of anyone and they are never combined with account data.
- Rate-limit counters. To stop one source flooding the service, we count recent requests per address. The address is put through SHA-256 first and only the resulting hash is stored, so the counter works without keeping a list of who has visited. These counters expire on their own, within an hour at most.
There are no cookies. Not for analytics, not for advertising, not for anything. That is why you have never seen a cookie banner here, and it is not an oversight. Your browser does keep some things locally, which is described in section 6.
3. What an account stores
An account exists for one reason: so your favourite stations, saved routes and settings follow you between the website and your phone. It holds the following, and nothing else.
| What | Why | Notes |
|---|---|---|
| Email address | Signing in, and sending you links and codes | The only piece that identifies you personally |
| Password | Signing in | Stored as an Argon2id hash. We cannot read your password and could not tell you what it is |
| Display name | Addressing you in the app | Optional, and blank unless you set it |
| Favourite stations and routes | The point of having an account | Station codes and the labels you gave them |
| Settings | Keeping preferences in step across devices | For example Simple Mode, or whether live activities are on |
| Two-factor secret | Checking your authenticator codes | Encrypted at rest with a key held outside the database |
| Recovery codes | Getting back in if you lose your phone | Stored as hashes; the plain codes are shown once and never again |
| Sign-in sessions | Keeping you signed in, and letting you sign out everywhere | Browser or device description, timestamps, and a hashed IP address |
Account data is never shared with the rail industry. National Rail, Network Rail, Realtime Trains and the train operators receive nothing about you. When the app looks up a departure board it asks for a station, not for a person.
4. Why we are allowed to hold it
- Performing a contract with you. Your email address, password, favourites and settings exist because you asked for an account and those are what an account is.
- Legitimate interests. Server logs, rate-limit counters and session records exist to keep the service up and to stop it being abused. We think that is a fair use, and it is the minimum that does the job.
- Consent. The iOS app asks before using your location, and you can refuse or withdraw that at any time in iOS Settings without losing anything else.
5. How long things are kept
- Your account is kept until you delete it. There is no inactivity cutoff.
- Sign-in sessions are deleted 30 days after they expire.
- Sign-in links and email codes are deleted 7 days after they expire. They stop working long before that: a sign-in link lasts 30 minutes, a code 15 minutes, a confirmation link 24 hours.
- Rate-limit counters expire within an hour.
- Server logs are rotated by the host and are not archived anywhere else.
The first three run on a job inside the service itself, every six hours, rather than being tidied up by hand.
6. What stays on your device
Some things never reach us at all. They live in your browser or on your phone and are cleared by clearing site data, or by deleting the app.
- Your recent searches, favourites and settings, so the app is useful before you sign in and while you are offline.
- A cache of recent departure boards and the station catalogue, so pages open quickly and survive a poor connection.
- If you are signed in, a token that keeps you signed in. Signing out removes it.
- Your location, in the iOS app only. It is used to work out which station is nearest so it can be filled in for you. It is not sent to us and it is not stored anywhere off your phone.
7. Who else is involved
We do not sell data and we do not share it for marketing. A small number of companies are involved in running the service, and this is all of them.
| Who | What they do | What they see |
|---|---|---|
| Oracle Cloud | Hosts the servers, in London | Everything stored, as the host of the machine. Data stays in the UK |
| Resend | Sends account emails | Your email address and the content of those emails |
| Cloudflare | Answers DNS queries for the domain | DNS lookups only. Traffic is not proxied through them |
| Realtime Trains | Supplies timetables and live running | Nothing about you. We ask about stations and services |
| Rail Data Marketplace | Supplies station facilities and disruption | Nothing about you |
| Esri | Supplies the map background | Your browser fetches map tiles directly, so Esri sees your IP address and which areas you look at |
| Have I Been Pwned | Checks new passwords against known breaches | Only the first five characters of a hash of the password. It cannot tell what the password was, or whose it is |
8. Your rights, and how to use them
You can ask us to do all of the following, free, at any time.
- See what we hold. The app has a one-tap export under Account, then Privacy and data. It emails you a JSON file containing everything listed in section 3. It goes to your confirmed address rather than back to the screen, so that a phone somebody else is holding cannot be used to walk off with it.
- Correct it. Your display name and password can be changed in the app. For anything else, write to us.
- Delete it. Also under Privacy and data. Deleting removes your email, password, favourites, routes, settings, two-factor secret and sessions. It cannot be undone.
- Take it elsewhere. The export is machine-readable JSON, which is the portable format the law has in mind.
- Object, or ask us to restrict what we do. Write to us and say what you would like to happen.
Export and deletion are currently in the iOS app only, not on this website. If you have an account but not the app, email privacy@liverailway.co.uk and we will do it by hand. We answer within one month, which is the deadline the law sets.
9. Security
Everything travels over HTTPS. Passwords are hashed with Argon2id and checked against Have I Been Pwned when you set them, so a password already known to attackers is refused. Two-factor secrets are encrypted with a key kept outside the database. Sign-in tokens rotate on every use, so a stolen one stops working as soon as the real session refreshes.
No service is perfectly secure, and it would be dishonest to say otherwise. If you find a security problem, please write to privacy@liverailway.co.uk before telling anyone else, and we will fix it as quickly as we can.
10. Children
Live Trains is a departure board and is not aimed at children, though nothing about it is unsuitable for them. We do not knowingly hold account data for anyone under 13. If you believe a child has created an account, write to us and it will be removed.
11. Changes to this policy
If this policy changes, the date at the top changes with it. If a change materially affects what we do with data you have already given us, we will email account holders rather than quietly editing the page.
See also the Terms of Service, which cover the service itself, and the live board, which needs none of this to use.