FullThrottle is a fast, free, and open-source Formula 1 telemetry visualizer and session replay tool that runs entirely in your browser.
- Interactive Telemetry Traces: Scrub anywhere along a lap to see speed, throttle percentage, braking, RPM, gear shifts, and with a track map showing the delta with another lap.
- Lift & Coast (LiCO) Detection: Highlights segments where drivers lift off the throttle early to save tyres or charge the battery.
- Head-to-Head Comparisons: Overlay upto 4 drivers side-by-side across laps, tyre compounds, sessions, and even across different years to see where lap time was won or lost.
- Interactive Session Replays: Watch full Grand Prix races, Qualifying, Free Practice and Pre-Season testing sessions with telemetry and synced positions.
FullThrottle is built edge-first and client-driven. Instead of relying on a heavy server to slice data for every query, the browser does the heavy lifting:
- Frontend: Built with SvelteKit (Svelte 5) for a fast and reactive interface.
- Visualizations: D3.js for all the telemetry visualizations
- Data Pipeline:
- Raw telemetry is sourced using FastF1 in Python, then pre-processed into compressed Parquet format.
- Parquet files and session metadata are uploaded to a Hugging Face dataset, which acts as the CDN origin.
- The frontend requests
.parquetfiles from Hugging Face's CDN. Each file is a few MB. - The client parses the data in-browser using
hyparquet. Once a session is loaded, switching between drivers and laps is near-instant.
Telemetry ingestion runs locally. F1's live timing servers block cloud/datacenter IP ranges (including GitHub-hosted Actions runners), so there is no CI cron for this. After a race weekend, sync from your own machine:
cd ingest
# Ingest new sessions, apply enrichment patches, and rebuild metadata
python3 sync.py 2026
# Run sync and upload fresh parquet files directly to Hugging Face
python3 sync.py 2026 --uploadTo backfill new telemetry enrichments (like weather time-series, pit stop timelines, and quali segment breakdowns) without re-downloading everything:
python3 backfill.py --year 2026- Bun (recommended) or Node.js v20+
- Python 3.10+ (if running ingestion scripts or downloading datasets)
-
Clone the repository:
git clone https://github.com/Chiroyce1/FullThrottle.git cd FullThrottle -
Install dependencies:
bun install
-
Start the local dev server:
bun dev
Open
http://localhost:5173in your browser. -
(Optional) Cache telemetry locally for offline dev:
pip install huggingface_hub hf download fullthrottlef1/fullthrottle --repo-type dataset --local-dir ./static/data
To test the telemetry processing algorithms directly against parquet datasets:
bun testFullThrottle is an open project built by chiroyce.
If you spot bugs, want to improve the telemetry systems, or have an idea for a cool new metric, feedback and contributions are very welcome!
- Found a bug or have a suggestion? Open an issue.
- Want to contribute code? Submit a PR! Please make sure to test your changes locally and mention what was changed and why it was changed
FullThrottle is an unofficial, non-commercial fan project. It is not associated, endorsed, or affiliated in any way with Formula 1, FIA, Liberty Media, or Formula One Management. F1, FORMULA ONE, FORMULA 1, FIA FORMULA ONE WORLD CHAMPIONSHIP, GRAND PRIX and related marks are registered trademarks of Formula One Licensing B.V.
Licensed under AGPLv3.
