No account required
You can browse the rail map, search stations, plan an offline station route and save stations without an account or location permission.
Location and travel requests
Location permission is requested when you choose Locate Me or request walking directions. Once permission is granted, the app also checks your foreground location on launch to centre the map near you. A quick approximate fix can appear before a more accurate update. We use foreground location, never background tracking. Coordinates are kept in memory for your current session. Nearby station ranking runs on your device.
When you request walking routes, the app sends the route endpoints through our server to Singapore Land Authority’s OneMap. Address searches are also sent to OneMap. Street-map tiles load directly from OneMap. These services receive the information needed to answer your request; OneMap’s own privacy policy applies.
Our application does not write GPS coordinates, address queries or journey history to persistent storage. It does not log request bodies or query strings. Public address-search results may be cached in server memory for up to two minutes, using a hash of the search text without a user or IP identifier. Identical walking requests are merged only while they are in progress; completed GPS routes are not cached. Temporary rail timetable, service-alert and crowd caches contain transport data.
Saved stations
Saved station names and custom labels stay in local browser storage or native app preferences. They are not uploaded. Remove individual saved stations in Saved, or clear application/site data to remove all of them.
Your controls
Clear your current location from Settings at any time, or revoke location permission in your device/browser settings. Map and local station search remain available. Closing the session clears the in-memory location; your saved stations remain until you remove them.
Service connections
The website and Web app are hosted on Google Firebase Hosting. The API runs on Cloudflare Workers and Durable Objects. Hosting connections expose technical request information such as IP address and browser details to Google Firebase; API requests expose this information to Cloudflare. Public rail data is cached on Cloudflare’s content-delivery network. Network connections expose technical information such as IP address, request path, device/browser information, response status and timing to Cloudflare and OneMap. Persistent application request logs are disabled. For abuse prevention, an IP address and recent request timestamps are held temporarily in memory to enforce a rolling one-minute request limit; they are not written to our database. Aggregated daily request totals and timetable-refresh results contain no GPS coordinates, search text or journey history. Location coordinates and address searches are sent in POST bodies, which our application does not log. Google Firebase’s, Cloudflare’s and OneMap’s infrastructure privacy policies also apply. We do not upload application analytics or use push subscriptions. Local usage counters record first use, active days, completed feature actions, share-flow attempts and native review-request attempts on your device. These counters control review frequency and support local diagnostics; they contain no coordinates, searches, station IDs, shared text or account identifiers, and are not sent to our server. Clearing application data removes them. The operating systems do not tell us whether a rating card appeared or a review was submitted.
Advertising in the mobile apps
The iOS and Android apps integrate Google AdMob for a bottom banner. The Web app does not load AdMob. To manage advertising eligibility and prevent abuse, the native app sends an app-specific pseudonymous device key and existing first-use timestamps and eligibility status to our backend. Android derives the key by hashing an identifier scoped by Android to the device, operating-system user and app signing key; the raw identifier is not sent. iOS derives the key from a random value stored in this device’s Keychain, which normally remains through an ordinary reinstall and is not synced to other devices. The backend retains the key, first-use timestamp and eligibility status for as long as these functionality and abuse-prevention checks are operated. These records are separate from journeys, location, saved stations and advertising data, and are not sent to Google advertising services. Local app settings stay on the device. iOS advertising is enabled in this release; Android advertising remains disabled in this release. Advertising requests are made only when Google’s User Messaging Platform permits them. When applicable, a consent form is shown and Ad privacy choices is available in Settings so you can review your choices.
Google’s advertising SDK may collect IP address (which can indicate approximate location), device and app information, app- or publisher-bounded identifiers, crash logs, performance information, advertisements seen, and product/ad interactions for ad delivery, measurement, analytics and fraud prevention. Some advertising data can be associated with a device or app identifier. We do not pass your GPS coordinates, station searches, saved stations or journey endpoints to AdMob. The app does not request Apple’s tracking permission or access the advertising identifier on iOS. Ads may still use other data as described in Google’s advertising policy and SDK data disclosure.
Website advertising
The website integrates a separate Google AdSense display banner on selected travel-guide articles when website advertising is enabled and supported for the site. The interactive map, settings, download pages and error pages do not request AdSense ads. It does not read native app preferences or send native app device keys. Google and its partners may use cookies, local storage, IP-derived approximate location, device/browser information and ad interactions for advertising, measurement and fraud prevention. Where applicable, Google’s certified consent message manages choices; Ad privacy choices at the bottom of eligible articles reopens the available consent controls. Ad blockers, consent, network availability, site approval and ad availability can prevent an ad from appearing. See Google’s advertising policy.
Contact
For privacy questions, email fangmingappsupport@gmail.com or visit the support page.