Skip to main content

Overview

Lap times data provides comprehensive timing and performance information for each completed lap, including sector times, speed trap measurements, tire compound selection, and pit stop timing. This is the primary dataset for understanding lap-by-lap performance trends.
Unlike telemetry which captures millisecond-level data, lap times aggregate performance over entire laps and sectors, making it ideal for high-level performance analysis and strategy evaluation.

File Location

Lap times are stored per driver within each session:
Pre-Season Testing 2/Practice 3/{DRIVER_CODE}/laptimes.json
Example:
  • Pre-Season Testing 2/Practice 3/VER/laptimes.json - All Verstappen lap times
  • Pre-Season Testing 2/Practice 3/SAI/laptimes.json - All Sainz lap times

Data Structure

The JSON file contains parallel arrays where each index represents one lap:
{
  "time": [137.573, 98.428, 98.855, ...],
  "lap": [2, 3, 4, ...],
  "s1": [69.909, 31.118, 31.54, ...],
  "s2": [43.887, 43.465, 43.488, ...],
  "s3": [23.777, 23.845, 23.827, ...],
  "compound": ["MEDIUM", "MEDIUM", "MEDIUM", ...],
  "life": [0, 1, 2, ...],
  "speed": [312.5, 315.2, 314.8, ...],
  "pos": [1, 1, 1, ...],
  "drv": "VER",
  "dNum": "3",
  "team": "Red Bull Racing"
}

Field Reference

Core Timing Information

time
array<number|null>
required
The actual lap time in seconds. null for incomplete laps (e.g., out-laps, in-laps, or retirement laps).Unit: seconds
Example: [137.573, 98.428, 98.855, 98.674, null, ...]
lap
array<number>
required
Sequential lap number starting from 1.Example: [1, 2, 3, 4, 5, ...]
sesT
array<number>
required
Session time in seconds when this lap ended, relative to session start.Unit: seconds from session start
Example: [145.2, 243.6, 342.5, ...]
lST
array<number>
required
Lap start time in seconds, relative to session start. Combined with sesT, you can calculate exact lap duration.Unit: seconds from session start
Example: [0.0, 145.2, 243.6, ...]
lSD
array<string>
required
Calendar date/timestamp when the lap started. Useful for multi-day sessions or correlating with external events.Format: ISO 8601 timestamp
Example: ["2026-02-20T09:15:23.000000000", ...]

Sector Times

F1 tracks are divided into 3 sectors. Sector times help identify where drivers gain or lose time. The sum of s1 + s2 + s3 equals the total lap time.
s1
array<number|null>
required
Time to complete the first section of track.Unit: seconds
Example: [31.118, 31.54, 31.307, ...]
s2
array<number|null>
required
Time to complete the second section of track.Unit: seconds
Example: [43.465, 43.488, 43.362, ...]
s3
array<number|null>
required
Time to complete the final section of track.Unit: seconds
Example: [23.845, 23.827, 24.005, ...]
s1T
array<number|null>
required
Session time when Sector 1 was completed, relative to session start.Unit: seconds
Example: [31.2, 176.3, 274.8, ...]
s2T
array<number|null>
required
Session time when Sector 2 was completed, relative to session start.Unit: seconds
Example: [74.7, 219.8, 318.2, ...]
s3T
array<number|null>
required
Session time when Sector 3 was completed, relative to session start.Unit: seconds
Example: [98.5, 243.6, 342.5, ...]

Speed Trap Data

vi1
array<number|null>
Top speed measured at the speed trap in Sector 1.Unit: km/h
Example: [298.5, 301.2, 299.8, ...]
vi2
array<number|null>
Top speed measured at the speed trap in Sector 2.Unit: km/h
Example: [315.3, 316.7, 314.9, ...]
vfl
array<number|null>
Top speed measured at the finish line.Unit: km/h
Example: [312.5, 315.2, 314.8, ...]
vst
array<number|null>
Top speed measured on the longest straight of the circuit.Unit: km/h
Example: [325.1, 327.8, 326.3, ...]

Tire Information

compound
array<string>
required
The tire compound being used for this lap.Values:
  • "SOFT" - Fastest, least durable
  • "MEDIUM" - Balanced performance
  • "HARD" - Slowest, most durable
  • "INTERMEDIATE" - Light rain conditions
  • "WET" - Heavy rain conditions
  • "TEST_UNKNOWN" - Testing compound (pre-season)
  • "UNKNOWN" - Compound not identified
Example: ["MEDIUM", "MEDIUM", "MEDIUM", "SOFT", ...]
life
array<number>
required
Number of laps completed on this tire set, including laps from previous sessions if tires were reused.Unit: laps
Example: [0, 1, 2, 3, 4, 0, 1, ...] (resets after pit stop with fresh tires)
fresh
array<boolean>
required
Indicates whether this was a new (fresh) tire when first fitted. true means the tire had life = 0 at stint start.Example: [true, true, true, true, true, false, false, ...]
stint
array<number>
required
Stint number, incrementing with each pit stop. First stint = 1, after first pit stop = 2, etc.Example: [1, 1, 1, 1, 2, 2, 2, 3, ...]

Position and Status

pos
array<number|null>
Driver’s position in the race/sprint at the end of this lap.
This value is null for practice sessions (FP1, FP2, FP3), qualifying sessions, sprint shootout, and crash/incomplete laps.
Range: 1-22
Example: [5, 4, 3, 3, 2, 1, ...]
status
array<string>
Track status codes that occurred during this lap (concatenated as a string).Status Codes:
  • "1" - Track Clear
  • "2" - Yellow Flag
  • "4" - Safety Car
  • "5" - Red Flag
  • "6" - Virtual Safety Car
  • "7" - VSC Ending
Example: ["1", "1", "216", "1", ...] (“216” = Yellow flag during lap)
pb
array<boolean>
Indicates whether this lap is the official personal best lap of the driver. If any lap is quicker than the marked PB, the faster lap was invalid (e.g., track limits exceeded).Example: [false, false, true, false, ...]

Pit Stop Information

pin
array<number|null>
Session time when the driver entered the pit lane. null if this wasn’t an in-lap.Unit: seconds from session start
Example: [null, null, 325.4, null, ...]
pout
array<number|null>
Session time when the driver exited the pit lane. null if this wasn’t an out-lap.Unit: seconds from session start
Example: [null, null, null, 348.2, null, ...]

Data Quality and Accuracy

iacc
array<boolean>
Indicates if this lap timing data passed basic accuracy checks. Lap start and end times are synced correctly with other laps.
This does NOT indicate accuracy of lap time or sector times (those are always considered accurate if they exist). Laps marked as inaccurate should be handled with caution.
Example: [true, true, true, false, true, ...]
ff1G
array<boolean>
Indicates that this lap was added by FastF1 (the data extraction tool). Such laps have limited information available, with some data interpolated or based on assumptions.
This commonly occurs for partial last laps when drivers retire on track.
Example: [false, false, false, false, true]
del
array<boolean>
Indicates that a lap was deleted by stewards (e.g., track limits violation).Example: [false, false, true, false, ...]
delR
array<string|null>
Reason for lap time deletion, if applicable.Example: [null, null, "Track limits at Turn 4", null, ...]

Driver/Team Reference

drv
string
required
Driver identifier (3-letter code).Example: "VER", "HAM", "LEC"
dNum
string
required
Driver’s car number for cross-referencing with other datasets.Example: "1", "44", "16"
team
string
required
Team name.Example: "Red Bull Racing", "Ferrari", "Mercedes"

Real Data Example

Here’s an actual sample from Max Verstappen’s lap times in Pre-Season Testing 2, Practice 3:
{
  "time": ["None", 137.573, 98.428, 98.855, 98.674],
  "lap": [1, 2, 3, 4, 5],
  "sesT": [32.5, 170.1, 268.5, 367.4, 466.1],
  "lST": [0.0, 32.5, 170.1, 268.5, 367.4],
  "lSD": [
    "2026-02-20T09:15:00.000000000",
    "2026-02-20T09:15:32.500000000",
    "2026-02-20T09:17:50.100000000",
    "2026-02-20T09:19:28.500000000",
    "2026-02-20T09:21:07.400000000"
  ],
  "s1": ["None", 69.909, 31.118, 31.54, 31.307],
  "s2": [48.895, 43.887, 43.465, 43.488, 43.362],
  "s3": ["None", 23.777, 23.845, 23.827, 24.005],
  "s1T": ["None", 102.4, 201.2, 299.9, 398.7],
  "s2T": [32.5, 146.3, 244.7, 343.4, 442.1],
  "s3T": ["None", 170.1, 268.5, 367.4, 466.1],
  "vi1": ["None", 298.5, 301.2, 299.8, 300.5],
  "vi2": ["None", 315.3, 316.7, 314.9, 315.8],
  "vfl": ["None", 312.5, 315.2, 314.8, 313.9],
  "vst": ["None", 325.1, 327.8, 326.3, 326.9],
  "compound": ["MEDIUM", "MEDIUM", "MEDIUM", "MEDIUM", "MEDIUM"],
  "life": [0, 1, 2, 3, 4],
  "fresh": [true, true, true, true, true],
  "stint": [1, 2, 2, 2, 2],
  "pos": ["None", "None", "None", "None", "None"],
  "status": ["1", "1", "1", "1", "1"],
  "pb": [false, false, true, false, false],
  "pin": ["None", 32.5, "None", "None", "None"],
  "pout": ["None", "None", 170.1, "None", "None"],
  "iacc": [true, true, true, true, true],
  "ff1G": [false, false, false, false, false],
  "del": [false, false, false, false, false],
  "delR": ["None", "None", "None", "None", "None"],
  "drv": "VER",
  "dNum": "3",
  "team": "Red Bull Racing"
}

Use Cases

Performance Tracking

  • Lap Time Evolution: Track how lap times improve or degrade over a stint
  • Sector Analysis: Identify which track sections favor specific drivers or teams
  • Speed Trap Comparison: Compare top speeds to evaluate straight-line performance
  • Tire Performance: Correlate lap times with tire age and compound

Strategy Analysis

  • Pit Stop Timing: Analyze pin and pout to understand pit stop strategies
  • Stint Length: Use stint and life to determine optimal tire strategy
  • Tire Degradation: Plot lap time vs. tire life to model degradation curves
  • Personal Best Analysis: Use pb flag to identify fastest valid laps

Race Analysis

  • Position Changes: Track pos across laps to visualize race progression
  • Yellow Flag Impact: Analyze lap times during status = "2" (Yellow Flag)
  • Safety Car Timing: Identify pit stop opportunities during status = "4" or "6"
  • Track Limits: Use del and delR to identify common track limit violation zones

Track Status Reference

CodeStatusDescriptionImpact
1Track ClearNormal racing conditionsFull speed racing
2Yellow FlagHazard on trackNo overtaking, reduced speed in sector
4Safety CarPhysical safety car deployedAll cars bunch up, pit window opens
5Red FlagSession stoppedCars return to pit lane
6Virtual Safety CarVSC deployedControlled speed delta, no safety car queue
7VSC EndingVSC about to endPrepare for racing restart
  • Telemetry - Millisecond-level sensor data for each lap
  • Weather - Environmental conditions affecting lap times
  • Race Control - Official messages about flags and track status
  • Drivers - Driver information and team affiliations

Build docs developers (and LLMs) love