Skip to main content
Telemetry data provides detailed information about car performance throughout a session. FastF1 gives you access to channels like speed, RPM, throttle position, gear selection, and car position on track.

Telemetry Overview

Telemetry data is stored in the Telemetry class, which extends pandas DataFrame with specialized methods for working with time-series racing data.

Available Telemetry Channels

The Telemetry class can contain multiple data channels:

Car Data Channels

Original data from the F1 API:
float
Car speed in km/h
float
Engine RPM (revolutions per minute)
int
Current gear number (1-8)
float
Throttle pedal position (0-100%)
The value 104 sometimes appears indicating unavailable data, typically when the car is stationary.
bool
Whether brakes are applied (True) or not (False)
int
DRS (Drag Reduction System) status:
  • 0: DRS not available
  • 1: DRS available but not activated
  • 2: DRS available and activated
  • 3: DRS active (different detection method)

Position Data Channels

float
X coordinate position in 1/10 meters
float
Y coordinate position in 1/10 meters
float
Z coordinate (elevation) in 1/10 meters
str
Position status: 'OnTrack' or 'OffTrack'

Timing Channels

Present in both car and position data:
timedelta
Time relative to the start of the data slice (0 = first sample)
timedelta
Time elapsed since the start of the session
datetime
Full date and time when the sample was created
str
How the sample was created:
  • 'car': Original car data sample
  • 'pos': Original position data sample
  • 'interpolated': Artificially created/interpolated sample

Computed Channels

These can be added using methods:
float
Distance driven since the first sample (meters)
float
Relative distance from 0.0 (first sample) to 1.0 (last sample)
float
Distance driven between consecutive samples (meters)
str
Driver number of the car ahead
float
Distance to the car ahead in meters

Accessing Telemetry Data

There are multiple ways to access telemetry:

From Laps

The most common approach is through lap objects:

From Session

Direct access to raw telemetry by driver:

Slicing Telemetry

Telemetry can be sliced by time or lap:

slice_by_lap()

Slice telemetry to include only data from specific laps:
Lap | Laps
required
The lap or laps to slice by
int
default:"0"
Number of samples to pad the slice with
str
default:"'both'"
Where to add padding: 'both', 'before', or 'after'
bool
default:"False"
Add interpolated samples at exact start/end times

slice_by_time()

Slice telemetry by session time:

Adding Computed Channels

Computed channels add derived data to telemetry:

add_distance()

Add cumulative distance driven:
Distance is calculated by integrating speed over time. Integration error accumulates over long periods, so use this only for single laps or a few laps at a time.

add_relative_distance()

Add normalized distance (0.0 to 1.0):

add_differential_distance()

Add distance between consecutive samples:

add_driver_ahead()

Add information about the driver ahead:
add_driver_ahead() should only be used for single laps or a few laps to avoid integration error. Cars in the pit lane are not excluded.

Merging Telemetry Channels

Merge telemetry from different sources:

merge_channels()

Merges two telemetry objects with different time bases:
Telemetry | DataFrame
required
The telemetry object to merge with
int | 'original' | None
Resampling frequency:
  • 'original': Keep all timestamps from both sources (recommended)
  • int: Resample to specified frequency in Hz
  • None: Use Telemetry.TELEMETRY_FREQUENCY setting
Merging with frequency='original' is recommended. It preserves all original data points and only interpolates where necessary. Resampling to a fixed frequency interpolates most values, reducing accuracy.

Resampling Telemetry

Change the sampling frequency of telemetry:

resample_channels()

You can also provide custom date references:

Practical Examples

Compare Driver Speed on Fastest Lap

Analyze Throttle Application

Find Braking Zones

Track Position Visualization

Advanced: Custom Telemetry Channels

Register custom channels for automatic interpolation:
Signal types:
  • 'continuous': Speed, distance, etc. (requires interpolation method)
  • 'discrete': Gear, DRS, flags, etc. (uses forward-fill)
  • 'excluded': Channel ignored during resampling

Performance Tips

get_car_data() is faster than get_telemetry() if you don’t need position data:
Only add computed channels you actually need:
Resample only once from original data to preserve accuracy: