Head-to-Head selections are open
Pick a rival before racing starts to compete for leaderboard points.

Welcome to RaceMetrics RC!

Your complete RC racing analytics platform

search
Browse Racing Data

Search venues, view meetings, and explore race results from RC tracks worldwide

analytics
Driver Performance Analytics

Deep dive into driver statistics, lap times, consistency, and AI-powered insights

play_circle
Race Simulator

Replay races with interactive visualizations, follow drivers, and analyze racing lines

trophy
Championship Standings

Track points, positions, and championship progress across multiple series

star
Favorites & Recent

Quick access to your favorite venues and recently viewed races

link
Social Integration

Connect with clubs via Facebook, YouTube, and other social platforms

Complete your profile
{{ setupChecklistDoneCount }} of {{ setupChecklist.items.length }}

{{ venueInfo.location }}

{{ venueDistanceLabel(venueInfo) }}
sync Last Sync: {{ relativeSyncTime(meetings.find(m => m.meeting_id == selectedMeetingId)?.last_sync) }}

{{ venueInfo.name || 'This venue' }} {{ venueInfo.provider }}

Scraping isn't enabled here yet, so there's no race data to show. Send a request — we usually turn it on within a day.

Send request View source page
LIVE

{{ venueInfo.live_meeting_title || 'Race meeting in progress' }}

{{ item }}
Just finished

{{ venueJustFinishedTitle }}

{{ item }}
{{ table.className }}
  1. {{ idx + 1 }} {{ driver.name || '—' }} {{ driver.time }} {{ driver.bestLap }}

event Loading Race Events…

event Recent Race Events

calendar_today {{ formatDate(meeting.meeting_date) }}
{{ meeting.title }}
LIVE Just finished Future Event
event expand_more
history Recently Viewed
schedule {{ meeting.title }} ({{ formatDate(meeting.meeting_date) }}) Just finished LIVE Future Event
event All Meetings ({{ meetings.length }})

{{ meetings.find(m => m.meeting_id == selectedMeetingId)?.title }}

{{ formatDate(meetings.find(m => m.meeting_id == selectedMeetingId)?.meeting_date) }}
check_circle This race meeting has now concluded
{{ latestRacePill(latestRace) }}
{{ cleanRaceName(latestRace.race_name) }}

Latest ({{ latestRace.driver_count || 0 }} driver{{ latestRace.driver_count == 1 ? '' : 's' }})

  1. {{ idx + 1 }} {{ driver.name }} {{ driver.time }} {{ driver.bestLap }}s
list_alt
Heat List
{{ heatList.driver_count }} drivers
emoji_events
Championship Standings
{{ championship.driver_count }} drivers
format_list_numbered
Final List
{{ finalList.driver_count }} drivers
timer
{{ qualifying.title }}
{{ qualifying.driver_count }} drivers
workspace_premium
Finals - Overall Results
Complete Finals View
military_tech
Finals - Aggregated Results
{{ finalsCount }} finals
workspace_premium
{{ cleanRaceName(overall.race_name) }}
Multi-leg Overall · {{ overall.driver_count }} driver{{ overall.driver_count === 1 ? '' : 's' }}
timer
Best Lap Times
{{ bestLapsData ? bestLapsData.totalDrivers + ' drivers' : 'League table' }}
swords
Head-to-Head
See how you performed Awaiting results No rival was selected Racing in progress Pick a rival, track the battle
Results revealed! Your rival: {{ nemesis.mySelection.target_driver_name }} Event completed Selections locked Select a rival
flag expand_more
history Recently Viewed
schedule {{ cleanRaceName(race.race_name) }}
flag All Races ({{ getOtherRaces().length }})
flag {{ cleanRaceName(race.race_name) }}

{{ venueInfo ? (venueInfo.brca_title || venueInfo.name) : 'Club Info' }}

{{ venueInfo.venue_type }} {{ venueInfo.track_surface }} {{ venueInfo.classes_raced.length }} class{{ venueInfo.classes_raced.length === 1 ? '' : 'es' }}
{{ venueInfo.address }} {{ venueInfo.phone }}
Map
Opening Hours

{{ venueInfo.club_opening }}

Classes Raced
  • {{ cls }}
Facilities
  • {{ formatFacility(raw).label }}

Also at

{{ alt.title || alt.alias }}

{{ alt.venue_type }} {{ alt.track_surface }} {{ alt.classes_raced.length }} class{{ alt.classes_raced.length === 1 ? '' : 'es' }}
{{ alt.address }} {{ alt.phone }}
Map
Opening Hours

{{ alt.club_opening }}

Classes Raced
  • {{ cls }}
Facilities
  • {{ formatFacility(raw).label }}

{{ venueInfo.location }}

{{ venueInfo ? venueInfo.name : 'Venue Map' }}

{{ meetingSummary.meeting.venue_name }} · {{ formatDate(meetingSummary.meeting.meeting_date) }}

{{ meetingSummary && meetingSummary.meeting ? meetingSummary.meeting.title : 'Meeting Summary' }}

sync Loading meeting summary…
info {{ meetingSummaryError }}
Classes {{ meetingSummary.totals.classes }}
Drivers {{ meetingSummary.totals.drivers }}
Races
{{ meetingSummary.totals.races }}
Finals
{{ meetingSummary.totals.finals }}
Laps Completed
{{ meetingSummary.totals.laps.toLocaleString() }}

New Venue Lap Records

workspace_premium NEW VENUE RECORD
{{ rec.new_best.toFixed(2) }}s
CLASS
{{ rec.race_class }}
{{ rec.driver_name }} Beats {{ rec.prior_best.toFixed(2) }}s by {{ rec.prior_holder }} First recorded at this venue

Finals — Top 3

Finals Recap Image Options

AI Meeting Summary

{{ meetingAiSummary.loading ? 'Analysing meeting data…' : (meetingAiSummary.content ? (meetingAiSummary.cached ? 'Cached recap · ready to share' : 'Generated by AI · ready to share') : 'Pick a tone below, then tap the icon to generate a shareable recap.') }}

auto_awesome Drafting the meeting recap…
error
Couldn't generate summary. {{ meetingAiSummary.error }}

{{ f.class_label }} {{ f.final_label }}

FL {{ f.fastest_lap.lap_time.toFixed(2) }}s · {{ f.fastest_lap.driver_name }}
  1. P{{ p.position }} {{ p.driver_name }} #{{ p.car_number }} {{ p.laps_completed }} laps {{ p.best_lap_time.toFixed(2) }}s

No results recorded.

New Personal Bests

  1. {{ pb.driver_name }} {{ pb.race_class }} {{ pb.new_best.toFixed(2) }}s −{{ pb.delta_seconds.toFixed(2) }}s First recorded

Driver Performance

{{ selectedDriverInfo && selectedDriverInfo.driver_name ? selectedDriverInfo.driver_name : 'Driver Analytics' }}

analytics

Welcome to Driver Performance Analytics!

speed
Overview

View key statistics including best lap times, average performance, and career summary

trending_up
Lap Time Trends

Analyze performance progression across races with interactive charts

show_chart
Consistency Analysis

Discover how consistent lap times are across different venues and classes

stadium
Venue Performance

See which venues this driver excels at with visual comparisons

history
Race History

Browse complete race history with detailed results and lap times

smart_toy
AI Insights

Get intelligent performance summaries powered by AI (with optional Roast Mode!)

Driver: {{ selectedDriverInfo.driver_name }} | Transponder: {{ selectedDriverInfo.transponder_id }} | Club: {{ selectedDriverInfo.club }}

AI Driver Performance Summary

{{ driverAiSummary.loading ? 'Analysing driver performance…' : (driverAiSummary.content ? (driverAiSummary.canRegenerate ? 'Tap the icon to regenerate' : 'Generated by AI') : 'Tap the icon to generate an intelligent analysis') }}

local_fire_department Roast Mode
auto_awesome Analysing driver performance…
error
Couldn't generate summary. {{ driverAiSummary.error }}
Best Time 0.00
Total Races 0
Average Lap
0.00
Venues
0
Race Days
0
Racing Period
{{ formatDateRange(driverStats.overall.first_race_date, driverStats.overall.last_race_date) }}
Consistency
0.00
info
{{ activeLapTimeTrendsSubTab === 'average' ? 'Average Lap Time Progression' : 'Best Lap Time Progression' }}

This chart displays your lap time progression across races. Each point represents a race, with the best lap time highlighted in green. Drag left or right to view more data.

swipe Drag to pan
info
Average Consistency Score Progression

This chart displays your consistency score across meetings. Higher scores indicate more consistent performance. Each point represents a meeting, with the best consistency highlighted in green. Drag left or right to view more data.

swipe Drag to pan
Venue Races Best Time Average Time Consistency
{{ venue.venue_name }} {{ venue.races_at_venue }} {{ formatLapTime(venue.best_time_at_venue) }} {{ formatLapTime(venue.avg_time_at_venue) }} {{ venue.consistency_at_venue !== null && venue.consistency_at_venue !== undefined ? venue.consistency_at_venue.toFixed(1) + '%' : 'N/A' }}

{{ filteredRaceHistoryData.length }} total races - Showing page {{ raceHistoryCurrentPage }} of {{ totalRaceHistoryPages }} ({{ paginatedRaceHistory.length }} races on this page)

Date Meeting Race Position Best Lap Best 3 Avg Venue
{{ formatDate(race.meeting_date) }} {{ cleanRaceName(race.race_name) }} {{ race.position || '-' }} {{ formatLapTime(race.best_lap_time) }} {{ formatLapTime(race.best_3_avg) }} {{ race.venue_name }}
Page of {{ totalRaceHistoryPages }}

speed Loading Driver Performance Data...

{{ cleanRaceName(selectedRaceDetails.race_name) }}

{{ selectedRaceDetails && selectedRaceDetails.driver_name ? selectedRaceDetails.driver_name : 'Detailed Race Data' }}

Finish
Best Lap
Result
Average
Best N
Best 10
Consec 3
Consistency

screen_rotation Rotate to landscape for a wider chart.

info
Lap Times Visualization

This chart shows your lap times throughout the race. Each point represents a lap, with the fastest lap highlighted. Drag left or right to view more data.

swipe Drag to pan

Lap Times

Lap Time Gap to Best Predicted
{{ index + 1 }} {{ formatLapTime(lapTime) }} {{ formatLapTimeGap(lapTime, selectedRaceDetails.best_time) }} {{ predictedAtLap(index, selectedRaceDetails.laptime_data, selectedRaceDetails.race_duration) }}

AI Detailed Race Analysis

{{ detailedRaceAiSummary.loading ? 'Analysing lap-by-lap data…' : (detailedRaceAiSummary.content ? (detailedRaceAiSummary.canRegenerate ? 'Tap the icon to regenerate' : 'Generated by AI') : 'Tap the icon to generate a comprehensive analysis') }}

auto_awesome Analysing detailed race data…
error
Couldn't generate analysis. {{ detailedRaceAiSummary.error }}

flag Loading Race Details...

flag Heat List

{{ heatList.title }}
analytics {{ heatList.driver_count }} drivers in {{ getHeatListData().total_heats || 1 }} heat{{ getHeatListData().total_heats > 1 ? 's' : '' }}

{{ heat.race_title || 'Heat ' + (heatIndex + 1) }}

{{ header }}
{{ (row && row[header]) || '-' }}

{{ heat.driver_count || 0 }} driver{{ (heat.driver_count || 0) !== 1 ? 's' : '' }}

{{ header }}
{{ row[header] || '-' }}

swords Head-to-Head Battle

swords

Welcome to Head-to-Head Battle!

Challenge a rival and compete for bonus points. Beat them across the day's races to claim victory!

person_add
Pick Your Rival

Before racing starts, select any driver from the heat list as your Head-to-Head rival

lock
Selections Lock

Once your class starts racing, your selection is locked in for the rest of the event

compare_arrows
Race-by-Race Scoring

Every race you finish higher than your rival counts as a point. Most points wins!

local_fire_department
Mutual Rivalries

If your rival also picks you, it becomes a Mutual Rivalry with 2x points!

trending_up
Skill Multipliers

Target tougher opponents for bonus multipliers: Hot Lappers (1.25x) and Speed Demons (1.5x)

visibility
Results Revealed

Final results are revealed once all races complete. Check the leaderboard for standings!

stars Points System

+30 Beat rival
+10 Lost to rival
+100 Mutual win!
+50 Mutual loss
schedule Racing in progress! Results will be revealed once the meeting ends. Your rival is locked in! Results will be revealed after the race meet has completed.
directions_car local_fire_department bolt person
{{ userDisplayName || 'You' }}
Challenger
{{ nemesis.myTier.tierDisplay }} info
{{ getMultiplierForTier(getTargetTierForVs().tier) }}x Point Bonus!

Beat a {{ getTargetTierForVs().tierDisplay }} to earn {{ getMultiplierForTier(getTargetTierForVs().tier) }}x points

emoji_events {{ getUserStatsForVs()?.race_wins || 0 }} Wins
flag {{ getUserStatsForVs()?.total_races || 0 }} Races
bolt {{ getUserStatsForVs()?.best_lap ? parseFloat(getUserStatsForVs().best_lap).toFixed(2) : '-' }} Best
trending_up {{ getUserStatsForVs()?.consistency ? getUserStatsForVs().consistency + '%' : '-' }} Consist.
swords VS swords
directions_car local_fire_department bolt whatshot
{{ nemesis.mySelection.target_driver_name }}
Your Rival
{{ getTargetTierForVs().tierDisplay }}
emoji_events {{ getTargetStatsForVs()?.race_wins || 0 }} Wins
flag {{ getTargetStatsForVs()?.total_races || 0 }} Races
bolt {{ getTargetStatsForVs()?.best_lap ? parseFloat(getTargetStatsForVs().best_lap).toFixed(2) : '-' }} Best
trending_up {{ getTargetStatsForVs()?.consistency ? getTargetStatsForVs().consistency + '%' : '-' }} Consist.
format_list_numbered Race-by-Race You {{ nemesis.raceBreakdown.selectorWins }} - {{ nemesis.raceBreakdown.targetWins }} {{ nemesis.mySelection.target_driver_name.split(' ')[0] }}
  • {{ index + 1 }} {{ formatOrdinal(race.selector_position) }} vs {{ formatOrdinal(race.target_position) }} check_circle cancel remove
lock Selections have been locked by an administrator Selections locked - your class has started racing Selections locked - racing has started
event_busy
This Event Has Passed

Head-to-Head selections are no longer available for past events.

target

Choose Your Rival info

Select a driver from your race to compete against. Beat them to earn bonus points!

1 Pick a rival from your race class below
2 Race - selections lock when your class starts
3 Win - finish ahead of your rival to score points
category {{ className }} {{ drivers.length }} driver{{ drivers.length !== 1 ? 's' : '' }}
person
{{ driver.driver_name }} sensors {{ driver.transponder_id }}
sync swords
directions_car local_fire_department bolt {{ driver.difficultyTier.tierDisplay }} {{ getMultiplierForTier(driver.difficultyTier.tier) }}x
directions_car local_fire_department bolt {{ driver.difficultyTier.tierDisplay }}

Low consistency score. Lap times vary and results are unpredictable. Capable on their day, but mistakes are likely and opportunities to beat them usually appear.

Solid consistency with competitive pace. Often fast, occasionally wild. Beating them takes focus, but they're not untouchable.

Very high consistency score with frequent strong finishes or wins. Rarely makes mistakes. Beating them usually requires a perfect run… or luck.

stars {{ getMultiplierForTier(driver.difficultyTier.tier) }}x Point Multiplier
emoji_events {{ driver.stats?.race_wins || 0 }} Wins
flag {{ driver.stats?.total_races || 0 }} Races
bolt {{ driver.stats?.best_lap ? parseFloat(driver.stats.best_lap).toFixed(2) : '-' }} Best
avg_pace {{ driver.stats?.avg_lap ? parseFloat(driver.stats.avg_lap).toFixed(2) : '-' }} Avg
trending_up {{ driver.stats?.consistency ? driver.stats.consistency + '%' : '-' }} Consist.
Select as Rival arrow_forward
sync Loading eligible drivers...
build Complete Your Profile Setup

To use Head-to-Head mode, you need to add your transponder ID to your account. This links your race results to your profile.

settings Go to My Cars
person_off
You are not registered for this event

Head-to-Head mode is only available for events where your transponder appears on the heat list.

info No eligible drivers found for this event.

local_fire_department Mutual Rivals

emoji_events
{{ match.driver1.name }}
trending_up Finished higher in {{ match.driver1.position || 0 }} {{ match.driver1.position === 1 ? 'race' : 'races' }} stars +{{ match.driver1.points }}
WINNER
swords
VS
emoji_events
{{ match.driver2.name }}
trending_up Finished higher in {{ match.driver2.position || 0 }} {{ match.driver2.position === 1 ? 'race' : 'races' }} stars +{{ match.driver2.points }}
WINNER
{{ match.driver1.name.split(' ')[0] }} {{ match.driver1.position }} - {{ match.driver2.position }} {{ match.driver2.name.split(' ')[0] }} {{ match._showBreakdown ? 'expand_less' : 'expand_more' }}
  • {{ rIdx + 1 }} {{ race.race_type === 'final' ? 'Final' : 'R' + race.round_number }} {{ formatOrdinal(race.selector_position) }} vs {{ formatOrdinal(race.target_position) }} +{{ Math.round(match.points_breakdown.basePoints / match.points_breakdown.selectorWins) }} check_circle cancel remove
stars {{ match.points_breakdown.targetTierDisplay || match.points_breakdown.targetTier }} bonus Total points {{ match.points_breakdown.basePoints }} base × {{ (match.points_breakdown.multiplier / 100).toFixed(2) }}x {{ match.driver1.points }} pts
{{ match._isTyping ? 'sync' : 'smart_toy' }}

AI Rivalry Summary

local_fire_department Roast

person_play One-Way Rivalries

emoji_events
{{ match.selector.name }} You
trending_up Finished higher in {{ match.points_breakdown?.selectorWins || 0 }} {{ (match.points_breakdown?.selectorWins || 0) === 1 ? 'race' : 'races' }} sync_disabled No shared races stars +{{ match.selector.points }}
WINNER
DRAW
swords
VS
emoji_events
{{ match.target.name }}
trending_up Finished higher in {{ match.points_breakdown?.targetWins || 0 }} {{ (match.points_breakdown?.targetWins || 0) === 1 ? 'race' : 'races' }} sync_disabled No shared races stars +0
WINNER
DRAW
{{ match.selector.name.split(' ')[0] }} {{ match.points_breakdown.selectorWins }} - {{ match.points_breakdown.targetWins }} {{ match.target.name.split(' ')[0] }} {{ match._showBreakdown ? 'expand_less' : 'expand_more' }}
  • {{ rIdx + 1 }} {{ race.race_type === 'final' ? 'Final' : 'R' + race.round_number }} {{ formatOrdinal(race.selector_position) }} vs {{ formatOrdinal(race.target_position) }} +{{ Math.round(match.points_breakdown.basePoints / match.points_breakdown.selectorWins) }} check_circle cancel remove
stars {{ match.points_breakdown.targetTierDisplay || match.points_breakdown.targetTier }} bonus Total points {{ match.points_breakdown.basePoints }} base × {{ (match.points_breakdown.multiplier / 100).toFixed(2) }}x {{ match.selector.points }} pts
{{ match._isTyping ? 'sync' : 'smart_toy' }}

AI Rivalry Summary

local_fire_department Roast

leaderboard All Results

Driver Rival Result Points
{{ result.selector_name }} You arrow_forward {{ result.target_name }} local_fire_department sync_disabled No contest handshake Draw check_circle Won cancel Lost (Different classes) (P{{ result.selector_position || '?' }} vs P{{ result.target_position || '?' }}) +{{ result.points_earned }}
info No nemesis selections were made for this event.

emoji_events Championship Standings

{{ championship.title }}
analytics {{ championship.driver_count }} drivers in {{ getChampionshipData().championships ? getChampionshipData().championships.length : 1 }} championship{{ getChampionshipData().championships && getChampionshipData().championships.length > 1 ? 's' : '' }}

{{ champ.title || 'Championship Standings' }}

{{ champ.subtitle }}

{{ h }}
{{ cell }}
trending_up Pos Name Ability Points {{ round }}
{{ driver.position }} {{ driver.name || driver.driver_name }} {{ driver.ability || '-' }} {{ driver.points || 0 }} {{ driver[round] || '-' }}
trending_up {{ header }}
{{ cell }} {{ cell }}

analytics No championship data available for this format.

format_list_numbered Final List

{{ finalList.title }}
analytics {{ finalList.driver_count }} drivers in {{ getFinalListData().finals ? getFinalListData().finals.length : 0 }} race{{ getFinalListData().finals && getFinalListData().finals.length > 1 ? 's' : '' }}

{{ race.title || 'Race ' + (raceIndex + 1) }}

Car Name Class Member Type Transponder
{{ entry.car }} {{ entry.name || entry.driver_name }} {{ entry.class || '-' }} {{ entry.member_type || '-' }} {{ entry.transponder || '-' }}

{{ race.driverCount || 0 }} driver{{ (race.driverCount || 0) !== 1 ? 's' : '' }}

analytics No final list data available for this format.

timer {{ selectedQualifying.title }}

{{ selectedQualifying.title }}
analytics {{ selectedQualifying.driver_count }} drivers

{{ table.className }}

{{ header }}
{{ cell }}

{{ table.rows.length }} driver{{ table.rows.length !== 1 ? 's' : '' }}

♛ {{ finalsOverallData.title }}

{{ finalsOverallData.meeting_title }} - {{ formatDate(finalsOverallData.meeting_date) }} - {{ finalsOverallData.venue_name }}
analytics {{ finalsOverallData.finals_count }} finals

{{ table.className }}

{{ header }}
{{ cell }} {{ cell }}

emoji_events Finals - Aggregated Results

{{ finalsData.meetingInfo.title }}
analytics {{ finalsData.finals.length }} Finals

{{ className }}

{{ cleanRaceName(final.race_name) }} - {{ final.race_type }}
Position Car # Driver Class Total Time Best Lap Best 3 Avg
{{ result.position || '-' }} {{ result.car_number || '-' }} {{ result.driver_name }} {{ result.driver_class || '-' }} {{ result.total_time || '-' }} {{ formatLapTime(result.best_lap_time) }} {{ formatLapTime(result.best_3_avg) }}
No results available for this final

sports_score No finals data available

timer Best Lap Times

{{ bestLapsData.meetingInfo.title }}
analytics {{ bestLapsData.totalDrivers }} drivers across {{ Object.keys(bestLapsData.byClass).length }} class{{ Object.keys(bestLapsData.byClass).length !== 1 ? 'es' : '' }}

timer {{ className !== 'Unknown' ? className : 'Open Class' }}

Pos Driver Race Laps / Time Best Lap Gap
emoji_events emoji_events emoji_events {{ driver.position }} {{ driver.driver_name }} {{ driver.driver_class }} {{ shortRaceName(driver.race_name, driver.race_type, driver.final_type, driver.round_number) }} {{ driver.total_time || '-' }} {{ formatLapTime(driver.best_lap_time) }} {{ idx === 0 ? '—' : '+' + (driver.best_lap_time - drivers[idx - 1].best_lap_time).toFixed(2) + 's' }}

flag Race Results - {{ cleanRaceName(results[0]?.race_name) || 'Race' }}

trending_up Lap Times Graph
info
Individual Lap Times Comparison

This chart compares driver lap times throughout the race. Each line represents a driver's lap time progression. Drag left or right to view more data.

swipe Drag to pan
Loading lap visualization...

speed Driver Pace Chart
info
Driver Pace Comparison

This chart displays seconds behind the winner's average lap time per lap. Each line shows how a driver's pace compares throughout the race. Drag left or right to view more data.

swipe Drag to pan
Loading driver gap chart...

timeline Lap By Lap Graph
info
Race Position Progression

This chart displays each driver's position throughout the race, lap by lap. Track how positions change from start to finish. Drag left or right to view more data.

swipe Drag to pan
Loading lap by lap chart...
sync
🔄 Race data appears incomplete - retry in progress (Pool 3)
Attempt {{ syncStatus.attemptCount }}/{{ syncStatus.maxAttempts }} • Next retry in {{ syncStatus.nextRetryInMinutes }} minute{{ syncStatus.nextRetryInMinutes !== 1 ? 's' : '' }} • Retry in progress...
Syncing detailed driver data (some features unavailable until complete)...
{{ syncStatus.totalInQueue - syncStatus.queuePositionFirst + 1 }} item{{ (syncStatus.totalInQueue - syncStatus.queuePositionFirst + 1) === 1 ? '' : 's' }} to go (position {{ syncStatus.queuePositionFirst }} of {{ syncStatus.totalInQueue }}) {{ syncStatus.totalInQueue - syncStatus.queuePositionFirst + 1 }} item{{ (syncStatus.totalInQueue - syncStatus.queuePositionFirst + 1) === 1 ? '' : 's' }} to go (processing {{ syncStatus.queuePositionFirst }}-{{ syncStatus.queuePositionLast }} of {{ syncStatus.totalInQueue }}) • {{ syncStatus.estimatedTime }}
FASTEST LAP
{{ rrFastestLap ? formatLapTime(rrFastestLap.best_lap_time) : '—' }}
{{ rrFastestLap ? rrShortDriverName(rrFastestLap.driver_name) : '' }}
WINNER
{{ rrLeader ? rrShortDriverName(rrLeader.driver_name) : '—' }}
{{ rrMaxLapCount ? rrMaxLapCount + ' laps' : '' }}
DRIVERS
{{ results.length }}
in race
POS DRIVER {{ rrMobileMode === 'last' ? 'BEST 3 / GAP' : (rrMobileMode === 'consistency' ? 'CONSISTENCY' : 'BEST / GAP') }}
{{ result.position || '-' }}
{{ rrShortDriverName(result.driver_name) }} #{{ result.car_number }} FL DNS DNF YOU
{{ rrGap(result) }}
Position Car # Driver Total Time Gap Best Lap Best 3 Avg Lap Spread Lap Trend
{{ result.position || '-' }} {{ result.car_number }} - {{ result.driver_name }} compare_arrows {{ result.total_time || '-' }} {{ rrGap(result) || '—' }} {{ formatLapTime(result.best_lap_time) }} {{ formatLapTime(result.best_3_avg) }} {{ rrLapSpread(result).gapSec.toFixed(2) }}s
PERSONAL BESTS
{{ rrShortDriverName(pb.driver_name) }} {{ formatLapTime(pb.best_lap_time) }} FL
timer MEETING LAP RECORD
{{ formatLapTime(rrVenueRecord.best_lap_time) }}
CLASS
{{ (results[0] && results[0].race_class) || '—' }}
{{ rrShortDriverName(rrVenueRecord.driver_name) }} · #{{ rrVenueRecord.car_number }} {{ formatDate(rrVenueRecord.meeting_date) }}

AI Race Summary

{{ aiSummary.loading ? 'Analysing race data…' : (aiSummary.content ? (aiSummary.canRegenerate ? 'Tap the icon to regenerate' : 'Generated by AI') : 'Tap the icon to generate an analysis') }}

auto_awesome Analysing race data…
error
Couldn't generate summary. {{ aiSummary.error }}

timer Lap Times Breakdown
info

This table shows individual lap times for each driver. Colors indicate performance relative to each driver's own average lap time.

9.71s
Fastest Lap

Your best lap time

10.23s
Best 3 Consecutive

Your best 3 consecutive laps

21.89s
Slowest Lap

Your slowest lap time

19.78s
Slow Lap

Exceeds 7.5% above average

13.78s
Poor Lap

Exceeds 5% above average

swipe Drag to pan
Lap {{ getDriverInitials(driver.driver_name) }}
{{ driver.driver_name }}
Car #: {{ driver.car_number }}
Avg Lap: {{ formatLapTime(driver.best_3_avg) }}
Consistency: {{ driver.consistency_score.toFixed(1) }}%
Perfect Run: {{ perfectRunPredicted(driver.best_lap_time, lapTableRaceDuration) }}
{{ lapIndex + 1 }} {{ lapData.times[driver.driver_id] || '-' }}
Predicted: {{ predictedAtLap(lapIndex, driver.laptime_data, lapTableRaceDuration) }}

analytics Venue Stats

analytics Venue Stats

event
0
Total Meetings
schedule
{{ venueAnalytics.lastMeetingDate }}
Last Meeting
group
0
Unique Drivers
flag
0
Total Races
refresh
{{ venueAnalytics.meetingFrequency }}
Meeting Frequency
calendar_month
{{ venueAnalytics.meetingDay }}
Meeting Day
timer
0
Total Laps
format_list_numbered
0
Total Entries

timer Lap Records

star FASTEST LAP RECORD
{{ formatLapTime(rec.record.best_lap_time) }}
CLASS
{{ rec.class }}
{{ rrShortDriverName(rec.record.driver_name) }} · #{{ rec.record.car_number }} {{ formatDate(rec.record.meeting_date) }}

directions_car Popular Cars See all {{ popularCars.manufacturers.length }}

directions_car No cars registered at this venue yet. Be the first!
info Racing here? Add your car to be counted!

groups Registered Users {{ venueRegisteredUsers.count }}

{{ venueRegisteredUsers.count }} {{ venueRegisteredUsers.count === 1 ? 'racer uses' : 'racers use' }} RaceMetrics RC at {{ venueInfo.name }}.

+{{ venueRegisteredUsers.count - venueRegisteredUsers.users.length }} more

emoji_events Top Performers at {{ venueInfo.name }}

emoji_events Top Performers at {{ venueInfo.name }}

No performance data yet — once a meeting completes, top drivers will appear here.

emoji_events Top Performers at {{ venueInfo.name }} {{ fullLeaderboardLabel }}

flag {{ className }} Class Leaders
{{ driver.driver_name }}
directions_car {{ driver.car }}
#{{ index + 1 }}
{{ driver.championship_points }} Points
flash_on {{ driver.avg_lap_time }}s Avg
target {{ driver.best_lap_time }}s Best
flag {{ driver.total_races }} Races
refresh {{ formatConsistency(driver.consistency_percentage) }} Consist.
#{{ index + 1 }}
{{ driver.driver_name }}
{{ driver.championship_points }} Points
No performance data available for this venue and time period.

flag Recent Race Results

{{ result.title }} {{ formatDate(result.meeting_date) }}
{{ result.race_count }} races
emoji_events Top Winners
{{ winner.driver_name }}
{{ winner.class_name }}
{{ winner.final_type ? winner.final_type + '-Final' : 'Final' }}
LIVE

{{ currentMeet.meet.venue_name }}

{{ currentMeet.meet.meeting_title }}

{{ currentMeet.meet.venue_location }} {{ item }}
{{ currentMeetRoundLabel }} {{ currentMeetClassLabel }}
Pos
/{{ currentMeet.meet.field_size }}
Best
{{ formatLap(bestLapActive) }}s
Avg
{{ formatLap(currentMeet.meet.avg_lap) }}s
Cns
{{ Math.round(currentMeet.meet.consistency) }}
LAST

{{ currentMeet.last_meet.venue_name }}

{{ currentMeet.last_meet.meeting_title }}

{{ currentMeet.last_meet.venue_location }} {{ item }}
{{ currentMeetRoundLabel }} {{ currentMeetClassLabel }}
Pos
/{{ currentMeet.last_meet.field_size }}
Best
{{ formatLap(bestLapActive) }}s
Avg
{{ formatLap(currentMeet.last_meet.avg_lap) }}s
Cns
{{ Math.round(currentMeet.last_meet.consistency) }}

stadium RC Racing Venues {{ filteredVenues.length }}

search_off star sensors_off history event_busy explore_off inbox

No venues match "{{ venueSearchQuery }}".

You haven't favourited any venues yet. Click the star on a venue to add it here.

No venues are live right now.

No meetings have wrapped up recently.

Nothing scheduled for today.

No venues within {{ venueNearbyRadius }} {{ distanceUnit }}. Widen the radius?

No venues to show.

Venue Drvrs Heats Cls Next Event Favourite
{{ venue.name }} sync {{ venueLastHeatLabel(venue) }}
location_on {{ venue.location || [venue.town, venue.county].filter(Boolean).join(', ') }} near_me {{ venueDistanceLabel(venue) }}
{{ venue.driver_count || 0 }}
drivers
{{ venue.heat_count || 0 }}
heats
{{ venue.class_count || 0 }}
classes
{{ venueMeta(venue).text }}
search_off

No venues match "{{ venueSearchQuery }}".

You haven't favourited any venues yet.

No venues are live right now.

No meetings have wrapped up recently.

Nothing scheduled for today.

No venues to show.

timer Loading Race Results...

Position Driver Car # Total Time Best Lap Best 3 Avg
No venues available. Please check back later.