Loading...

play_circle Race Playback Studio

open_in_new Open Studio
terminal RS debug {{ previewMode ? 'preview' : 'studio' }}
  1. {{ line }}
  2. (no events yet — interact with the studio)
{{ camLabel }}
Rec · {{ recDate }}
Loading race…
{{ error }}

Pick a live venue

Choose a race to overlay

Showing every rc-timing venue that's actively racing right now. Or switch to Recording Overlay for a finished race.

Or switch to Live Results Overlay for a race currently in progress.

info Live results are currently only available for rc-timing (rc-results.com) venues. Support for bbkrclive, LiveRC and rc-clubs is coming soon.
Loading venues…
No venues match “{{ pickerSearch }}”.
Loading meetings…
No meetings{{ pickerSearch ? ' match “' + pickerSearch + '”' : ' found' }}.
Loading races…
No races{{ pickerSearch ? ' match “' + pickerSearch + '”' : ' found' }}.
Live feed: {{ liveSseError }}
Waiting for upstream… {{ liveSseConnected ? 'Connected. Polling rc-results.com.' : 'Connecting…' }}

{{ (liveSnapshot && liveSnapshot.raw && liveSnapshot.raw.raceName) || 'Grid Lineup' }}

{{ liveSnapshot.raw.meetingMeta }}

Grid Lineup
POS CAR Driver
{{ d.position }} {{ d.car }} {{ fmtName(d.name) }}

{{ (liveSnapshot && liveSnapshot.raw && liveSnapshot.raw.raceName) || 'Race Results' }}

{{ liveSnapshot.raw.meetingMeta }}

Race Results
POS CAR Driver Result {{ bestRollHeader }} Best Pred
{{ d.position }} {{ d.car }} {{ fmtName(d.name) }} {{ d.resultLaps ? (d.resultLaps + (d.resultTotal ? ' / ' + formatClock(d.resultTotal) : '')) : '—' }} {{ formatLap(d.bestRoll || d.best3) }} {{ formatLap(d.lastLapTime || d.best) }} {{ d.predLaps ? (d.predLaps + (d.predTotal ? ' / ' + formatClock(d.predTotal) : '')) : '—' }}
drag_indicator Drag to position
LIVE
timer {{ metaStrip.duration }}
{{ metaStrip.title }}
Round {{ metaStrip.round.num }} / {{ metaStrip.round.total }} {{ metaStrip.round.name }}
Race {{ metaStrip.race.num }} / {{ metaStrip.race.total }} {{ metaStrip.race.name }}
{{ formatClock(state.time) }}
Lap {{ raceLap }}/{{ state.totalLaps }} {{ liveMode ? (liveSseConnected ? 'LIVE' : '…') : (showFinishPanel ? 'Finished' : 'Live') }}
{{ eventIcon(ev.type) }} {{ tickerText(ev) }}
flag Get ready to race!
Pos
Car
Driver
Result
{{ bestRollHeader }}
BestLap
Pred
±
workspace_premium
{{ d.car }}
{{ fmtName(d.name) }}
{{ d.resultLaps }} / {{ formatLap(d.resultTotal) }}
{{ formatLap(d.bestRoll || d.best3) }}
{{ d.status || (showFinishPanel ? formatLap(finBest(d)) : formatLap(d.lastLapTime)) }} {{ showFinishPanel ? (d.status ? '' : fmtTotal(finTotal(d))) : ('L' + d.lap) }}
{{ d.predLaps }} / {{ formatLap(d.predTotal) }}
{{ d.lap }}
{{ deltaOf(d) > 0 ? 'keyboard_double_arrow_up' : 'keyboard_double_arrow_down' }} {{ deltaOf(d) === 0 ? '–' : Math.abs(deltaOf(d)) }}
LIVE
timer {{ metaStrip.duration }}
{{ metaStrip.title }}
Round {{ metaStrip.round.num }} / {{ metaStrip.round.total }} {{ metaStrip.round.name }}
Race {{ metaStrip.race.num }} / {{ metaStrip.race.total }} {{ metaStrip.race.name }}
Lap {{ raceLap }} {{ formatClock(state.time) }}
{{ eventIcon(ev.type) }} {{ tickerText(ev) }}
flag Get ready to race!
Pos
Car
Driver
Result
{{ bestRollHeader }}
Lap
Best
Pred
workspace_premium
{{ d.car }}
{{ fmtName(d.name) }}FLPB
{{ d.resultLaps }} / {{ formatLap(d.resultTotal) }}
{{ formatLap(d.bestRoll || d.best3) }}
{{ d.lap }}
{{ d.status || (showFinishPanel ? fmtTotal(finTotal(d)) : formatLap(d.lastLapTime)) }}
{{ d.predLaps }} / {{ formatLap(d.predTotal) }}
{{ deltaOf(d) > 0 ? '▲' : '▼' }}{{ Math.abs(deltaOf(d)) }}
LIVE
timer {{ metaStrip.duration }}
{{ metaStrip.title }}
Round {{ metaStrip.round.num }} / {{ metaStrip.round.total }} {{ metaStrip.round.name }}
Race {{ metaStrip.race.num }} / {{ metaStrip.race.total }} {{ metaStrip.race.name }}
{{ formatClock(state.time) }} Lap {{ raceLap }}
{{ eventIcon(ev.type) }} {{ tickerText(ev) }}
flag Get ready to race!
Pos Car Driver Result {{ bestRollHeader }} Best Pred
workspace_premium
#{{ d.car }}
{{ fmtName(d.name) }}FLPB
{{ d.resultLaps }}/{{ formatLap(d.resultTotal) }}
{{ formatLap(d.bestRoll || d.best3) }}
{{ d.status || (showFinishPanel ? fmtTotal(finTotal(d)) : formatLap(d.lastLapTime)) }}
{{ d.predLaps }}/{{ formatLap(d.predTotal) }}
{{ deltaOf(d) > 0 ? 'arrow_drop_up' : 'arrow_drop_down' }} {{ deltaOf(d) !== 0 ? Math.abs(deltaOf(d)) : '–' }}
P{{ sparkSubject.position }} · {{ fmtName(sparkSubject.name) }} · L{{ sparkSubject.lap }}
drag_indicator Drag ticker
{{ eventIcon(ev.type) }} {{ tickerText(ev) }}
flag Get ready to race!
Lap {{ raceLap }}
{{ raceSubtitle }}
{{ formatClock(time) }}
{{ formatClock(duration) }}
help
cast_connected {{ copyToastMessage }}
tune Tweaks

Total hidden — only the current lap shows (no spoilers).

Click a driver in the standings to pin their sparkline.

Leaderboard

Pre-race Grid Lineup

Post-race Race Results
palette Driver Colour
Car #{{ colourPickerCar }} · {{ colourPickerName }}

Race Simulator Studio

A broadcast-ready overlay for replaying real race timing on top of your footage.

style

Pick a look

Glass, Broadcast or Minimal — set the variant + colour theme in Tweaks → Style.

visibility

Follow a driver

Click any row to follow — the lap beep, pulse and header counter sync to them.

tune

Tweak everything

5 tabs cover variant, layout, display, ticker and output. Hover any control for a tooltip.

help

Deep help

Tap the help icon next to the Tweaks toggle to open the full /help page in a new tab.