JSON Structure Overview
Every JSON file follows a predictable structure where data is organized in arrays, with each array representing a specific field across all samples.Array-Based Format
Rather than storing each sample as an object, data is stored in parallel arrays for efficiency:- Index 0 across all arrays = first sample
- Index 1 across all arrays = second sample
- Index
nacross all arrays = nth sample
Telemetry Data Format
File: X_tel.json
Contains second-by-second sensor data for a single lap (~3.7 Hz sampling rate, approximately every 270ms).
- Structure
- Field Definitions
- Example Usage
Important: Acceleration data (
acc_x, acc_y, acc_z) is computed from position and speed data, not raw IMU sensors. Values are smoothed and outliers are filtered.Data Key Format
ThedataKey field uniquely identifies each lap:
"2026-Australian Grand Prix-Race-VER-9""2026-PreSeasonTesting1-Practice 1-NOR-5"
Lap Times Data Format
File: laptimes.json
Contains comprehensive timing and performance data for all laps completed by a driver.
- Structure
- Core Timing Fields
- Tire Fields
- Position & Status Fields
Track Status Codes
| Code | Meaning | Description |
|---|---|---|
"1" | Track Clear | Normal racing conditions |
"2" | Yellow Flag | Hazard on track, no overtaking |
"4" | Safety Car | Physical safety car deployed |
"5" | Red Flag | Session stopped |
"6" | VSC Deployed | Virtual Safety Car active |
"7" | VSC Ending | VSC about to end |
Multiple status codes may appear together (e.g.,
"126" = Track Clear + Yellow + VSC). Each digit represents a different status.Weather Data Format
File: weather.json
Environmental conditions sampled approximately once per minute.
| Field | Full Name | Unit | Description |
|---|---|---|---|
wT | Time | seconds | Session time when sampled |
wAT | Air Temperature | °C | Ambient air temperature |
wH | Humidity | % | Relative humidity |
wP | Pressure | mbar | Atmospheric pressure |
wR | Rainfall | boolean | Is it raining? |
wTT | Track Temperature | °C | Asphalt surface temperature |
wWD | Wind Direction | degrees | Compass bearing (0-359) |
wWS | Wind Speed | m/s | Wind velocity |
Race Control Messages Format
File: rcm.json
Official messages from race control about flags, incidents, and track status.
| Field | Type | Description |
|---|---|---|
time | ISO datetime | When message was issued |
cat | string | ”Flag”, “Other”, “SafetyCar”, “Drs”, “CarEvent” |
msg | string | Human-readable message text |
status | string | Additional context (“ENABLED”, “DISABLED”, etc.) |
flag | string | Flag type if applicable |
scope | string | ”Track”, “Sector”, or “Driver” |
sector | integer/null | Mini-sector number (1-24) if scope is “Sector” |
dNum | string/null | Driver number if scope is “Driver” |
lap | integer/null | Lap number if applicable |
Corners Data Format
File: corners.json
Circuit layout information with corner positions and angles.
| Field | Type | Unit | Description |
|---|---|---|---|
CornerNumber | integer | - | Sequential corner identifier (1, 2, 3…) |
X | float | meters | Horizontal position on track map |
Y | float | meters | Horizontal position on track map |
Angle | float | degrees | Visual offset angle for map markers |
Distance | float | meters | Distance from start/finish line |
Rotation | float/null | degrees | Track rotation to match official map |
Drivers Data Format
File: drivers.json
Metadata about all drivers participating in the session.
| Field | Full Name | Type | Description |
|---|---|---|---|
driver | Driver Code | string | 3-letter identifier (“NOR”, “VER”, etc.) |
team | Team Name | string | Constructor name |
dn | Driver Number | string | Car number |
fn | First Name | string | Driver’s first name |
ln | Last Name | string | Driver’s last name |
tc | Team Color | string | Hex color code (without #) |
url | Headshot URL | string | Link to driver photo |
Unlike other files,
drivers.json uses an object-based format with an array of driver objects rather than parallel arrays.Field Naming Conventions
The data uses abbreviations consistently:-
Prefixes:
w= Weather (e.g.,wT,wAT,wH)s= Sector (e.g.,s1,s2,s3)v= Speed/Velocity (e.g.,vi1,vfl,vst)p= Pit (e.g.,pin,pout)l= Lap (e.g.,lST,lSD)d= Driver (e.g.,dNum,drv)
-
Suffixes:
T= Time/Temperature (context-dependent)D= Date/Direction/Distance (context-dependent)S= Speed/Start (context-dependent)
Parsing Tips
Handle Missing Values
Many fields can benull or "None" (as a string):
Align Array Indices
When working with telemetry or laptimes, remember all arrays share the same indices:Convert Data Types
JSON doesn’t distinguish between int and float - handle accordingly:Next Steps
Field Reference
Complete field-by-field reference documentation
Python Examples
Code examples for common analysis tasks
