Privacy Policy
Last updated 23 September 2026
This policy covers the website at buslah.com and the Buslah web app at buslah.com/web. It is written against what the code actually does, not against what a policy template assumes.
The short version
There is no account, no sign-up and no login. We never ask for your name, email address or phone number, and we have no way to identify you. Your saved stops and your location never leave your device.
What stays on your device
- Saved stops and arrival alerts, stored in your browser’s IndexedDB database (named SGBusesDB). They are readable only by this site, on this device, and are deleted when you clear site data.
- Your language choice (English, 简体, 繁體), and the last five stops you opened, so the stop list can offer them again. If you dismiss the "home screen" suggestion, that choice is remembered here too.
- Bus stop, route and timetable files cached by the service worker so the app opens quickly and keeps working on a poor connection.
None of this is uploaded, backed up or synced. We cannot see it, and clearing your browser data removes it permanently — there is no copy elsewhere to restore from.
Location
If you use Nearby, Buses near me on the home page orNext bus near me on a bus's page, or allow location when asked, your browser gives the page your coordinates. They are used in the page itself, to find the stops closest to you, sort stops by distance and centre the map. Only the numbers of those stops are sent, to fetch their arrival times; your coordinates are not sent to us and we do not store them. Declining location is fine: every other part of the app works, and stops simply show no distance.
Map tiles come from Google Maps, so displaying a map necessarily tells Google which part of Singapore is on screen, under Google’s privacy policy.
Bus arrival requests
When you open a stop, the app asks our /api/arrivals endpoint for that stop’s live timings, which forwards the request to LTA DataMall. The request carries the bus stop code and nothing about you. We do not keep a log of which stops you looked at. The Trains tab and My stops likewise ask /api/train-alerts for LTA’s rail disruption notice, which carries nothing about you at all.
Weather and rain radar
The current weather and the rain-radar timestamps come from our own server at api.buslah.com, which relays public data from Singapore’s weather services; the request carries nothing about you. The rain-radar images themselves are loaded straight from the Meteorological Service Singapore at www.weather.gov.sg, so opening Rain radar lets that server see your IP address and browser, as it would if you visited the site yourself.
Analytics
The site uses Google Analytics 4 (measurement ID G-1Q09013Z2C) to count visits and see which features get used, so we know what to build next. It records aggregate usage — pages viewed, buttons clicked, approximate country or region, device type — and sets cookies to recognise a returning browser. It does not receive your saved stops, your coordinates or anything you type.
You can opt out with Google’s browser add-on, or by blocking analytics in your browser or an extension. The app works normally either way.
Hosting
The site is hosted on Cloudflare Pages. Like any web host, Cloudflare processes the requests needed to serve pages — including IP addresses — for delivery, security and abuse prevention.
Notifications
Arrival alerts are generated on your device, by the page and its service worker, after you grant notification permission. No push service is involved and nothing is sent from a server. Alerts only fire while the app is open.
Children
Buslah is a public transport timetable. It is not directed at children and collects no personal information from anyone, of any age.
Changes
If this policy changes, the date at the top changes with it. Material changes will be noted on this page rather than made quietly.
Contact
Questions, corrections or a request about your data: coconutica@outlook.com. See also the contact page.