APEX

How a lap becomes a lap time.

Four steps, one of which is the only one that matters: the engine that decides when you crossed the line runs identically on your phone and on our servers.

The short version

Record on track

A RaceBox over Bluetooth, or any logger you already own — SpeedAngle, RaceChrono, down to a hand-made CSV with a position and a timestamp.

Lap times you can trust

The same lap engine runs on your phone and our servers, so the two cannot disagree — checked against a commercial timer to within 8 ms.

Share on your terms

Private, friends, or public — chosen per outing. The venue gets your times; the trace of where you went stays yours.

1 · Recording

Position and a timestamp is the whole requirement.

A RaceBox streams over Bluetooth at 25 Hz and we decode it directly. Anything else can be a file: SpeedAngle, RaceChrono, a lap timer that exports CSV, or a column of latitudes and longitudes you assembled yourself. Everything beyond position and time — speed, heading, satellite count — adds detail to the result rather than being needed to produce one.

Recording only starts inside a circuit we recognise. That is a deliberate limit rather than a missing feature: a lap timer that runs on the road home is a different product with different consequences.

2 · Timing

The line is geometry, not a stopwatch.

A circuit owns its start/finish line and its splits as real coordinates. Crossing one is a geometric event between two samples, so the crossing time is interpolated rather than rounded to whichever sample happened to be nearest — which is where most of the accuracy in a GNSS lap timer actually comes from.

Because the line belongs to the circuit and not to your recording, correcting a line that was placed badly re-times every lap ever driven through it, exactly, from the raw capture. Lap times never change silently: a lap records the engine version and the line revision that produced it, so a change you did not ask for is visible rather than mysterious.

3 · The same engine, twice

Your phone and our servers cannot disagree.

The lap detector is one piece of code with no knowledge of where it is running. It times your laps live on the phone in your pocket, and it times them again on the server when the full recording is uploaded. Not a port, not a reimplementation — the same file. A live lap appears within a second and is marked provisional; the upload is what is authoritative, and a provisional lap never takes a record.

Every change to that engine is proved against a virtual device that drives a circuit whose lap times are known analytically, before it reaches anybody’s data.

4 · Two boards, kept apart

Not every source measures the same lap the same way.

A phone at 5 Hz carries about 175 ms of timing error — wider than the gap between first and third at most club events. Ranking it against a 25 Hz logger would produce a board whose order partly depends on which phone you own. We keep two boards instead, and say which one your laps are on and why.

SourceRateTypical errorBoard
RTK logger100 Hz0.5 msRanked
RaceBox25 Hz28 msRanked
Good phone GNSS10 Hz49 msPractice
Typical phone GNSS5 Hz175 msPractice

Measured against synthetic circuits with analytically exact lap times, and checked against real sessions from a commercial lap timer — where our lap times agreed with the device to within 8 ms across its own timing lines.