More
Troubleshooting
No laps loaded, a refused comparison, None instead of a result, and the other questions people ask first.
The questions people ask first. If yours isn’t here, open an issue on GitHub with the session, the code and what you expected.
FastF1 loads no laps
session.load() logs “Failed to load timing data”, and session.laps then raises DataNotLoadedError. Since about 15 October 2026, F1’s archive refuses downloads without an F1 TV Access subscription (FastF1 #978). Your options:
- Use a FastF1 cache filled before mid-October; it still loads offline (
fastf1.Cache.offline_mode(True)stops FastF1 trying the network). - Install the pre-release with sign-in support,
fastf1==3.9.0a0, and follow its authentication docs. lapbox’s tests pass with it.
This is FastF1’s data access, not lapbox: lapbox analyses whatever FastF1 loaded.
compare says matched is False
The two laps couldn’t be put on the same points of track: their speed traces still differ by more than 15 km/h RMS after alignment. Look at Comparison.frozen_a and Comparison.frozen_b — on 2026 qualifying, a lap with frozen car data was behind every refusal measured. Then:
- Don’t show the time gap, speed delta, corner speeds, minisectors or segments.
- Each lap’s own trace and numbers are still fine.
- Try another lap of the same driver:
pick_fastest()isn’t the only lap with representative data.
A function returned None or an empty table
That is a refusal, not a bug. The usual reasons:
clean_air_split: fewer than three laps in clean air or in traffic — a driver who led throughout or never got clear.driver_consistency: fewer than three representative laps.ideal_lap: a sector never timed on a clean lap, or the sum of best sectors slower than the fastest lap.detect_frozen_stretchesempty: nothing froze — or the telemetry has no clock (Time) or lacks one of Speed, RPM, nGear, Throttle, so nothing could be judged.detect_runsempty: no driver, lap-number or lap-time column (a warning is logged).- A driver missing from
true_pace_rankingor a stint fromstint_degradation: fewer than three representative laps.
import lapbox.plot raises ImportError
Plotly isn’t installed. The charts are an optional extra:
pip install "lapbox[plot]"KeyError: No degradation model for compound
TyreDegradationModel didn’t fit that compound: it had fewer than min_laps (5) laps within 107 % of their drivers’ best, or only one tyre age. Rain tyres in a mixed race usually drop out this way. Check model.compounds for what was fitted.
The tyre got quicker with age
A negative degradation rate is common on low-wear circuits: the slope is small next to the noise, and it also carries track evolution and the fuel assumption. Read it with its laps and r2, and clamp it before using it to plan. See How far to trust a rate.
The corner count doesn’t match the circuit map
detect_corners finds places where the car slows down, so flat-out kinks — which the official numbering includes — don’t count. It finds the same corners on every lap of a circuit, which is what comparing laps needs. Lower prominence to find more.
My numbers changed after upgrading
Until 1.0 a release can change a calculation when a measurement shows it should — for example, 0.1.0.dev14 dropped lap 1 from true_pace_ranking. The changelog lists every such change and how much it moved. Pin lapbox==0.1.0 where results must stay put.
These docs describe lapbox 0.1.0. Something wrong or missing? Open an issue.