{{ !hasCreds ? 'NO SYNC' : syncing ? 'SYNC…' : syncError ? 'ERR' : 'LIVE' }}
⚠ No sync credentials Go to Setup tab to configure your JSONBin, or open with ?bin=ID&key=KEY
New Session
Game Name
Score Unit
Starting #
Low score wins
Leaderboard sorts lowest first
sports_esports
No games yet
Start a new game above to track scores in real time.
{{ activeGame.name }}
{{ activeGame.unitLabel || 'Level' }} {{ currentUnit(activeGame) }} · {{ activeGame.players.length }} players Low wins
person_add
No players yet
Tap Players tab to add participants.
{{ i+1 }}
{{ p.name }}
{{ activeGame.unitLabel || 'Level' }} {{ p.level || 1 }}
{{ calcScore(p.name) }}
history
No scores logged
Tap a player on the leaderboard to enter a score.
{{ activeGame.unitLabel || 'Level' }} {{ lvlGroup.level }}
{{ pGroup.name }} Total {{ pGroup.total >= 0 ? '+' : '' }}{{ pGroup.total }}
{{ e.note || '—' }}
{{ e.points>0?'+':'' }}{{ e.points }}
{{ formatTime(e.timestamp) }}
Players
Global Roster
No players in roster yet.
{{ p }}check
Register New Player
Timer
{{ timerDisplay }}
{{ currentPreset }}s — tap to change
Buzzer
Tap to sound buzzer
Buzzer Style
Setup
Active JSONBin
Current Bin
CONNECTED NOT SET
{{ activeBinId || 'No bin configured' }}
Switch Bin
Create New Bin
Creates a fresh bin in JSONBin.io and switches to it. Your current Access Key is required.
{{ newBinMsg }}
Sync Rate
How often to auto-sync when a game is active (seconds)
seconds (current: {{ syncRate }}s)
Share URL with Credentials
{{ shareUrl }}
{{ activeGame.name }}
{{ activeGame.unitLabel || 'Level' }} {{ currentUnit(activeGame) }}
{{ i+1 }}
{{ p.name }}
{{ activeGame.unitLabel || 'Level' }} {{ p.level||1 }}
{{ calcScore(p.name) }}
Timer
{{ timerDisplay }}
{{ currentPreset }}s — tap to change