Effective September 29, 2026 · applies to the Tailwind Tally web app and the Tailwind Tally iOS app, which shows the same web app in a native shell.
Tailwind Tally doesn't have accounts, doesn't set its own tracking cookies, and doesn't store anything server-side beyond map tiles and Strava data it briefly relays on your behalf. Your GPX route data is processed entirely on your own device, with two optional exceptions: if you ask for a weather forecast, three rounded locations from your route are sent to a weather service (see "Weather forecast" below), and if you use the Live tab, your own location, rounded to about 11 km, is sent to that same service (see "Live wind" below). The sections below explain exactly what does happen, and why.
Whether you drop a file in the browser, share one from another app on your phone, or load one from Strava, the route data is parsed and analyzed entirely on your device — in your browser's own JavaScript, or inside the iOS app. It is never uploaded to, or stored on, any server we operate.
If you choose to tap "Connect to Strava," you're sent to Strava's own login page to authorize Tailwind Tally to read your routes. We request the read and read_all scopes, which let the app list and export your Strava routes (including private ones).
What we receive and how it's used:
localStorage, no cookies set by us).A small backend service we operate (see "Infrastructure," below) performs two things that require holding our Strava application's client secret, which can't safely live in a browser or a mobile app: exchanging Strava's one-time login code for that access token, and relaying the route-list/route-export API calls (only because Strava's API doesn't allow browsers to call it directly - not because it needs our secret). That backend does not log, store, or retain any Strava data that passes through it.
Disconnecting is as simple as reloading the page or restarting the app - there is nothing stored to delete.
Map imagery is served by MapTiler, requested through our backend so our MapTiler API key stays private. MapTiler receives the map area you're viewing and your IP address, the same as any map tile request - no Tailwind Tally-specific personal data is attached to these requests.
If you choose "From forecast" and tap "Get forecast," the app asks Open-Meteo, a free weather service, what the wind, temperature, humidity and rain are expected to be on the date you picked. To answer, Open-Meteo receives up to three places from your route (its start, middle and end), each rounded to about 11 km, and that date. It does not receive your route file, your exact coordinates, or anything about who you are. Like any web request, it also sees your IP address.
The request goes from your device straight to Open-Meteo, not through our backend, and we don't keep a copy. Nothing is sent unless you tap "Get forecast"; setting the wind and temperature by hand never contacts any weather service. Weather data by Open-Meteo.com, licensed CC BY 4.0; see Open-Meteo's terms.
If you open the Live tab and tap "Show the wind here," the app asks your device for its location - your device asks your permission first - at low accuracy (a network-based position is enough). On your device the location is rounded to about 11 km, and only that rounded position is sent to Open-Meteo to get the current weather there (wind, temperature and sun, and rain and thunderstorm risk for the next hour). Your exact location never leaves your device, and nothing is stored - not by the app and not by us. Nothing is sent unless you tap the button (or "Refresh").
To turn the arrow with your phone, the app reads your device's compass (on iPhone after you allow access to "motion and orientation"). That reading is used on your device only and is never sent anywhere.
If you choose English or Dutch with the EN | NL switch, that choice is saved in your browser's local storage (localStorage) on your own device, so the app opens in the same language next time. It is never sent anywhere. Until you choose, the app follows your phone's or browser's language.
We use GoatCounter to count page visits. It sets no cookies and collects no personally identifying information - see GoatCounter's privacy policy.
Page text uses fonts loaded directly from Google Fonts. Google may log standard web request data (such as your IP address) for these requests, as with any font served from their CDN.
The iOS app is a thin native shell around the same web app described above, so everything on this page applies to it too. The one native-only feature is that Tailwind Tally can be offered as an "Open in…" destination for .gpx files shared from other apps (Strava's own app, Mail, Files, AirDrop). That file is read on-device and handed to the same in-app web page - it is not uploaded anywhere by the app itself.
| Service | Role |
|---|---|
| GitHub Pages | Hosts the web app's files. |
| Render | Hosts the small backend that proxies map tiles and Strava API calls. |
| Strava | Provides route data you explicitly connect and authorize. |
| MapTiler | Provides map tile imagery. |
| Open-Meteo | Provides the weather forecast (wind, temperature, humidity and rain), only if you use "From forecast," and the current weather at your rounded location, only if you use the Live tab. |
| GoatCounter | Cookieless page-visit analytics. |
| Google Fonts | Serves the page's typefaces. |
Tailwind Tally is not directed at children and we do not knowingly collect data from children.
If this policy changes, the updated version will be posted at this same address with a new effective date above.
Questions about this policy or your data can be sent to gjjnwhxcb@mozmail.com.
← Back to Tailwind Tally