Skip to main content
The TracingInsights repository follows a consistent, hierarchical structure that makes it easy to locate specific data for any event, session, driver, or lap.

Repository Structure Overview

The repository is organized in a four-level hierarchy:
2026/
├── Event (e.g., "Australian Grand Prix")
│   ├── Session (e.g., "Practice 1")
│   │   ├── Driver (e.g., "NOR")
│   │   │   ├── 1_tel.json
│   │   │   ├── 2_tel.json
│   │   │   ├── ...
│   │   │   └── laptimes.json
│   │   ├── weather.json
│   │   ├── rcm.json
│   │   ├── corners.json
│   │   └── drivers.json
│   └── ...
└── ...

Level 1: Event Folders

Top-level folders represent Grand Prix events and testing sessions:
2026/
├── Australian Grand Prix/
├── Pre-Season Testing/
├── Pre-Season Testing 1/
└── Pre-Season Testing 2/
Naming Convention:
  • Grand Prix events: "<Country> Grand Prix"
  • Testing sessions: "Pre-Season Testing" or "Pre-Season Testing <number>"
Event names contain spaces and are case-sensitive. When accessing programmatically, ensure proper path handling or URL encoding.

Level 2: Session Folders

Each event contains folders for different session types:
Australian Grand Prix/
├── Practice 1/
├── Practice 2/
├── Practice 3/
├── Qualifying/
└── Race/
Session Types:
  • Practice 1, Practice 2, Practice 3 - Free practice sessions
  • Qualifying - Qualifying session
  • Race - Main race
  • Sprint weekends may include Sprint Shootout and Sprint Race
Not all events have all sessions. Sprint weekends have different session structures than traditional race weekends.

Level 3: Driver Folders

Each session contains folders for each driver, identified by their three-letter code:
Practice 1/
├── ALB/    # Alexander Albon
├── ANT/    # Kimi Antonelli
├── BOR/    # Gabriel Bortoleto
├── GAS/    # Pierre Gasly
├── HAD/    # Isack Hadjar
├── HAM/    # Lewis Hamilton
├── LEC/    # Charles Leclerc
├── NOR/    # Lando Norris
├── PER/    # Sergio Perez
├── PIA/    # Oscar Piastri
├── RUS/    # George Russell
├── VER/    # Max Verstappen
└── ...
Common Driver Codes (2026):
CodeDriverTeam
NORLando NorrisMcLaren
VERMax VerstappenRed Bull Racing
LECCharles LeclercFerrari
HAMLewis HamiltonMercedes
RUSGeorge RussellMercedes
ANTKimi AntonelliMercedes
PERSergio PerezCadillac
GASPierre GaslyAlpine
ALBAlexander AlbonWilliams
PIAOscar PiastriMcLaren
The number of driver folders varies by session. Some drivers may not participate in all sessions (e.g., practice sessions with reserve drivers, retirements during the race).

Level 4: Per-Driver Files

Each driver folder contains lap-specific telemetry and timing data:
NOR/
├── 1_tel.json     # Telemetry data for lap 1
├── 2_tel.json     # Telemetry data for lap 2
├── 3_tel.json     # Telemetry data for lap 3
├── 4_tel.json     # Telemetry data for lap 4
├── 5_tel.json     # Telemetry data for lap 5
├── ...
└── laptimes.json  # Timing data for all laps
File Naming:
  • <lap_number>_tel.json - Detailed telemetry for a specific lap
  • laptimes.json - Comprehensive timing data for all laps completed by this driver

Telemetry Files (X_tel.json)

Contains second-by-second sensor data for a single lap:
  • Speed, RPM, gear, throttle, brake
  • Position (x, y, z coordinates)
  • Acceleration vectors
  • DRS status
  • Distance metrics

Lap Times File (laptimes.json)

Contains timing and performance data for all laps:
  • Lap times and sector times
  • Tire compound and life
  • Pit stop information
  • Track position
  • Speed trap data

Session-Level Files

Each session folder also contains shared data files:
Practice 1/
├── [driver folders...]
├── weather.json   # Weather conditions throughout the session
├── rcm.json       # Race control messages
├── corners.json   # Circuit corner/turn information
└── drivers.json   # Driver and team metadata

Session Files Explained

Environmental conditions sampled approximately once per minute:
  • Air temperature
  • Track temperature
  • Humidity
  • Wind speed and direction
  • Rainfall status
  • Atmospheric pressure
One file per session, shared across all drivers.

Complete Directory Tree Example

Here’s what a complete event structure looks like:
Australian Grand Prix/
├── Practice 1/
│   ├── NOR/
│   │   ├── 1_tel.json
│   │   ├── 2_tel.json
│   │   ├── 3_tel.json
│   │   ├── 4_tel.json
│   │   ├── 5_tel.json
│   │   ├── 6_tel.json
│   │   └── laptimes.json
│   ├── VER/
│   │   ├── 1_tel.json
│   │   ├── 2_tel.json
│   │   └── ...
│   ├── [20+ more driver folders]
│   ├── weather.json
│   ├── rcm.json
│   ├── corners.json
│   └── drivers.json
├── Practice 2/
│   └── [same structure as Practice 1]
├── Practice 3/
│   └── [same structure as Practice 1]
├── Qualifying/
│   └── [same structure as Practice 1]
└── Race/
    └── [same structure as Practice 1]

Python Example

import os
import json

# Define base path
base_path = '2026'

# Navigate to specific data
event = 'Australian Grand Prix'
session = 'Practice 1'
driver = 'NOR'
lap = 1

# Build path to telemetry file
tel_path = os.path.join(base_path, event, session, driver, f'{lap}_tel.json')

# Load telemetry data
with open(tel_path, 'r') as f:
    telemetry = json.load(f)

# Load session-level weather data
weather_path = os.path.join(base_path, event, session, 'weather.json')
with open(weather_path, 'r') as f:
    weather = json.load(f)

JavaScript Example

const fs = require('fs');
const path = require('path');

// Define base path
const basePath = '2026';

// Navigate to specific data
const event = 'Australian Grand Prix';
const session = 'Practice 1';
const driver = 'NOR';
const lap = 1;

// Build path to telemetry file
const telPath = path.join(basePath, event, session, driver, `${lap}_tel.json`);

// Load telemetry data
const telemetry = JSON.parse(fs.readFileSync(telPath, 'utf8'));

// Load drivers metadata
const driversPath = path.join(basePath, event, session, 'drivers.json');
const drivers = JSON.parse(fs.readFileSync(driversPath, 'utf8'));

File Count and Size Considerations

  • Per Driver: Typically 15-30 telemetry files (one per lap) plus 1 laptimes file
  • Per Session: 20-24 driver folders + 4 session-level files
  • Per Event: Usually 5 sessions (3 practice + qualifying + race)
  • File Sizes:
    • Telemetry files: ~50-200 KB each
    • Laptimes: ~5-15 KB
    • Session files: ~2-10 KB
A complete race weekend typically contains 2,000-3,000 individual JSON files.

Special Cases

Pre-Season Testing

Testing events may have different session names:
Pre-Season Testing 1/
├── Practice 1/
├── Practice 2/
└── Practice 3/

Sprint Weekends

Sprint race weekends include additional sessions:
Event Name/
├── Practice 1/
├── Sprint Shootout/
├── Sprint/
├── Qualifying/
└── Race/

Incomplete Laps

Drivers who crash or retire may have fewer telemetry files:
STR/  # Driver retired on lap 3
├── 1_tel.json
├── 2_tel.json
├── 3_tel.json      # Last lap
└── laptimes.json

Next Steps

Data Formats

Learn about JSON structures and field definitions

Accessing Data

Methods for downloading and loading data

Build docs developers (and LLMs) love