A Python pipeline that downloads Formula 1 telemetry from the free OpenF1 API, checks it for errors and turns it into this report. Built by Johan Stefanes.

Where on the track

Speeds in km/h. Time: won from 300 m before to 150 m after the slowest point.

Lap times and tyre strategy

Lap times over the race

Comparable laps only: no lap 1, no laps into or out of the pits, no laps slower than 107 % of the driver’s median (safety car, VSC). ✕ marks laps with telemetry dropouts. Click a lap to load it above.

Tyre strategy and wear

Data quality

All checks and results

Checks on every sample

Checked against official data

These compare the whole dataset with independent sources it must agree with, which catches errors in the pipeline itself.

Prediction for the rest of 2026

Full prediction, model test and data download

Race pace is a driver’s median comparable lap, as % slower than the fastest driver in that race. The prediction is a simple statistical model: the average of each driver’s last 5 races. It knows nothing about tracks, weather, upgrades, grid position or strategy, so it is the same for every remaining race, and it predicts pace, not finishing order.

Expected pace, every remaining race

How good is the model?

Why the last 5 races?

The same test with other form windows. The differences are small, so the simple choice is fine.

Error for each past race

How it works

  1. OpenF1 APItelemetry, laps, results
  2. Loadcached, retried
  3. Validate5 checks per sample
  4. StoreSQLite
  5. Analysecompare, predict, cross-check
  6. Reportthis page

Plain Python (pandas, numpy, SQLite, Plotly), with offline tests that run on every push. Code, data schema and design decisions are on GitHub.