Who is responsible
[Name or company], [street and number], [postcode and city], [country].
Privacy questions: privacy@fitfitr.app.
What stays on your device
FitFitr reads a .fit file, shows you the edit, and writes the result where you tell it to. All of that happens on your iPhone or iPad. There is no account to create and no server of FitFitr's own that your file could be sent to.
The only parties that can ever receive anything are you, your device, and the services you choose to use from inside the app, described below.
Analytics and crash reports
Both are off on a fresh install and stay off until you turn them on. There is no consent wall when you first open the app, and the analytics and crash-reporting software does not start until you agree.
With your consent, FitFitr sends product events to Google Analytics for Firebase and crash reports to Firebase Crashlytics, both operated by Google. Every value in an event is a name from a fixed list, a yes or no, or a band such as small or large. Exact counts are never sent.
Never collected
- Coordinates or any part of a GPS track
- Heart rate, power or cadence values, and training zones
- Weight, height, age, gender, VO2max or other athlete data in the file
- Activity timestamps and session start times
- Device serial numbers and product names
- File names
- Advertising identifiers
Firebase also logs a few events of its own: the first launch, a new session, time in the app, and app or iOS updates. They carry the app and iOS version and the device model, language and country, and nothing from a file.
A crash report includes the sequence of event names that came just before the crash, so the problem can be reproduced. It contains the same fixed-list values and nothing else.
Retention: Google Analytics keeps this data for 14 months.
Every event the app can send, all 32 of them
The full list of events, their parameters and the bands they use, as in the app's source. Generated from the same document the app's code is checked against.
Opening a file
| Event | Parameters |
|---|---|
file_import_started | import_source |
file_import_succeeded | import_source, decode_time, + the file's shape |
file_import_failed | import_source, reason |
file_import_cancelled | — |
Editing
| Event | Parameters |
|---|---|
edit_tool_opened | tool |
spike_removal_applied | sensor, mode (remove/replace), affected |
metric_adjustment_applied | sensor, adjustment, magnitude, affected |
section_removal_applied | affected, share |
field_strip_applied | fields, has_device_info |
elevation_set_applied | rescaled_track |
sport_change_applied | from_sport, sport |
device_change_applied | manufacturer |
edit_undone | action |
Anomaly review
| Event | Parameters |
|---|---|
anomaly_scan_completed | groups, flagged, has_metric, has_gps_jump |
anomaly_resolved | anomaly_kind, anomaly_resolution, affected |
anomaly_review_closed | unresolved |
Combining two files
| Event | Parameters |
|---|---|
combine_candidate_loaded | import_source, overlap, conflicts |
combine_candidate_failed | import_source, reason |
combine_applied | conflicts, from_file_a, from_file_b |
combine_cancelled | stage |
Saving and exporting
| Event | Parameters |
|---|---|
file_save_succeeded | output (new_file/replaced_original/before_upload), edits, + the file's shape |
file_save_failed | reason |
file_export_started | destination (files/strava/share_sheet) |
file_export_completed | destination (files/strava) |
file_export_failed | destination (files/strava), export_reason |
Onboarding tours
| Event | Parameters |
|---|---|
tutorial_begin | tour |
tutorial_complete | tour |
tutorial_skipped | tour |
Screens
| Event | Parameters |
|---|---|
screen_view | screen_name, screen_class |
Settings
| Event | Parameters |
|---|---|
theme_changed | theme |
app_icon_changed | icon, icon_source (match_style/manual) |
analytics_consent_changed | is_granted, surface (settings/post_save_prompt) |
Place names
To title a ride with the town it started in, FitFitr asks Apple Maps once for the file's first position fix. The coordinate is rounded to about 110 metres and sent to Apple, and nothing else goes with it: not the rest of the track, not the file, not its name. It is not sent to Google or to anyone else.
This happens only for a file that has GPS data, while it is open on the detail screen. The town name is kept in memory while the app runs and is never written into your file. Analytics does not receive it.
Strava
Nothing is sent to Strava until you have signed in there and tapped Upload to Strava.
- What Strava receives. The .fit file as it stands when you tap upload, with whatever it contains: time, GPS track, heart rate, power, cadence, and athlete data a device wrote into it. Anything you removed first is not in it. The file's name and any activity name or description you entered go with it.
- Who handles it. Strava, under its own privacy policy.
- Signing in. On Strava's own page. FitFitr never sees your password and asks for one permission only: to upload activities for you.
- What stays on your device. Strava's sign-in token, in the iOS Keychain, on this device only.
- Disconnecting. Revokes the app's access at Strava and deletes the token. The file you uploaded stays on Strava until you delete it there.
Who receives what
| Recipient | When | What |
|---|---|---|
| Google (Firebase) | Only after you agree | Fixed-list events, crash reports |
| Apple (Maps) | When a file with GPS is open | One coordinate, rounded to about 110 m |
| Strava | Only when you tap upload | The .fit file and the text you entered |
This website
This website sets no cookies, runs no analytics and loads no fonts, scripts or embeds from other services.
The light/dark switch in the top corner stores one thing: your choice, the word light or dark, in your browser's local storage on your device. It is not a cookie, it is never sent to anyone, and you can remove it by clearing this site's data in your browser. Without the switch, the page follows your device's appearance setting.
The start page reads your browser's language setting on your device once, to send you to the English or German pages. The setting is not stored and not sent to anyone.
[Hosting: this website is served by GitHub Pages, and GitHub may process visitors' IP addresses in its server logs. Wording to be confirmed in legal review.]
Your choices and rights
You can turn analytics and crash reports off in the app's Settings at any time. Turning them off stops collection and deletes whatever was queued on your device but not yet sent.
[Your rights of access, rectification, erasure, restriction, portability and objection, and the right to complain to a supervisory authority. Wording to be settled in legal review.]
Changes to this policy
This page is updated whenever what the app collects or sends changes. The date at the top shows when it last changed.