Technical Test Report
Data Quality Comparison
Comparison of 8 motorcycle apps based on our own recording data (GPX & JSON). As of: April 16, 2026 · updated September 28, 2026 with Curve Tracker, the data basis and the addendum on sampling rate.
Overall Rating
Data Volume in 10 Seconds of Cornering
Estimated number of measurements per 10-second corner (all fields combined).
* Curve Tracker: 10 × 5 GPS fields + about 200 sensor angles (20 Hz) — the angles exist only inside detected corners, and they are not reference-grade (section 3). Volume is not quality.
1 · The 8 Sources at a Glance
Analyzed recordings from our own test rides, exported in each app's format. April 2026: one file per source. Curve Tracker: cross-check of September 22, 2026 (section 9).
| Source | Format | Data points | Duration | Eff. rate | Fields / point |
|---|---|---|---|---|---|
| MotionRecord | JSON | 3,000 IMU + 75 GPS + 100 Baro | 30 s chunk | up to 100 Hz (IMU), 1 Hz (GPS) | 32 IMU + 13 GPS + 8 Baro + 37 Processed |
| RaceBox | VBO / GPX | ~54,000 (25 Hz × 2.4 h) | ~2.4 h | 25 Hz stable (40 ms) | 13 (GPS + IMU + Lean) |
| RideLink WingMan | JSON | 18,447 | 6.3 h (305 km / 190 mi) | ~1 Hz | 14 |
| Motobit | GPX | 9,509 | 2.7 h | ~1 Hz | 3 (lat, lon, time) |
| Calimoto | GPX | 11,240 | 3.8 h | ~0.8 Hz | 4 (lat, lon, ele, time) |
| Curve Tracker | storage.json / GPX | 4,213 (app database) | 67 min (49.9 km) | ~1 Hz (JSON) · GPX without timestamps | 5 + angle series in corners (JSON) · 2 (GPX: lat, lon) |
| Relive | GPX | ~8,000 | variable | 0.3–0.7 Hz (gaps up to 119 s) | 4 (lat, lon, ele 77% empty, time) |
| Komoot | GPX | 7,099 | 8.8 h | 0.2 Hz (gaps up to 63 s) | 4 (lat, lon, ele, time) |
2 · GPS Quality
| Source | Accuracy | Rate | Extras | Overall |
|---|---|---|---|---|
| MotionRecord | hAcc / vAcc included | 1 Hz stable | Speed, course, altitude from chip | ★★★★★ |
| RaceBox | 14–16 satellites (SIV field) | 25 Hz stable (40 ms) | Speed (km/h), heading, height | ★★★★★ |
| RideLink | No accuracy data | ~1 Hz (gaps up to 40 s) | Speed + course + height | ★★★☆☆ |
| Motobit | None | ~1 Hz (ms bursts!) | lat / lon / time only | ★★☆☆☆ |
| Calimoto | None | ~0.5–1 Hz (2 s interval) | + Barometric altitude | ★★★☆☆ |
| Curve Tracker | None | ~1 Hz (storage.json) · GPX: not measurable without time | Speed (9.7% of points without a value) + GPS altitude (JSON only) | ★★★☆☆ |
| Relive | None | 0.3–0.7 Hz (gaps up to 119 s) | Altitude (77% empty) | ★☆☆☆☆ |
| Komoot | None | 0.2 Hz (gaps up to 63 s) | + Altitude (interpolated?) | ★★☆☆☆ |
<wpt name="33° 62km/h">). Without time, any evaluation has to estimate the speed. The app database storage.json (the app's Documents folder, reachable via file sharing) carries timestamp, GPS altitude and speed per point. The stars apply to this path — the GPX export would sit at ★.3 · Sensors / IMU
| Source | Accelerometer | Gyroscope | Magnetometer | Quaternion | Lean Angle | Overall |
|---|---|---|---|---|---|---|
| MotionRecord | Raw + User + Gravity (up to 100 Hz) | Raw + Fused (up to 100 Hz) | µT + calibration | W / X / Y / Z | From roll (direct) | ★★★★★ |
| RaceBox | LongAcc + LatAcc + VertAcc (25 Hz) | X / Y / Z rotation (25 Hz) | — | — | Direct (°, hardware) | ★★★★☆ |
| RideLink WingMan Pro | X / Y / Z (1 Hz, hardware) | 3-axis gyroscope (internal) | — | — | Hardware gyro (direct, calibrated) | ★★★☆☆ |
| Motobit | — | — | — | — | — | ☆☆☆☆☆ |
| Calimoto | — | — | — | — | — | ☆☆☆☆☆ |
| Curve Tracker | — (not exported) | — | — | — | Sensor angle (~20 Hz in corners), no recognizable gyro fusion — not reference-grade | ★☆☆☆☆ |
| Relive | — | — | — | — | — | ☆☆☆☆☆ |
| Komoot | — | — | — | — | — | ☆☆☆☆☆ |
maxRightAngle exactly 0 on an Alpine tour. The cause is physical: gravity and centrifugal force add up in a corner to one vector along the motorcycle's axis — without gyroscope fusion the lean angle stays invisible to a pure accelerometer. That is exactly how the signal behaves; whether the app fuses sensors, we do not know. From the app database Kurvenfokus therefore takes only the GPS track and derives the lean angle from speed and corner radius; on the GPX path the import places the few corner maxima from the waypoints.4 · Signal Processing
| Source | Calibration | Filters | Jerk | Frequency bands | Overall |
|---|---|---|---|---|---|
| MotionRecord | Standstill + mount (3-phase) | LP, HP, MA, Butterworth | X / Y / Z + magnitude | Low / Mid / High | ★★★★★ |
| RaceBox | Factory-calibrated (hardware) | None (raw data) | No | No | ★★☆☆☆ |
| RideLink | Factory-calibrated (hardware) | None | No | No | ★★☆☆☆ |
| Motobit | — | — | — | — | ☆☆☆☆☆ |
| Calimoto | — | — | — | — | ☆☆☆☆☆ |
| Curve Tracker | — | — | — | — | ☆☆☆☆☆ |
| Relive | — | — | — | — | ☆☆☆☆☆ |
| Komoot | — | — | — | — | ☆☆☆☆☆ |
5 · Additional Sensors & Export Formats
| Source | Barometer | Heart Rate | LiDAR | Lap timing | Export formats | Overall |
|---|---|---|---|---|---|---|
| MotionRecord | kPa + relAlt | Apple Watch | 3D mesh (iOS Pro) | — | JSON, GPX, CSV, KML, HTML | ★★★★★ |
| RaceBox | — | — | — | Start/Finish + Splits | VBO, GPX, KML | ★★★☆☆ |
| RideLink | — | — | — | — | JSON | ☆☆☆☆☆ |
| Motobit | — | — | — | — | GPX | ☆☆☆☆☆ |
| Calimoto | Baro altitude | — | — | — | GPX | ★☆☆☆☆ |
| Curve Tracker | — | — | — | — | storage.json (app DB), GPX | ★☆☆☆☆ |
| Relive | patchy | — | — | — | GPX | ☆☆☆☆☆ |
| Komoot | — | — | — | — | GPX | ☆☆☆☆☆ |
6 · What Can Be Derived From Each Source?
| Analysis feature | MotionRecord | RaceBox | RideLink | Motobit | Calimoto | Curve Tracker | Relive | Komoot |
|---|---|---|---|---|---|---|---|---|
| Corner position (GPS) | ✓ | ✓ 25 Hz! | ✓ | ✓ | ✓ | ✓ | ⚠ | ⚠ |
| Cornering speed | ✓ direct | ✓ direct | ✓ direct | ⚠ computed | ⚠ computed | ⚠ JSON direct · GPX estimated | ✗ | ✗ |
| Lean angle (direct) | ✓ up to 100 Hz | ✓ 25 Hz | ✓ hardware | ✗ | ✗ | ⚠ sensor, no recognizable gyro fusion | ✗ | ✗ |
| Braking / acceleration forces | ✓ up to 100 Hz | ✓ 25 Hz (3-axis) | ✓ 1 Hz | ✗ | ✗ | ✗ | ✗ | ✗ |
| 3-axis gyroscope | ✓ Raw + Fused | ✓ X/Y/Z (°/s) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Road surface quality (vibration) | ✓ frequency bands | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Elevation profile | ✓ GPS + Baro | ✓ GPS (25 Hz) | ✓ GPS | ✗ | ✓ Baro | ⚠ JSON yes · GPX no | ⚠ patchy | ✓ |
| Racing analysis (jerk, G-force) | ✓ | ⚠ G-force direct, jerk derivable | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Lap timing / splits | ✗ | ✓ Start/Finish + Splits | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Mounting compensation | ✓ 3-phase | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
7 · Field Comparison in Detail
MotionRecord — motionSample (32 fields, up to 100 Hz)
| Group | Fields | Unit |
|---|---|---|
| Timestamps | tMono, tWall | s / ISO 8601 |
| Raw Accelerometer | rawAccX, rawAccY, rawAccZ | g |
| Raw Gyroscope | rawGyroX, rawGyroY, rawGyroZ | rad/s |
| Magnetometer | magX, magY, magZ, magCalibAccuracy | µT / 0–3 |
| Attitude (Euler) | roll, pitch, yaw | rad |
| Quaternion | quatW, quatX, quatY, quatZ | — |
| Rotation Rate (fused) | rotX, rotY, rotZ | rad/s |
| User Acceleration | userAccX, userAccY, userAccZ | g |
| Gravity | gravX, gravY, gravZ | g |
MotionRecord — processedSample (37 fields, up to 100 Hz)
| Group | Fields | Description |
|---|---|---|
| Calibrated | corrAccX/Y/Z, corrGyroX/Y/Z | Bias-corrected |
| Butterworth | bwAccX/Y/Z, bwGyroX/Y/Z | Noise-filtered |
| Low-Pass | lpAccX/Y/Z | Slow motions |
| High-Pass | hpAccX/Y/Z | Fast changes |
| Moving Average | maAccX/Y/Z | Smoothed |
| Jerk | jerkX/Y/Z, jerkMagnitude | Rate of change of acceleration (d/dt) |
| Frequency band Low | bandLowX/Y/Z | < 1 Hz: posture / lean |
| Frequency band Mid | bandMidX/Y/Z | 1–20 Hz: steering inputs |
| Frequency band High | bandHighX/Y/Z | > 20 Hz: road vibration |
RaceBox — VBO format (13 fields, 25 Hz)
| Field | Unit | Description |
|---|---|---|
time | HHMMSS.cc | UTC timestamp (centisecond precision) |
lat, lng | DDDMM.MMMMM | Position (NMEA format) |
velocity | km/h | GPS speed (direct) |
heading | ° | Direction of travel |
height | m | GPS altitude |
LongAcc | g | Longitudinal acceleration (braking/throttle) |
LatAcc | g | Lateral acceleration (cornering force)* |
VertAcc | g | Vertical acceleration (bumps) |
x/y/z-rotation-gyroscope | °/s | 3-axis rotation rate |
lean-angle | ° | Lean angle (track mode)* |
sats | count | Satellites in view (quality indicator) |
lean-angle (lean angle), but only LongAcc + VertAcc. Drag mode contains LatAcc (lateral acceleration), but no lean angle.RideLink WingMan Pro — data (14 fields, ~1 Hz, dedicated tracker with 3-axis gyroscope)
| Field | Unit | Description |
|---|---|---|
gpsLat, gpsLon | ° | Position |
gpsSpeed | m/s | Speed |
gpsTrueCourse | ° | Course |
gpsHeight | m | Altitude |
accX, accY, accZ | g | Acceleration (hardware) |
gyroLeaningAngle | ° | Lean angle (hardware gyro) |
adapterSerialNumber | — | Device ID |
Curve Tracker — storage.json (app database: track points ~1 Hz, sensor angles ~20 Hz inside detected corners)
| Field | Unit | Description |
|---|---|---|
driveCoordinates[].latitude, longitude | ° | Position, ~1 Hz |
driveCoordinates[].timestamp | s (Unix) | Timestamp — missing in the GPX export |
driveCoordinates[].altitude | m | GPS altitude — missing in the GPX export |
driveCoordinates[].speed | m/s | Speed direct; −1 = no valid value (9.7% of points in the cross-check) |
curves[].angles | ° (~20 Hz) | Sensor lean angle only inside detected corners (~4% of track points), no timestamps of its own |
curves[].calculatedDuration | s | Duration of the detected corner |
maxLeftAngle, maxRightAngle | ° | Maxima per ride (left corners positive) |
calculatedDistance | m | Ride distance in meters (not kilometers) |
calculatedMaxGForce | g | Maximum according to the app (computed) |
Field names from the app database, read for the Kurvenfokus import (since September 11, 2026). Of these, the GPX export contains only latitude and longitude.
8 · Overall Rating by Category
| Source | GPS | Sensors | Processing | Extras | OVERALL |
|---|---|---|---|---|---|
| MotionRecord | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★★ |
| RaceBox | ★★★★★ | ★★★★☆ | ★★☆☆☆ | ★★★☆☆ | ★★★★☆ |
| RideLink WingMan | ★★★☆☆ | ★★★☆☆ | ★★☆☆☆ | ☆☆☆☆☆ | ★★★☆☆ |
| Calimoto | ★★★☆☆ | ☆☆☆☆☆ | ☆☆☆☆☆ | ★☆☆☆☆ | ★★☆☆☆ |
| Curve Tracker | ★★★☆☆ | ★☆☆☆☆ | ☆☆☆☆☆ | ★☆☆☆☆ | ★★☆☆☆ |
| Motobit | ★★☆☆☆ | ☆☆☆☆☆ | ☆☆☆☆☆ | ☆☆☆☆☆ | ★☆☆☆☆ |
| Relive | ★☆☆☆☆ | ☆☆☆☆☆ | ☆☆☆☆☆ | ☆☆☆☆☆ | ★☆☆☆☆ |
| Komoot | ★★☆☆☆ | ☆☆☆☆☆ | ☆☆☆☆☆ | ☆☆☆☆☆ | ★☆☆☆☆ |
9 · Data Basis — Which Data, When, How Often
This report grew in several steps. Every table above carries its date; this section states what each one rests on — and where the recordings come from.
| Measurement series | Date | Question | Data set |
|---|---|---|---|
| Sensor depth (sections 1–8) | 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 |
| GPS geometry (addendum below) | September 15, 2026 | Point spacing, gaps, corners per km | 212 rides, 14 sources: Calimoto 28 rides / 10,095 km · Motobit 18 / 4,860 km · RideLink WingMan (JSON) 111 / 7,292 km — 423 rides in the archive since Sept 26 · Curve Tracker 18 / 2,566 km + MotoLeaning export 8 / 1,555 km · RaceBox 9 / 559 km · Kurviger 6 / 3,245 km · Relive 2 / 243 km · Komoot 1 / 128 km |
| 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 + 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: the 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 (GPS, 1 Hz) |
| Curve Tracker | 20 | 18 | 09/2025 – 09/2026 | 2,630 | 146 K |
| RaceBox | 13 | 3 | 09/2026 | 195 | 252 K (25 Hz) |
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. Corner counting with the production code of Kurvenfokus iOS, point density in Python, catalog figures via SQL. Evaluation with AI assistance, cross-checks by hand.
Conclusion
MotionRecord is, according to the analysis, the most comprehensive source: up to 100 Hz IMU with calibration, signal processing and frequency-band separation — research-grade data straight from the smartphone. GPS is "only" 1 Hz, but this is compensated by the high-frequency IMU.
RaceBox is the GPS-strength contender: 25 Hz position data with a dedicated GNSS chip is particularly well suited for corner geometry and lap timing. Add to that an IMU with lean angle and pre-sorted acceleration — great for motorsport telemetry. No signal processing, but per the analysis the raw data is first-class.
Ideal combination: MotionRecord (up to 100 Hz IMU + processing) + RaceBox (25 Hz GPS) would be, according to this analysis, the most comprehensive telemetry setup — smartphone + dedicated GNSS receiver complement each other structurally very well.
RideLink WingMan Pro is a dedicated tracker with an integrated 3-axis gyroscope and delivers true hardware lean angle — but only at a ~1 Hz sampling rate. The GPX apps (Motobit, Calimoto, Relive, Komoot) at best deliver "where was I and when" according to the analysis — not sufficient for riding-dynamics analysis.
Curve Tracker delivers a usable GPS track in its app database (~1 Hz, speed and altitude direct) — the GPX export loses time and altitude. In our recordings the sensor lean angle is not reference-grade: the zero point depends on the mounting position (median 47.6°), and without gyroscope fusion the signal stays flat in corners — on the same ride the RaceBox measured 100 s above 5°, Curve Tracker 3.5 s. From the app database Kurvenfokus therefore imports the track, not the angles.
Methodological Limitations
All ratings are based on the AI-assisted analysis of our own recording data (GPX/JSON exports from personal test rides). The star ratings reflect the data structure and information content of the respective export formats — not the quality of the apps as navigation or route-planning tools. No laboratory measurements were performed, no manufacturers were commissioned, and no independent validation was carried out. The Curve Tracker findings come from an iPhone 11 in one fixed mounting position; a different mounting position may yield different zero points. All information without guarantee. As of: April 16, 2026, updated September 28, 2026.