> ## Documentation Index
> Fetch the complete documentation index at: https://tif1.tracinginsights.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Data Reference

> Field-by-field reference for the raw TracingInsights telemetry data files (laptimes.json, tel.json, weather.json, rcm.json, drivers.json, corners.json)

This guide documents every field in the TracingInsights GitHub telemetry data repositories and the JSON structures. Each field is explained with practical context, so no prior Formula 1 knowledge is required.

<Note>
  This page documents the **raw JSON files** served from the TracingInsights data repos. tif1 loads these files and maps their abbreviated keys to fastf1-compatible PascalCase DataFrame columns. See the [Data Schema Reference](/reference/data-schema) for the columns of `session.laps`, `lap.telemetry`, and the other public APIs.
</Note>

## How This Data Is Generated

The data repositories use two main extraction scripts. They share the same output format for `laptimes.json`, but produce different session-level files.

| Script        | Primary Output                                                    | Extra Session Files                                        | Notes                                                                                                                                                                    |
| :------------ | :---------------------------------------------------------------- | :--------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `R.py`        | Per-driver `laptimes.json` and per-lap `{lap}_tel.json` telemetry | `weather.json`, `rcm.json`, `drivers.json`, `corners.json` | Full telemetry extraction; uses FastF1 + MultiViewer circuit API fallback.                                                                                               |
| `LapTimes.py` | Per-driver `laptimes.json` only                                   | None                                                       | Optimized lap-time-only extraction; enriches Race laps with official Ergast lap times and adds OpenF1 mini-sectors (`ms1`, `ms2`, `ms3`) and qualifying segments (`qs`). |

**Data sources:**

* **FastF1:** base lap timing, telemetry, weather, race control messages, circuit info, driver info.
* **Ergast/Jolpica:** official Race lap times and positions (used by `LapTimes.py` to overwrite FastF1 Race `LapTime` and `Position`).
* **OpenF1:** mini-sector segment data and session keys (used by `LapTimes.py` for `ms1`/`ms2`/`ms3`).
* **MultiViewer API:** circuit corner geometry fallback when FastF1 circuit info is unavailable.

## Weather Data (`weather.json`)

Environmental conditions recorded approximately once per minute during the session.

| Key   | Field             | Description                                                                  | Unit           |
| :---- | :---------------- | :--------------------------------------------------------------------------- | :------------- |
| `wT`  | Time              | Session time when this weather sample was recorded from the start of session | seconds        |
| `wAT` | Air Temperature   | Ambient air temperature around the track                                     | °C             |
| `wH`  | Humidity          | Relative humidity of the air                                                 | %              |
| `wP`  | Pressure          | Atmospheric air pressure                                                     | mbar           |
| `wR`  | Rainfall          | Whether it was raining at this moment                                        | `true`/`false` |
| `wTT` | Track Temperature | Temperature of the asphalt surface                                           | °C             |
| `wWD` | Wind Direction    | Direction the wind is coming from, measured as compass bearing               | ° (0-359)      |
| `wWS` | Wind Speed        | How fast the wind is blowing                                                 | m/s            |

### Why Weather Matters in F1

Weather has a strong effect on lap times. Cold air reduces engine power, hot tracks reduce tire grip, and rain changes braking distances. Wind direction affects DRS (Drag Reduction System) effectiveness and how the car handles in turns.

## Race Control Messages (`rcm.json`)

Messages sent by Race Control (the officials) to teams about track status, penalties, and incidents.

| Key      | Field                         | Description                                                                                                   | Values                                                                                |
| :------- | :---------------------------- | :------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------ |
| `time`   | Time                          | Session time when this message was issued                                                                     | Time                                                                                  |
| `cat`    | Category                      | Type of message being sent                                                                                    | `"Other"`, `"Flag"`, `"Drs"`, `"CarEvent"`                                            |
| `msg`    | Message                       | Human-readable description of the event                                                                       | e.g. `"Yellow Flag"`, `"DRS Enabled"`, `"Unsafe Release"`                             |
| `status` | Status                        | Additional context about the message state                                                                    | e.g. `"DISABLED"`, `"ENABLED"`, depends on category                                   |
| `flag`   | Flag                          | Type of flag being waved (if applicable)                                                                      | `"GREEN"`, `"RED"`, `"YELLOW"`, `"CLEAR"`, `"CHEQUERED"`                              |
| `scope`  | Scope                         | How wide the impact of this message is                                                                        | `"Track"` (entire track), `"Sector"` (one of 3 sectors), `"Driver"` (specific driver) |
| `sector` | Sector                        | Which mini sector is affected (if scope is `"Sector"`). There are 3 sectors, each divided into 8 mini sectors | 1-24                                                                                  |
| `dNum`   | Driver Number / Racing Number | The driver's car number affected by the message (if scope is `"Driver"`)                                      | String: `"1"`, `"44"`, `"63"`, etc.                                                   |
| `lap`    | Lap                           | Which lap number this message refers to                                                                       | Integer                                                                               |

### What This Means

When a yellow flag is deployed due to debris in Sector 2, the data can show `{cat: "Flag", msg: "Yellow", flag: "YELLOW", scope: "Sector", sector: 2}`. This tells the teams that drivers must slow down in that sector.

## Telemetry Data (`tel.json`)

Detailed second-by-second (actually 3.7 Hz sampling, roughly 270ms intervals) data from the car's sensors and systems. Each lap is stored in its own `{lap}_tel.json` file.

### Basic Car Metrics

| Key            | Field                  | Description                                                                                                        | Unit               | Notes                                                                                       |
| :------------- | :--------------------- | :----------------------------------------------------------------------------------------------------------------- | :----------------- | :------------------------------------------------------------------------------------------ |
| `time`         | Time                   | Time when this data sample was recorded from start of the lap                                                      | seconds            |                                                                                             |
| `rpm`          | Revolutions Per Minute | Engine rotations per minute                                                                                        | RPM                | Higher on straights, lower in corners                                                       |
| `speed`        | Speed                  | How fast the car is traveling                                                                                      | km/h               | Derived from GPS/telemetry sources                                                          |
| `gear`         | Gear                   | Current gear the car is in                                                                                         | 1-8                | F1 uses 8-speed gearboxes                                                                   |
| `throttle`     | Throttle Position      | How much the driver is pressing the throttle pedal                                                                 | 0-100%             | 0% = fully released, 100% = floored                                                         |
| `brake`        | Brake                  | Whether brakes are being applied                                                                                   | `true`/`false`     | Binary: either braking or not                                                               |
| `drs`          | DRS                    | Status of the DRS (rear wing flap that reduces drag). The raw FastF1 value is mapped to a binary open/closed state | 0 or 1             | 0 = Off/closed; 1 = open. Raw FastF1 DRS values of `10`, `12`, or `14` are treated as open. |
| `distance`     | Distance               | Total distance driven since start of lap                                                                           | meters             | Increases monotonically (always increasing)                                                 |
| `rel_distance` | Relative Distance      | Normalized distance along the lap, where 0.0 is the first sample and 1.0 is the last sample                        | unitless (0.0-1.0) | Useful for aligning telemetry across different laps                                         |

### Driver and Car Ahead Information

| Key                     | Field                    | Description                                                   | Type             |
| :---------------------- | :----------------------- | :------------------------------------------------------------ | :--------------- |
| `DriverAhead`           | Driver Ahead             | The car number of the driver directly ahead in the race order | String or `None` |
| `DistanceToDriverAhead` | Distance To Driver Ahead | How far behind the next car is                                | meters           |

### Acceleration Vectors (G-Forces)

The car experiences forces in three directions simultaneously. The extraction script **computes these values** using gradient analysis of position, speed, and distance data. **These are not raw IMU sensor values.** They are mathematically derived and heavily processed.

| Key     | Axis Direction                              | Computation Formula                                                                              | Outlier Handling                                                                                                                                  | Smoothing              |                                                                                                           |    |                      |                        |
| :------ | :------------------------------------------ | :----------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------- | --------------------------------------------------------------------------------------------------------- | -- | -------------------- | ---------------------- |
| `acc_x` | Longitudinal (forward/backward along track) | `ax = gradient(v_ms) / gradient(time)`, where `v_ms = speed / 3.6`                               | If `ax > 25 m/s²` (one-sided, positive only), the value is replaced with the previous sample's value. Boundary samples (first/last) are excluded. | 3-point moving average |                                                                                                           |    |                      |                        |
| `acc_y` | Lateral (side-to-side)                      | `ay = v² × C`, where `C = dθ / (ds + 0.0001)` and `θ = arctan2(dy, dx)`, phase-unwrapped         | **Stage 1 (intermediate):** if \`                                                                                                                 | dθ                     | > 0.5 rad/sample`, replace with the previous value before computing C and ay. **Stage 2:** hard-zero if ` | ay | > 150 m/s²\` (\~15G) | 9-point moving average |
| `acc_z` | Vertical (up/down, elevation changes)       | `az = v² × C_z`, where `C_z = dθ_z / (ds + 0.0001)` and `θ_z = arctan2(dz, dx)`, phase-unwrapped | **Stage 1 (intermediate):** if \`                                                                                                                 | dθ\_z                  | > 0.5 rad/sample`, replace with the previous value. **Stage 2:** hard-zero if `                           | az | > 150 m/s²\` (\~15G) | 9-point moving average |

### Position Data (3D Coordinates)

| Key | Field      | Description                                         | Unit   |
| :-- | :--------- | :-------------------------------------------------- | :----- |
| `x` | X Position | Horizontal position on the track (left-right)       | meters |
| `y` | Y Position | Horizontal position on the track (forward-backward) | meters |
| `z` | Z Position | Vertical height above track surface                 | meters |

<Note>
  Position data is interpolated (estimated between actual measurements) to align with the higher-frequency car data. Car data comes at roughly 240ms intervals and position data at roughly 220ms. The two streams must be matched.
</Note>

### Other Telemetry Fields

| Key       | Field    | Description                                                                   |
| :-------- | :------- | :---------------------------------------------------------------------------- |
| `dataKey` | Data Key | Unique identifier that links this telemetry data to a specific driver and lap |

The format is `Year-EventName-Session-Driver 3 letter code-Lap Number`, for example `2025-United States Grand Prix-Race-VER-9`.

<Info>
  For 2026 Pre-Season Testing, `PreSeasonTesting1` is used as EventName instead of `Pre-Season Testing 1`.
</Info>

## Driver Data (`drivers.json`)

Static information about each driver that does not change during a session.

| Key      | Field         | Description                                      | Type                                                               |
| :------- | :------------ | :----------------------------------------------- | :----------------------------------------------------------------- |
| `driver` | Driver (ID)   | Unique 3 letter driver identifier                | String: `"VER"`                                                    |
| `team`   | Team          | Team name the driver is racing for               | String: `"Red Bull Racing"`, `"Ferrari"`, etc.                     |
| `dn`     | Driver Number | The number on the car                            | Integer: 1-99                                                      |
| `fn`     | First Name    | Driver's first name                              | String: `"Lewis"`, `"Max"`, `"Kimi"`                               |
| `ln`     | Last Name     | Driver's last name                               | String: `"Hamilton"`, `"Verstappen"`, `"Antonelli"`                |
| `tc`     | Team Color    | Official team color in hexadecimal format        | Hex string: `"4781D7"` (Red Bull's blue), `"ED1131"` (Ferrari red) |
| `url`    | Headshot URL  | Web link to the driver's official headshot photo | URL string                                                         |

## Lap Times Data (`laptimes.json`)

Comprehensive timing and performance information for each completed lap, stored per driver.

### Core Timing Information

| Key    | Field          | Description                                     | Unit        | Notes                                                                                           |
| :----- | :------------- | :---------------------------------------------- | :---------- | :---------------------------------------------------------------------------------------------- |
| `time` | Lap Time       | The actual lap time for this lap                | seconds     | For Race sessions this is overwritten with the official Ergast/Jolpica lap time when available. |
| `lap`  | Lap Number     | Which lap this is (1st, 2nd, 3rd, etc.)         | Integer     | Counts from 1                                                                                   |
| `sesT` | Session Time   | When this lap ended relative to session start   | seconds     |                                                                                                 |
| `lST`  | Lap Start Time | When this lap started relative to session start | seconds     | Lap ended at `sesT`, started at `lST`                                                           |
| `lSD`  | Lap Start Date | Calendar date/timestamp when lap started        | Date string | Useful for multi-day sessions                                                                   |

### Sector Times (Track Divided into 3 Sections)

The track is divided into 3 sectors. Sector times show where a driver gained or lost time.

| Key   | Field                 | Description                                                           | Notes   |
| :---- | :-------------------- | :-------------------------------------------------------------------- | :------ |
| `s1`  | Sector 1 Time         | Time to complete first section of track                               | seconds |
| `s2`  | Sector 2 Time         | Time to complete second section of track                              | seconds |
| `s3`  | Sector 3 Time         | Time to complete final section of track                               | seconds |
| `s1T` | Sector 1 Session Time | Session time when the Sector 1 time was set relative to session start | seconds |
| `s2T` | Sector 2 Session Time | Session time when the Sector 2 time was set relative to session start | seconds |
| `s3T` | Sector 3 Session Time | Session time when the Sector 3 time was set relative to session start | seconds |

### Speed Trap Data (Measured at Fixed Points)

Modern F1 tracks have speed guns that measure top speed at specific locations:

| Key   | Field                        | Description                                  | Unit |
| :---- | :--------------------------- | :------------------------------------------- | :--- |
| `vi1` | Speed @ Intermediate Point 1 | Top speed measured at speed trap in Sector 1 | km/h |
| `vi2` | Speed @ Intermediate Point 2 | Top speed measured at speed trap in Sector 2 | km/h |
| `vfl` | Speed @ Finish Line          | Top speed measured at the finish line        | km/h |
| `vst` | Speed @ Longest Straight     | Top speed measured on the longest straight   | km/h |

### Tire Information

| Key        | Field         | Description                                                                       | Type           | Values                                                                                          |
| :--------- | :------------ | :-------------------------------------------------------------------------------- | :------------- | :---------------------------------------------------------------------------------------------- |
| `compound` | Tire Compound | The type of tire being used                                                       | String         | `"SOFT"`, `"MEDIUM"`, `"HARD"`, `"INTERMEDIATE"`, `"WET"`, `"UNKNOWN"`                          |
| `life`     | Tire Life     | Laps driven on this tire (includes laps in other sessions for used sets of tires) | Integer (laps) |                                                                                                 |
| `fresh`    | Fresh Tire    | Was this a new (fresh) tire when fitted?                                          | Boolean        | `true` = new tire, `false` = used tire. Tire had TyreLife=0 at stint start, i.e. was a new tire |
| `stint`    | Stint Number  | How many pit stops has this driver made                                           | Integer        | First stint = 1, after 1st pit stop = 2, etc.                                                   |

### Mini-Sector Segment Times (OpenF1)

Three-character encoded strings show the per-mini-sector colour and segment classification for each sector. These fields are available only when OpenF1 data can be matched to the session.

| Key   | Field                 | Description                                      | Values                              |
| :---- | :-------------------- | :----------------------------------------------- | :---------------------------------- |
| `ms1` | Mini-Sector Sectors 1 | Encoded mini-sector classifications for Sector 1 | String of digits, e.g. `"01331111"` |
| `ms2` | Mini-Sector Sectors 2 | Encoded mini-sector classifications for Sector 2 | String of digits                    |
| `ms3` | Mini-Sector Sectors 3 | Encoded mini-sector classifications for Sector 3 | String of digits                    |

Each character is one mini-sector and is encoded using the following colour map:

| Encoded Digit | Meaning       |
| :------------ | :------------ |
| `0`           | Yellow        |
| `1`           | Green         |
| `2`           | Unknown       |
| `3`           | Purple        |
| `4`           | Unknown       |
| `5`           | Pitlane       |
| `6`           | Unknown       |
| `7`           | Not Available |

### Qualifying Segment

| Key  | Field              | Description                                                                        | Values                                              |
| :--- | :----------------- | :--------------------------------------------------------------------------------- | :-------------------------------------------------- |
| `qs` | Qualifying Segment | Which qualifying segment this lap belongs to (Qualifying / Sprint Qualifying only) | `"Q1"`, `"Q2"`, `"Q3"` or `"SQ1"`, `"SQ2"`, `"SQ3"` |

### Position and Status

| Key      | Field         | Description                                                                                                                                                                                                                                                | Type                   |
| :------- | :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------- |
| `pos`    | Position      | Driver's position in the race/sprint at the end of this lap. This value is `None` for FP1, FP2, FP3, Sprint Shootout, and Qualifying as well as for crash laps. For Race sessions this may be overwritten with the Ergast/Jolpica position when available. | Integer: 1-22          |
| `status` | Track Status  | A string containing track status numbers for all track status that occurred during this lap                                                                                                                                                                | String: `"1"`, `"216"` |
| `pb`     | Personal Best | Whether this lap is the official personal best lap of a driver. If any lap of a driver is quicker than their respective personal best lap, that quicker lap is invalid and not counted — for example if track limits were exceeded                         | `true`/`false`         |

### Pit Stop Information

A pit lap is either an **in-lap** (driving into the pits) or an **out-lap** (driving out of the pits).

| Key    | Field        | Description                                                    | Unit    | Notes                            |
| :----- | :----------- | :------------------------------------------------------------- | :------ | :------------------------------- |
| `pin`  | Pit In Time  | When the driver entered the pit lane relative to session start | seconds | `None` if this wasn't an in-lap  |
| `pout` | Pit Out Time | When the driver exited the pit lane relative to session start  | seconds | `None` if this wasn't an out-lap |

### Data Quality and Accuracy

| Key    | Field            | Description                                                                                                                                                      | Type    | Notes                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| :----- | :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `iacc` | Is Accurate      | Is this lap timing data considered accurate?                                                                                                                     | Boolean | Indicates that the lap start and end time are synced correctly with other laps. Do not confuse this with the accuracy of the lap time or sector times — they are always considered accurate if they exist! If `true`, the lap passed a basic accuracy check for timing data. This does not guarantee accuracy, but laps marked inaccurate need to be handled with caution — they might contain errors which cannot be spotted easily. |
| `ff1G` | FastF1 Generated | Indicates that this lap was added by FastF1. Such a lap generally has very limited information available, partly interpolated or based on reasonable assumptions | Boolean | `true` means some missing data was filled in. Cases where this is used include partial last laps added for drivers that retired on track.                                                                                                                                                                                                                                                                                             |
| `del`  | Deleted          | Indicates that a lap was deleted by the stewards, for example because of a track limits violation                                                                | Boolean |                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `delR` | Deleted Reason   | Gives the reason for a lap time deletion                                                                                                                         | String  |                                                                                                                                                                                                                                                                                                                                                                                                                                       |

### Driver/Team Reference

| Key    | Field         | Type   | Purpose                                      |
| :----- | :------------ | :----- | :------------------------------------------- |
| `drv`  | Driver        | String | Driver identifier/code, e.g. `"LEC"`         |
| `dNum` | Driver Number | String | Car number for cross-referencing, e.g. `"1"` |
| `team` | Team          | String | Team name, e.g. `"Ferrari"`                  |

### Per-Lap Weather

When weather data can be matched to individual laps, the following fields are appended to `laptimes.json`. These use the same abbreviations as `weather.json`.

| Key   | Field             | Description                                                    | Unit           |
| :---- | :---------------- | :------------------------------------------------------------- | :------------- |
| `wT`  | Time              | Session time when this weather sample was recorded             | seconds        |
| `wAT` | Air Temperature   | Ambient air temperature around the track                       | °C             |
| `wH`  | Humidity          | Relative humidity of the air                                   | %              |
| `wP`  | Pressure          | Atmospheric air pressure                                       | mbar           |
| `wR`  | Rainfall          | Boolean flag indicating whether it was raining                 | `true`/`false` |
| `wTT` | Track Temperature | Temperature of the asphalt surface                             | °C             |
| `wWD` | Wind Direction    | Direction the wind is coming from, measured as compass bearing | ° (0-359)      |
| `wWS` | Wind Speed        | How fast the wind is blowing                                   | m/s            |

### Track Status Reference

| Status Code | Status Name                       | Description                                                                                                                                                                              | Typical When It Appears                                                                            | Notes                                                                                                                                                          |
| ----------- | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `1`         | Track Clear                       | Normal racing conditions with no restrictions. The circuit is considered safe for full-speed racing.                                                                                     | At the start of a session, after incidents are cleared, or when other track control statuses end.  | Often used as a reset state after other flags or control measures.                                                                                             |
| `2`         | Yellow Flag                       | Warns drivers of a hazard on the track (accident, debris, stopped car, etc.). Drivers must slow down and overtaking is prohibited in affected sectors.                                   | During incidents where marshals or recovery vehicles may be near the track.                        | Sector-level information may not always be specified in this status, meaning the exact affected sectors can be unknown in the data feed.                       |
| `3`         | Unknown / Unused                  | A status code listed in the system but rarely or never observed in real telemetry or timing data.                                                                                        | Not typically seen in real race data.                                                              | Likely reserved for a future state, legacy compatibility, or internal system use.                                                                              |
| `4`         | Safety Car                        | A physical safety car is deployed on track to control the pace while marshals clear hazards or debris. Drivers must follow the safety car at reduced speed and overtaking is restricted. | Major accidents, heavy debris, or dangerous track conditions requiring neutralization of the race. | Race control manages field order behind the safety car. Lapped cars may be allowed to overtake depending on regulations.                                       |
| `5`         | Red Flag                          | The session or race is stopped due to unsafe conditions (serious accident, barrier damage, severe weather, etc.). Cars return to the pit lane or stop as directed.                       | Major incidents or conditions where continuing even behind a safety car is unsafe.                 | Timing may be paused depending on session type. Restart procedures vary by race regulations.                                                                   |
| `6`         | Virtual Safety Car (VSC) Deployed | A neutralization procedure where drivers must follow a controlled speed delta instead of following a physical safety car.                                                                | Smaller incidents where marshals need time on track but a full safety car is unnecessary.          | Drivers maintain a regulated pace via dashboard delta timing rather than forming a queue behind a safety car.                                                  |
| `7`         | Virtual Safety Car Ending         | Signals that the Virtual Safety Car period is about to end and racing will resume shortly.                                                                                               | Immediately before the VSC period concludes.                                                       | Drivers see the "VSC ending" notification on steering wheels and broadcast graphics. Status `1` will follow to confirm the return to normal racing conditions. |

## Circuit/Corner Data (`corners.json`)

Information about the physical corners of the racetrack layout.

| Key            | Field         | Description                                                                                                                                                         | Unit              | Purpose                                       |
| :------------- | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------- | :-------------------------------------------- |
| `CornerNumber` | Corner Number | Sequential number of this corner                                                                                                                                    | Integer: 1+       | Identifies which corner (1st, 2nd, 3rd, etc.) |
| `X`            | X Coordinate  | Horizontal position of the corner on the track map                                                                                                                  | meters            |                                               |
| `Y`            | Y Coordinate  | Horizontal position of the corner on the track map                                                                                                                  | meters            |                                               |
| `Angle`        | Angle         | An angle in degrees, used to visually offset the marker's placement on a track map in a logical direction (usually orthogonal to the track)                         | °                 |                                               |
| `Distance`     | Distance      | Location of the marker as a distance from the start/finish line                                                                                                     | meters            | Position relative to start/finish             |
| `Rotation`     | Rotation      | Rotation of the circuit in degrees. Can be used to rotate the coordinate system of the telemetry (position) data to match the orientation of the official track map | Degrees or `None` |                                               |

## Where to Find More Information

Official **FastF1 Documentation**: [https://docs.fastf1.dev/](https://docs.fastf1.dev/)

* Detailed API documentation
* Examples and tutorials
* Data accuracy information
* Troubleshooting guides
