Which recording is fit for corner analysis?
Kurvenfokus imports rides from nine sources — from a calimoto GPX to a RaceBox at 25 Hz. We measured what the files actually contain: how often they store the position, where the gaps are, whether timestamps and lean angle come along. The result is surprising: for corner counting, the best sensors do not make the best source.
All apps sample at 1 Hz
calimoto, Motobit, Komoot and the RideLink GPX export store exactly one point per second. Only the RaceBox measures at 25 Hz; Kurviger routes sit at 0.77 Hz.
Point spacing is speed
Motobit rides looking “denser” than calimoto (12.3 vs. 15.9 m) only means they were ridden more slowly — 41 vs. 52 km/h. Technically the files are the same.
Compare corner counts only within one source
Denser recording means more detected corners on the same road. And without naming the device, any kilometer or corner count is accurate to about 5% only.
Kurvenfokus evaluates GPS tracks. What matters for corner detection is how often and how completely an app stores the position and whether it supplies timestamps — not how many sensors it has. All smartphone apps in our data record at 1 Hz. Differences in corner counts come from speed, device and export format, not from the app.
1 · The sources at a glance
What each source delivers and how it gets into Kurvenfokus. Sampling rates for calimoto, Motobit, Komoot, Kurviger, RideLink GPX and RaceBox measured on September 15, 2026 across 212 rides; Relive from two files of April 2026, Curve Tracker from the cross-check of September 22, 2026, MotionRecord from the product documentation. Fields from the export formats.
| Source | Path into Kurvenfokus | Sampling rate | Fields per point | Lean angle | iOS | Android |
|---|---|---|---|---|---|---|
| calimoto | GPX export · Plus data export (JSON) | 1.00 Hz | GPX: position, altitude, time · JSON: plus speed, course, gyro angle | GPX: computed · JSON: measured (phone gyro) | ✓ | ✓ |
| Motobit | GPX export | 1.00 Hz | Position, time (millisecond bursts on GPS reacquisition) | computed | ✓ | ✓ |
| Komoot | GPX export | 1.00 Hz¹ | Position, altitude, time | computed | ✓ | ✓ |
| Kurviger | GPX (planned route) | 0.77 Hz | Position, altitude, time — our Kurviger files are planned routes, not recordings | computed | ✓ | ✓ |
| Relive | GPX export | 0.3–0.7 Hz | Position, time, altitude — 77% empty in our two files, gaps up to 119 s | computed | ✓ | ✓ |
| RideLink WingMan | JSON export of the WingMan app · GPX export | ~1 Hz | Position, speed, course, altitude, acceleration, gyro lean angle | measured (gyro on the bike) | ✓ | ✓ |
| Curve Tracker | storage.json (app database) · GPX | ~1 Hz (JSON) · GPX without time | JSON: position, time, altitude, speed, sensor angles in corners · GPX: position only | sensor angle without recognizable gyro fusion — not taken from storage.json | ✓ | ✓ |
| RaceBox Mini S | VBO | 25 Hz | Position, speed, course, altitude, 3-axis acceleration, gyro, lean angle, satellites | measured (gyro) | ✓ | — |
| MotionRecord | JSON export | 1 Hz GPS · up to 100 Hz IMU | Position, speed, course, altitude, GPS accuracy, sensor fusion | measured (sensor fusion) | ✓ | ✓ |
¹ Komoot: the September file samples at 1.00 Hz; an older file from April sat at 0.2 Hz with gaps up to 63 s — the export apparently depends on the setting. “Computed” means: Kurvenfokus derives the lean angle from speed and corner radius, as described on the technology page. RaceBox VBO is currently read by the iOS app only. Relive and Kurviger go through the generic GPX import.
2 · GPS geometry: 212 rides, 14 sources
Evaluation of September 15, 2026 across our entire GPX and VBO data. Point density in Python, corner counting with the production code of Kurvenfokus iOS.
| Source | Rides | km | Point spacing (median) | p90 | Gaps / 100 km | Corners / km | Type |
|---|---|---|---|---|---|---|---|
| RaceBox | 9 | 559 | 0.8 m | 1.2 m | 0.0 | —² | recording |
| Kurvenheld | 1 | 269 | 7.2 m | 23.6 m | 8.2 | 10.65 | recording |
| Relive | 2 | 243 | 11.4 m | 16.0 m | 23.4 | 9.82 | recording |
| Motobit | 18 | 4,860 | 12.3 m | 20.1 m | 2.2 | 4.65 | recording |
| BMW Connected | 1 | 303 | 13.1 m | 23.4 m | 6.6 | 7.22 | recording |
| Kurvenfokus export | 1 | 188 | 13.6 m | 18.0 m | 4.8 | 7.98 | recording |
| Curve Tracker (GPX) | 18 | 2,566 | 14.0 m | 21.7 m | 5.8 | —³ | recording |
| Curve Tracker (MotoLeaning export) | 8 | 1,555 | 14.3 m | 27.2 m | 6.6 | 4.34 | recording |
| RideLink WingMan (JSON) | 111 | 7,292 | 14.4 m | 23.0 m | 5.4 | —³ | recording |
| calimoto | 28 | 10,095 | 15.9 m | 22.2 m | 4.3 | 5.14 | recording |
| Komoot | 1 | 128 | 16.1 m | 22.1 m | 2.3 | 3.17 | recording |
| RideLink WingMan (GPX) | 2 | 225 | 17.2 m | 27.9 m | 1.0 | 2.76 | recording |
| Kurviger | 6 | 3,245 | 20.6 m | 70.7 m | 195.1 | 3.81 | planned route |
| Kurvenfokus routing | 6 | 1,169 | 35.0 m | 118.0 m | 312.7 | 2.15 | planned route |
The median point spacing measures riding speed (speed ÷ sampling rate), not quality — see the addendum in section 5. Gaps are real jumps over 100 m; 1–8 per 100 km in recordings, 195–313 in planned routes, because planners only place a point at direction changes. ² Via the GPX detour our pipeline counted 0 corners in this test — the cause was our source detection, not the file; the current version recognizes RaceBox GPX. The intended path is the VBO import anyway. ³ Not counted without timestamps (Curve Tracker GPX) or in the WingMan JSON. The two Curve Tracker rows are two export states of the same program from two folders; for the first group the pipeline delivered no corner count. Corners per km are comparable only within the same source.
3 · What this means for corner detection
Three rules that follow from the measurements — and that Kurvenfokus follows in the app and on this website.
- 1
Compare corner counts only within the same source
Kurvenfokus detects corners from the shape of the track. Denser recording means more detected corners on the same road. A planned calimoto route has 361 m point spacing, the ridden recording 14 m — which is why a different number shows up there. The example is worked through on the page 1,997 corners (German).
- 2
Without naming the device, a number is accurate to about 5%
The same ride, iPhone 11 and iPhone 12 at once: 85.72 vs. 90.24 km unfiltered. Where the source supplies a GPS accuracy, Kurvenfokus discards poor points — from 25 m for MotionRecord imports, from 50 m for the other JSON sources. In our measurement a 25 m threshold shrank the gap between the two devices to 0.07 km, discarding 0.2% of the points. GPX files carry no accuracy value; no filter applies there.
- 3
GPX without timestamps: speed and lean angle are estimates
If the file has no time, every evaluation has to assume the speed — and with it the lean angle computed from it. This affects the Curve Tracker GPX export and some converter outputs. Better: import the original format (storage.json, RideLink JSON, VBO).
4 · Curve Tracker in detail
The app stores more than its GPX export reveals. What arrives by which path — and why Kurvenfokus does not take over the sensor angles from the app database.
Position only, no time
In the exports we checked (MotoLeaning / Geo Converter) there is only latitude and longitude. Timestamps and altitude are missing; lean angle and speed appear as text in waypoint names such as “33° 62km/h”. The import places these few corner maxima at the matching points; everything in between and the speed has to be estimated without timestamps — the corner count stays usable, the per-corner values do not.
storage.json: time, altitude, speed per point
The app’s Documents folder (reachable via file sharing) holds the complete recording: ~1 Hz positions with timestamp, GPS altitude and speed, plus the corner list. Kurvenfokus iOS has read it directly since September 11, 2026; Android imports the converted JSON or the GPX export.
5 · Data basis: which data, when, how often
This page rests on four measurement series and one archive. Every number above can be traced to a measurement here.
| Measurement series | Date | Question | Data set |
|---|---|---|---|
| Sensor depth | April 16, 2026 | Which fields does a source deliver per data point? | One file per source (Relive two): calimoto 11,240 points · Motobit 9,509 · Komoot 7,099 · RideLink 18,447 · RaceBox 20,673 · Relive 17,982 + 4,419 · MotionRecord one session. Result on motionrecord.de. |
| GPS geometry | September 15, 2026 | Point spacing, gaps, corners per km | 212 rides, 14 sources — the table in section 2. RideLink WingMan (JSON) with 111 rides there; since September 26 the archive holds 423 rides (570 JSON files), calimoto 226 instead of 28. Sampling rates from the interval between consecutive points. |
| Cross-check Curve Tracker ↔ RaceBox | September 22, 2026 | Sensor lean angle on the same ride | 1 ride, 67 min, 49.9 km, 4,213 points — iPhone 11 and RaceBox Mini S in parallel. |
| Device spread | September 15, 2026 | How far apart are two phones on the same ride? | 1 ride on May 23, 2026 with iPhone 11, iPhone 12 and Samsung at once: unfiltered 85.72 vs. 90.24 km (+5.3%), with a 25 m filter +0.07 km. |
Population: our ride archive (as of September 28, 2026)
The samples come from our own archive with 688 rides, 61,592 km, August 2019 to September 2026. The figures come from the catalog via SQL, not from estimates.
| Source | Recordings | Rides | Period | km | GPS points |
|---|---|---|---|---|---|
| calimoto | 226 | 226 | 08/2019 – 09/2026 | 40,470 | 2.23 M |
| RideLink WingMan | 570 (147 of them variants) | 423 | 09/2023 – 06/2026 | 17,808 | 1.18 M |
| MotionRecord | 51 (10 reconstructed) | 26 | 06/2026 – 09/2026 | 1,407 | 71 K |
| Curve Tracker | 20 | 18 | 09/2025 – 09/2026 | 2,630 | 146 K |
| RaceBox | 13 | 3 | 09/2026 | 195 | 252 K |
Motobit, Komoot, Relive and Kurviger exist only as individual GPX files (evaluation of September 15), not in the archive. RideLink: 147 of the 570 recordings are file variants of the same ride and count only once for rides, kilometers and GPS points. Kilometers per source via the assigned rides; six rides (770 km) were recorded by several devices at once, 2 of them by three; they count for each source, which adds 918 km of multiple counting — that is why the column adds up to 62,510 km instead of 61,592 km. Sampling rates come from the interval between consecutive points — not from the recording duration, which includes breaks. Method: our own recordings and rides from test riders with their consent; evaluation with AI assistance, cross-checks by hand. No lab measurement, no manufacturer commission.
Sensors in detail
This page rates the sources as corner sources. If you want to know which app delivers which sensors at which rate — acceleration, gyroscope, barometer, signal processing — the technical test report with star ratings and field lists is on motionrecord.de.
Sensor test report on motionrecord.de →calimoto, Motobit, Komoot, Kurviger, Relive, RideLink, WingMan, Curve Tracker, MotoLeaning, RaceBox, BMW Connected and Kurvenheld are trademarks or products of their respective owners and are not affiliated with Kurvenfokus or MVXLabs. They are named solely to state format compatibility and to describe our own recordings. All information without guarantee, as of September 28, 2026.