{{ activeSetupModalVersion.setup_data.setup_description }}
compare_arrows Driver Comparison
{{ hasRealRecentDrivers ? 'history' : 'group' }}
{{ hasRealRecentDrivers ? 'Recently Viewed' : 'Driver Profiles' }}
{{ (d.full_name || '?').charAt(0).toUpperCase() }}
{{ d.full_name }}
sports_motorsports
Drivers
{{ (d.full_name || d.driver_name || '?').charAt(0).toUpperCase() }}
{{ d.full_name || d.driver_name }}
{{ selectedDriverA.full_name.charAt(0).toUpperCase() }}
{{ selectedDriverA.full_name }}
{{ selectedDriverA.club_name }}
#{{ selectedDriverA.transponder_id }}
{{ selectedDriverA.total_races }} races
Overall
{{ formatShortDate(m.meeting_date) }}
{{ m.venue_name }}
{{ m.bestLap.toFixed(2) }}s
{{ m.races }} race{{ m.races !== 1 ? 's' : '' }}
VS
{{ hasRealRecentDrivers ? 'history' : 'group' }}
{{ hasRealRecentDrivers ? 'Recently Viewed' : 'Driver Profiles' }}
{{ (d.full_name || '?').charAt(0).toUpperCase() }}
{{ d.full_name }}
sports_motorsports
Drivers
{{ (d.full_name || d.driver_name || '?').charAt(0).toUpperCase() }}
{{ d.full_name || d.driver_name }}
{{ selectedDriverB.full_name.charAt(0).toUpperCase() }}
{{ selectedDriverB.full_name }}
{{ selectedDriverB.club_name }}
#{{ selectedDriverB.transponder_id }}
{{ selectedDriverB.total_races }} races
Overall
{{ formatShortDate(m.meeting_date) }}
{{ m.venue_name }}
{{ m.bestLap.toFixed(2) }}s
{{ m.races }} race{{ m.races !== 1 ? 's' : '' }}
compare_arrows
Compare Two Drivers
Search and select two drivers above to see a side-by-side performance comparison with charts, stats, and meeting-by-meeting breakdowns.
person_add
Add a Second Driver
Select another driver to compare against {{ selectedDriverA.full_name }}.
person_add
Add a First Driver
Select a driver to compare against {{ selectedDriverB.full_name }}.
Race Type:
{{ stat.aValue }}
{{ stat.icon }}
{{ stat.label }}
{{ stat.bValue }}
build
Setup Sheets
build
{{ firstName(selectedDriverA.full_name) }}
{{ s.car_name || [s.manufacturer_name, s.model_name].filter(Boolean).join(' ') || 'Setup' }}
visibility
build
{{ firstName(selectedDriverB.full_name) }}
{{ s.car_name || [s.manufacturer_name, s.model_name].filter(Boolean).join(' ') || 'Setup' }}
visibility
timer {{ isMeetingMode ? 'Best Lap — Race by Race' : 'Best Lap Time Trend' }}
avg_pace {{ isMeetingMode ? 'Average Lap — Race by Race' : 'Average Lap Time Trend' }}
leaderboard {{ isMeetingMode ? 'Position — Race by Race' : 'Position Trend' }}
No shared meetings to plot positions
speed {{ isMeetingMode ? 'Consistency — Race by Race' : 'Consistency Trend' }}
flag
Race Detail
Race Detail dropdowns
- Lists every round each driver was entered in for this meeting (and class).
- Rounds where a driver was entered but didn't post a lap (DNS / DNF) are still shown — they appear empty in the chart and table when selected.
- Multiple rounds of the same final get a
· R1 / R2 / R3 suffix so you can pick a specific one.
Race Detail dropdowns
- Lists every round each driver was entered in for this meeting (and class).
- Rounds where a driver was entered but didn't post a lap (DNS / DNF) are still shown — they appear empty in the chart and table when selected.
- Multiple rounds of the same final get a
· R1 / R2 / R3suffix so you can pick a specific one.
ads_click
Click a data point on any chart above, or pick a race for each driver, to see lap-by-lap comparison.
progress_activity
Loading race data...
Lap data not available for this race.
timer Lap Times
swap_vert Cumulative Gap
table_rows Lap Times Breakdown
Lap Δ = per-lap difference (A − B)
Gap = cumulative running gap
{{ firstName(selectedDriverA?.full_name) }} ahead
{{ firstName(selectedDriverB?.full_name) }} ahead
| Lap | {{ firstName(selectedDriverA?.full_name) }} | {{ firstName(selectedDriverB?.full_name) }} | {{ firstName(o.full_name) }} | Lap Δ | Gap |
|---|---|---|---|---|---|
| {{ i + 1 }} | {{ row.aFormatted }} | {{ row.bFormatted }} | {{ cell.formatted }} | {{ row.deltaFormatted }} | {{ row.gapFormatted }} |
event_busy
These drivers haven't raced at the same meeting yet.
Try removing venue/class filters, or check the Charts tab to compare their individual trends.
| Date | Meeting | {{ firstName(selectedDriverA.full_name) }} Best | {{ firstName(selectedDriverB.full_name) }} Best | Gap | {{ firstName(selectedDriverA.full_name) }} Pos | {{ firstName(selectedDriverB.full_name) }} Pos |
|---|---|---|---|---|---|---|
| {{ formatDate(m.meeting_date) }} | {{ m.meeting_title || m.venue_name }} | {{ formatLapTime(m.aBest) }} | {{ formatLapTime(m.bBest) }} | {{ formatGap(m.aBest, m.bBest) }} | {{ m.aPos || '-' }} | {{ m.bPos || '-' }} |
stadium
No shared venue data available.
| Venue | {{ firstName(selectedDriverA.full_name) }} Best | {{ firstName(selectedDriverB.full_name) }} Best | Gap | {{ firstName(selectedDriverA.full_name) }} Races | {{ firstName(selectedDriverB.full_name) }} Races |
|---|---|---|---|---|---|
| {{ v.venue_name }} | {{ v.aBest != null ? formatLapTime(v.aBest) : '-' }} | {{ v.bBest != null ? formatLapTime(v.bBest) : '-' }} | {{ v.aBest != null && v.bBest != null ? formatGap(v.aBest, v.bBest) : '-' }} | {{ v.aRaces }} | {{ v.bRaces }} |