How to use this

A simple, no-login box score tracker. Everything below explains what each part of the tool does.

Quick start

  1. Add your players - type a number and press Enter, or paste a whole list at once (commas, spaces, or one per line all work, so a roster column copied from a spreadsheet pastes in fine).
  2. Tap a stat button on a player's row whenever that thing happens.
  3. Switch to the Box Score tab any time to see everyone's totals.
  4. Hit Export CSV when you want a spreadsheet copy.
Nothing is sent to a server. Everything lives only in this browser. That means no login is needed, but also no automatic backup - if you clear this browser's data or switch devices, you'll lose everything unless you exported a CSV first.

The Live tab

This is where you track the game. Each row is one player; each column is a stat. Tap a cell to log that stat for that player - it logs instantly, no confirmation needed.

Stat columns

LabelMeans
2M / 2X2-point shot made / missed
3M / 3X3-point shot made / missed
FT+ / FT−Free throw made / missed
AstAssist
PAstPotential assist - a pass that led to any shot attempt, made or missed. Separates good playmaking from finishing luck.
TOTurnover
OR / DROffensive / defensive rebound
StlSteal
BlkBlock
FlFoul

A small number badge appears in a cell once it's been tapped, so you can see counts building up at a glance. Tapping the same cell for the same player twice within a third of a second is ignored automatically, so an accidental double-tap can't double-count a stat.

Each player's row

name Tap the number itself to rename that player inline. Renaming to a number that's already in use merges the two into one player instead of creating a duplicate - useful if you accidentally add the same player twice.
Set a temporary alias: a different number to display for now (e.g. for a drill like "wave" where players borrow a different number to avoid clashing with another team on the same court). Stats logged while aliased still count under the player's real, permanent number - the alias is just a display label.
Bench a player: hides their row from this grid (so the grid stays manageable as your roster grows) without touching their stats at all. They still show normally in the Box Score tab. Bring them back any time from the "Benched" card.
Remove a player entirely. If they've already got stats logged, you'll be asked to confirm first, since that also deletes those stats permanently.

Period

The pills above the grid (Q1, Q2, Q3, Q4, OT) pick which period new stats get tagged with. Tap one before you start logging that quarter - everything you log after stays tagged with it until you change it again.

Undo Last

Removes the single most recently logged stat. For fixing anything further back, use the Event Log (below).

Event Log

A running list of every stat you've logged, newest at the top. Each row has three dropdowns - Player, Stat, and Period - so you can fix a mistake (wrong player, wrong stat, wrong quarter) without deleting and re-logging it. The ✕ on a row deletes just that one entry.

Box Score tab

The full stat line for every player, plus a TOTAL row. The pills at the top (All, Q1, Q2, Q3, Q4, OT) filter the table to just one period, or back to the cumulative total across all of them.

Export CSV downloads whatever the table is currently showing - the full cumulative total if you're on "All," or just that one period's numbers if you've filtered to a quarter. The filename reflects which one you exported.

Reset

Wipes everything - players, stats, all of it. Since that's permanent, it takes two taps: the first arms it (the button turns dark and says "Tap again to confirm"), and only a second tap on that same button within a few seconds actually resets. Tapping anything else cancels it. If there's nothing logged yet, it does nothing at all rather than asking.

Running this across multiple courts or a whole day