How to use Stats Lab

Everything each feature does, and how to get the most out of it. New here? Read Your first sheet in 5 minutes and you're ready to go.

Contents

What Stats Lab is

Stats Lab is a free tool for tracking how your players perform, match after match, and seeing what the numbers mean. Use it instead of a spreadsheet: you type the numbers in, and the leaderboard, charts, player reports and comparisons build themselves.

  • Free for every Tournament Master account. Coaches, organizers, players and parents all get every feature. You don't need to run a tournament on the platform.
  • Any sport. A ready-made template for every sport on Tournament Master: football, cricket, rugby, tennis, golf, swimming, chess, darts, esports and more. Or start from a blank sheet with your own columns.
  • Private by default. Only you can see your sheets until you choose to share a read-only link.

Your first sheet in 5 minutes

  1. 1Sign in with your Tournament Master account (or create one for free), then click New sheet.
  2. 2Give it a name (for example "U17 squad — 2026 season"), pick the template for your sport, and click Create sheet. The template adds the usual columns for that sport, and you can change them later.
  3. 3Open Setup, and under Roster paste your player list, one per line. Click Add players.
  4. 4Open Enter data, click New session, give it a date and opponent, and save.
  5. 5Type each player's numbers into the grid. Everything saves automatically. Then look at Insights, Leaderboard and Player.
Already have a spreadsheet: Skip steps 3–5: in Setup, click Import CSV / paste from Excel and paste your existing sheet. See Import a CSV.

Sheets, players, sessions, metrics

Four ideas make up everything in Stats Lab:

TermWhat it isExample
SheetOne workbook. Keep one per squad, season or study.“First team — 2026”, “Trial week”
PlayerSomeone on the sheet’s roster.Thandi Mokoena, ST, #9
SessionOne match, training or trial: an occasion you record numbers for.“vs City FC”, 5 March
MetricA column. Inputs are numbers you type. Formulas are worked out from inputs.Goals (input), Shot accuracy % (formula)

Each player gets one row of numbers per session. A player "played" a session if they have at least one number in it, and that's the count you'll see as Sessions everywhere.

Entering numbers (Enter data tab)

The grid works like a spreadsheet. Pick how you want to fill it in:

  • By session: choose a session, and each row is a player. Best after a match, when you have everyone's numbers on one sheet of paper.
  • By player: choose a player, and each row is a session. Best when tracking one athlete over time, or fixing one player's history.

Moving around

KeyWhat it does
EnterSave the cell and move down to the next player
↑ / ↓Move up or down a row
TabMove right to the next column
EscUndo what you just typed in this cell

Pasting from Excel or Google Sheets

Copy a block of cells in your spreadsheet, click the cell where the top-left value should land, and paste (Ctrl+V or ⌘+V). The whole block fills across and down at once. The rows and columns need to be in the same order as the grid.

Good to know

  • It saves itself. Watch the indicator next to the sheet name: Saving → Saved. If it shows Not saved — retry, check your connection and click it.
  • Leave a cell empty when there's no number. Empty is not the same as zero: an empty cell doesn't count towards averages.
  • Times can be typed as 1:23.4 (minutes:seconds) or as plain seconds (83.4).
  • Decimals work with a point or a comma (7.5 or 7,5), and a trailing % is ignored.
  • A cell outlined in red holds something that isn't a number, so it wasn't saved. Fix it or clear it.
  • Columns marked ƒ on the right are formulas. They fill in by themselves as you type.
  • Hover a row and click the eraser icon to clear that player's numbers for the session.
  • Forgot someone? Use Quick-add player under the grid.

Live logging on a phone

The Live tab is for counting during a match or training, standing on the side line. One tap = one event.

  1. 1Open the sheet on your phone and tap Live. Pick today's session, or tap New to start one.
  2. 2Tap the ⚙ button to choose which stats get buttons, e.g. Shots, Tackles, Passes. Up to 6 fit nicely. Your choice is remembered on that device.
  3. 3Each tap on a player's stat adds one. Made a slip? Tap Undo. To take one away, switch on − mode.
  • Everything saves itself. If the connection drops, a red note appears; your taps are kept and saved when it's back.
  • Two people can log at once, e.g. one per half of the pitch or one per team. Invite the second person as an editor (see Working with your staff). If you both tap the same player's same stat in the same second, one tap can be lost, so split players between you.
  • Only counting stats (things you add up) get buttons. Minutes, times and ratings are entered in the grid afterwards.

Players & roster (Setup → Roster)

Add players one per line in the Add players box. You can include extra details separated by commas, in this order: name, position, shirt number, group. Only the name is required.

Thandi Mokoena, ST, 9, U17
Leo Dlamini, GK, 1
Aisha Khan

You can also paste columns straight from a spreadsheet. To edit a player, click their name, number, position or group in the roster table and type.

Groups

A group is any label you want to split the squad by: team, age group, first team vs development, or forwards vs defenders. Once players have groups, a group filter appears above every analysis view.

Archive vs delete

ArchiveDelete
Numbers kept?Yes, all history staysNo, removed for good
Shown in rankings?No—
Can be undone?Yes, click restoreNo

Use Archive for players who left or are injured long-term. Use Delete only for mistakes, such as a duplicate or a typo.

Player photos

Open a player on the Player tab and click the round picture next to their name to add or change a photo (JPG, PNG, WebP or HEIC, up to 8 MB). It's cropped to a square around the face automatically. Hover it and click × to remove it.

Photos are only shown to you and your staff. They never appear on share links, website widgets or data feeds, because squads often include children.

Sessions

Create a session from Enter data → New session or Setup → Sessions. Each session has:

  • Type: match, training, trial or other. You can later filter the analysis to "matches only", so training numbers don't mix with match numbers.
  • Date: puts the session in order on charts and in form calculations. Sessions without a date go after the dated ones.
  • Opponent and result (optional) show in the player's session log.
  • Label: the name shown on charts. Leave it empty and it's made from the opponent ("vs City FC") or the date.
  • Notes: private. They never appear on a shared link.

To change or remove a session, use the pencil and bin icons in Setup → Sessions. Deleting a session deletes every number entered for it.

Metrics (Setup → Metrics)

Click + Input to add a column you type into, or + Formula for a worked-out column. Change the settings, then click Save metrics.

SettingWhat it controls
LabelThe column name. The key below it (e.g. shots_on_target) is the name you use in formulas.
FormatWhole number, Decimal (0.00), 3 decimals (.300, for baseball-style averages), Percent or Time (m:ss). This only changes how the number is shown.
Across sessionsHow a season total is built. Add up for counts (goals, minutes). Average for ratings or scores out of 10. Best (max) for things like jump distance. Best (min) for race times.
Better whenHigher or Lower. Set Lower for turnovers, cards, errors and times, so rankings, colours and insights treat a low number as good.
  • Use the arrows to reorder columns. The order is used everywhere.
  • Deleting an input hides its numbers rather than destroying them. Add it back with the same key and they reappear.
  • Keys can't be changed once saved (so formulas don't break), but the label can.

Formulas

Formulas let you add your own stats, the way spreadsheet formulas do, except you write them once and they work for every player and every session. Type them using the keys of your input metrics:

StatFormula
Goal contributionsgoals + assists
Shot accuracy %shots_on_target / shots * 100
Pass accuracy %passes_completed / passes * 100
Basketball points2 * fgm + tpm + ftm
True shooting %(2 * fgm + tpm + ftm) / (2 * (fga + 0.44 * fta)) * 100
K/D (no divide-by-zero)kills / max(deaths, 1)
Volleyball hitting %(kills - attack_errors) / attempts * 100
Training loadduration_min * rpe
  • You can use + - * /, brackets, and min(), max(), abs(), round(), sqrt().
  • Formulas can use input metrics only, not other formulas.
  • A mistake shows in red under the formula box as you type, and the sheet won't save until it's fixed.
  • Dividing by zero shows "–" instead of an error.
Why season percentages are right: Formulas are worked out from the season totals, not by averaging each game's percentage. If a player goes 1 from 1 in one game and 0 from 9 in the next, their accuracy is 1 ÷ 10 = 10%, not the 50% you'd get by averaging 100% and 0%. A spreadsheet will often get this wrong.

Sport-specific tips

The templates follow each sport's usual conventions. A few need numbers entered a particular way. Hover a column header to see its description in the app.

SportEnter it like this
CricketEnter balls, not overs: 4 overs = 24, 3.4 overs = 22. Enter Times out as 1 if the batter was dismissed and 0 if not out. A batter who is never out has no batting average ("–"), as in official records.
Baseball / SoftballEnter pitching as outs: 1 inning = 3, 6⅔ innings = 20. AVG, OBP, SLG and OPS show as .300 and ERA and WHIP as 3.45.
GolfEnter Rounds as 1 per round, Par as the total par of the holes played, and your course handicap for that round. Net to par is then worked out for you.
HockeyRates default to per 60 minutes (ice). For field hockey, change Rate per N minutes to 70 in Setup.
RugbyRates default to per 80 minutes. Points use 5 per try, 2 per conversion and 3 per penalty or drop goal. Edit the formula for league or sevens scoring.
ChessEnter Opponent rating as the average rating of the opponents you faced. Performance rating is opponent average + 400 × (wins − losses) ÷ games.
DartsEnter total points scored and darts thrown per session. The 3-dart average and checkout % follow.
Swimming, athletics, cyclingTimes are kept as your best (lowest) per session and across the season. Distance and training load add up.
MOBA esportsEnter Game length in minutes so CS, gold and damage per minute work. Enter Team kills for kill participation.

Ratings (composite scores)

A rating rolls several stats into one 0–100 score, e.g. an Attacking rating built from goals, shots on target and key passes, or a Defensive one from tackles and interceptions. Coaches use them for selection; scouts use them to rank a long list quickly.

  1. 1Go to Setup → Ratings and click + Rating (or Overall to weight every stat equally).
  2. 2Name it, click Edit weights, and slide each stat from 0 (ignored) up to ×5 (very important).
  3. 3Click Save ratings. Ratings appear first in the Leaderboard (marked ★), on each player page, and in Compare.
  • How it's worked out: each stat becomes a percentile (how the player ranks in the squad, 0–100), and the rating is the weighted average. So goals and pass % combine fairly despite different units, and lower-is-better stats (cards, errors) automatically count the right way round.
  • A player missing more than half of a rating's weight gets no rating ("–") rather than one based on a single stat.
  • Ratings follow the filters: switch to Per 90, a group or Last 5 sessions and they're recalculated against those players and sessions.

Targets

Give the squad, or one player, a goal for any stat, e.g. "Pass accuracy ≥ 80%" or "Thandi: ≥ 3 tackles per 90".

  1. 1Setup → Targets → + Target. Choose who it's for (the whole squad or one player), the stat, the number, and how it's measured: per session, season total, or per 90 (or your minutes basis).
  2. 2≥ or ≤ is set for you from the stat's Better when setting (fewer cards uses ≤).
  3. 3Click Save targets.
  • Leaderboard: the column header shows the squad target, and players meeting theirs get a green ✓.
  • Player page: a Targets card with progress bars, "met" or "not yet", and personal targets marked. Per-session targets are also drawn as a line on the trend chart.
  • Insights: "X of Y players on target" for the stat you're looking at, with who isn't there yet.
  • A player's own target replaces the squad one for them. Targets show only in their own rate: switch to Per session to see per-session targets.

Totals, per session, per 90

The switch above every analysis view changes how numbers are counted:

ModeShowsUse it to
TotalsEverything added upSee who has done the most
Per sessionAverage per session playedCompare regulars with players who have played fewer games
Per 90 minRate per 90 minutes played (or per 36, 40…)Compare starters fairly with substitutes who only get 20 minutes
  • Per-minute mode needs a minutes column. Choose it in Setup → Sheet → Minutes column and set Rate per N minutes to the length of a full game in your sport (90 for football, 36 or 48 for basketball). The football and basketball templates have this set up already.
  • Only "Add up" stats are converted to rates. Averages, bests and percentages stay as they are, because a percentage per game is still a percentage.
  • Min. sessions to rank (Setup → Sheet) keeps one-game wonders out of the rankings. Players below it are still shown, but greyed out and not ranked.

Filters & time windows

If your players have groups, pick one from the All groups menu to analyse just that group. If you have more than one session type, a second menu lets you choose Matches only, Trainings only and so on.

The calendar menu sets the time window: All sessions, the Last 3 / 5 / 10 sessions (current form), or a Date range(e.g. one half of the season). Combine it with the session-type menu for "last 5 matches".

Filters change everything on the page, including rankings: percentiles then compare players only with the others you're looking at. A forward is then measured against forwards, not against goalkeepers.

Insights

The first tab picks out what's worth your attention for one stat. Choose the stat in What stands out in, and click any card to open that player.

CardWhat it means
#1, #2, #3The top three for that stat, in the current mode (totals, per session or per 90).
In form / DippingAverage over the player’s last 3 sessions compared with all their sessions before that. Only shown for players with 5+ sessions, and only when the change is big compared with how much that stat normally varies, so small swings are ignored.
Most consistentSmallest swing from session to session (needs 3+ sessions). The player you can count on.
Least predictableBiggest swing from session to session. Brilliant one week, quiet the next.
Active streakRecorded this stat in each of their most recent sessions (3 or more in a row).
Best single sessionThe highest single-session number anyone has recorded.

Below the cards, Top 3 by metric shows the leaders for every stat at a glance. The tiles at the top count how much data the sheet holds.

Leaderboard

  • Click a column header to rank by it, and click again to flip the order. A column marked ƒ is a formula. Hover a header to see its formula or description.
  • Shading shows each player's rank against the others on screen. The darker the blue, the better. It takes "Better when" into account, so the fewest cards gets the darkest blue. Hover a cell to see the exact percentile. Untick Percentile shading for a plain table.
  • Greyed-out rows are players below the minimum sessions. They're shown but not ranked.
  • Use the search box to find a player or a position (e.g. "ST").
  • Click a player's name to open their player page.
  • Export CSV downloads exactly what you see (current mode and filters).

Awards

At the bottom of Insights, Stats Lab works out end-of-season awards from whatever the filters show, so pick a date range for one season or one month. Only players with enough sessions to be ranked can win. Print gives you a sheet for the awards night.

  • Player of the season: the highest score on your first rating, or (with no ratings) the best average percentile across every stat.
  • Most improved: the biggest step up from the first half of the sessions to the second, across all stats, measured in standard deviations so every stat counts equally.
  • Ever-present and Most minutes.
  • Standout performance: the single session furthest above the squad's normal level.
  • Top in each counting stat (goals, assists, tackles…), with runners-up.

Player page

Everything about one player. Choose them from the menu, or click their name anywhere in the app.

Scouting report

For every stat, the player's number and a bar showing their percentile: the share of the squad they're better than. 73 means better than 73% of the players being compared. 100 is the best on the sheet and 0 is the lowest. The bars follow the mode and filters at the top.

Tip: Switch to Per 90 min before reading a scouting report. It's the fairest way to compare a player who starts every game with one who comes off the bench.

Trend chart

Pick any stat to see it session by session. The solid line is each session. The dashed line is the average of the last 3 sessions, which smooths out one-off games so you can see real improvement or decline. Hover a point for the exact numbers.

Session log

Every session the player has numbers for, newest first, with date and result. This is their full game log.

Compare

Put up to three players side by side, for selection decisions, scouting or showing a player where they stand.

  • Radar chart: each spoke is a stat, and the further out, the higher the player's percentile. A big, even shape is an all-rounder, and a spiky shape is a specialist. Open Radar metrics to choose which stats appear (at least three).
  • Table: the actual numbers, with a green ▲ marking the best of the group on each row.
  • Change a player with their menu, remove one with ×, or click Add player.

Tip: open a player page first, then click Compare, and that player is already selected.

Before vs after: is it real?

Compare → Periods: before vs after puts two stretches of the season side by side: first half vs second half, the last 3, 5 or 10 sessions vs everything before, or any two ranges you choose (pick the same session for "from" and "to" to compare single matches).

  • A avg / B avg are per player per session, so a longer period doesn't win just by having more games.
  • Effect (Cohen's d) is the size of the change compared with the normal spread: about 0.2 is small, 0.5 medium, 0.8 large.
  • Is it real? uses a Welch's t-test. Likely real (p < 0.05) means a difference this big would happen by luck less than 1 time in 20; very likely real is p < 0.01; could be chance means the numbers are too close or too few to tell.
  • Below the squad table, pick a stat to see which players changed most, each with their own test.
Read with care: With only a handful of sessions, even a real change often shows as "could be chance". That's honest, not broken: collect a few more sessions. And a change being real doesn't say why (new position, opponents, fitness).

Statistics (correlation, spread)

The Statistics tab is for digging deeper than the leaderboard:

  • Summary: for each stat, how many players, the mean and median, standard deviation (SD), range, and CV: the spread relative to the average. A high CV means a few players do most of it; a low CV means the squad is even.
  • Standardised scores (z): how many standard deviations each player is from the squad average, per stat (0 = average, +1 clearly above, +2 exceptional; lower-is-better stats are flipped so positive is always good). Unlike percentiles, z keeps the size of the gap, so it shows when one player is far ahead rather than just first.
  • Correlation matrix: how stats move together across players, from −1 to +1. Blue = when one goes up, so does the other; orange = one up, the other down; near 0 = no link. Click any square to open that pair as a scatter with a best-fit line, r and R².
  • Distribution: a histogram of how many players fall in each range for any stat, with the median marked. Hover a bar to see who is in it.
Read with care: Correlation isn't cause: shots and goals rise together, but more shots don't guarantee goals. With fewer than about 8 players, one player can swing these numbers, and Stats Lab warns you when that's the case.

Session reports

The Sessions tab is a one-page report for a single match or training: pick it from the menu.

  • Highlights at the top: stats where the squad was 20%+ above or below its usual level (green = better, amber = worse).
  • Squad vs the average session: totals for counting stats and averages for ratings, each compared with the average session in the current filters. The number of players recorded is shown too: if fewer than usual played, totals naturally look low.
  • Top performers: the top three for every stat in that session. Click a name to open the player.

Similar players (scouting)

On every player page, Most similar players lists the five players with the closest overall statistical profile, compared stat by stat on percentiles. 100% means an identical profile. Use it to find a like-for-like replacement, to spot who plays a similar role, or to put a trialist alongside your regulars. Compare top 2 opens all three side by side.

Printing & PDF reports

On a player page or a session report, click Print / PDF. Menus and buttons are hidden and the report switches to dark text on white. Print it, or choose Save as PDF in the print window to email it to a player, parent or scout.

Tip: Set the filters first (e.g. Per 90, Last 10 sessions). The report prints exactly what you're looking at.

AI reports

On a player page, the AI report card writes a short report (about 200 words) from the numbers you're looking at: summary, strengths, areas to develop and a recommendation. Choose a style first:

  • Scouting: for recruiters deciding whether the player fits a role.
  • Development: for the coach planning what to work on.
  • Player & parent: encouraging and in plain language, to share with the player and family.
  • It uses the current view: switch to Per 90 or Last 5 sessions first and the report is about that.
  • Only the figures on the page are sent: never private notes, emails or other players' data beyond names in "similar players".
  • The report is written by Claude, an AI model. It's told to use only your numbers, but check it before you share it.
  • Each person can write 25 reports a day. It prints with the player report.

Squad: attendance, minutes, load

The Squad tab helps you look after the group. It's only visible to people on the sheet, never on share links.

Attendance

In Enter data, the Att. column marks each player Present, Absent, Injured or Excused for that session. A player with numbers and no mark counts as present. The Squad tab shows each player's counts and attendance %, lowest first.

Minutes balance

With a minutes column set (Setup → Sheet), you see each player's minutes against a fair share: the squad's total minutes split equally between players who were available. Anyone under half a fair share is flagged. Useful in youth sport, where game time should be shared.

Training load

Pick a load stat (Setup → Metrics → Add wellness pack adds sleep, fatigue, soreness, stress, mood, session duration, RPE and a Training load = duration × RPE). The acute:chronic ratio compares the last 7 days with the weekly average over 28 days:

  • 0.8–1.5: the usual safe band.
  • Above 1.5 (spike): load rose sharply; linked to higher injury risk, so consider easing off.
  • Below 0.8 (low): less than they're used to; fine when tapering, worth watching otherwise.

It needs dated sessions and at least 3 weeks of history. It's a guide to start a conversation, not a medical assessment.

Scouting: shortlists & reports

Shortlists

On a player page, give them a status (Watching, Contacted, On trial, Signed, Passed) and any number of tags, such as "U17 targets" or "Left-backs". On the Leaderboard, filter by status ("On a shortlist") or tag to rank just those players.

Scouting reports

  1. 1In Setup → Scouting criteria, list the qualities you rate, or click Use a standard set (Technique, Decision-making, Physical, Work rate, Attitude, Potential).
  2. 2On a player page, click Add report, rate each quality 1–5, add a comment and the date you saw them.
  3. 3Reports from every scout on the sheet are averaged per quality, with the latest comments listed underneath.
Tip: Invite your scouts as editors (People button) so they can add reports. Everyone can edit and delete their own reports; the owner can delete any. Statuses, tags and reports never appear on share links, widgets or feeds.

Player profiles & season over season

Type a name in Find a player on your sheets list, or click All sheets & seasons on a Player page. The profile gathers the same person from every sheet you can open (yours and ones shared with you), matched by name or by their linked tournament player.

  • Season over season: every stat, one column per sheet from oldest to newest, with the player's percentile in that squad and the change between the last two. Use Per session when seasons have different lengths.
  • Chart: click a stat to plot it across seasons.
  • Same name but a different person? Untick that sheet at the top.
Tip: Start each new season with Setup → Duplicate sheet: the same stats and the same player names make profiles line up automatically.

League tables

League table (on your sheets list, or League in the top bar) ranks players from several sheets together, for example one sheet per team in your league or one per age group. Pick 2 to 12 sheets and click Build league table.

  • Only stats that every sheet tracks the same way (same key, and the same formula for calculated stats) are included. Sheets from the same template always match.
  • The Group column shows each player's sheet, and the team menu narrows the table to one sheet while percentiles still compare against the whole league.
  • League awards are worked out across everyone you picked.
  • The link keeps your selection, so you can bookmark it. It only works for people who can open all those sheets.

Import a CSV or paste from Excel

Go to Setup → Import CSV / paste from Excel. Choose an Excel (.xlsx) or .csv file (for Excel, the first worksheet is used), or select the cells in Excel or Google Sheets (including the header row), copy, and paste them into the box.

Two layouts work:

LayoutLooks likeResult
Game logPlayer, Match, Date, Goals, AssistsOne session per match, one row per player per match
Season totalsPlayer, Goals, AssistsEverything goes into one session you name
  1. 1Paste or choose the file. A preview shows the first rows, with a menu above each column.
  2. 2Check what each column is: Player name (required), Session / match, Date, Position, Group / team, Stat or Ignore. Stats Lab guesses these from your headers.
  3. 3For each stat column, choose an existing metric to fill, or + New to create a column with that header's name.
  4. 4Read the summary line ("Ready: 120 rows · 18 players · 8 sessions") and click Import.
  • Existing players and sessions are matched by name (capital letters and extra spaces don't matter). New names are added.
  • Imported numbers are merged into what's already there, so you can safely import the same file again after fixing it.
  • Cells that aren't numbers are skipped and counted in the result message.
  • Dates can be 2026-03-05 or 05/03/2026 (day first).
  • Old .xls files aren't supported. In Excel use File → Save as → Excel Workbook (.xlsx), or just copy and paste the cells.

Import from a tournament

If you organize a tournament on Tournament Master, or are on an organizer's management team for it, you can turn it into a stat sheet in one click: on Your stat sheets, click From a tournament and choose it.

Team sports (football, basketball, rugby, cricket…) give you:

  • Every player from every team roster, grouped by team (coaching staff left out).
  • One session per played match, with the score.
  • A column for each kind of event the scorers logged: goals, assists, cards, saves, shots, and whatever else your sport records. Plus Appearances, Starts, and G + A when both goals and assists exist.

Individual sports (tennis, chess, darts, golf, martial arts, table tennis…) give you:

  • Every confirmed entrant, plus anyone who played a match.
  • One session per played match, labelled "Player A vs Player B", with the score (or "Walkover").
  • Each player's Matches, Wins, Losses (and Draws if there were any), Score for and Score against, plus Win % and Score difference. Draws count as half a win. Any events the scorers logged are added as columns too.
Keeping it up to date: Editing the sheet never changes the tournament. When new matches are played, open Setup → Tournament link → Sync from tournament: new matches, players and event columns are added and scores refreshed, without duplicating anyone. Columns you added yourself, notes, renames and archived players are kept. You need access to the tournament (as organizer or staff) to sync.

Export

ButtonWhereWhat you get
Export CSVLeaderboardThe leaderboard as shown: rank, player, sessions and every stat, in the current mode and filters
Export all data (CSV)SetupEvery number ever entered, one row per player per session. Your full backup.
Export Excel (.xlsx)SetupOne workbook with four sheets: Leaderboard (with ratings and formulas), Game log, Players (with status and tags) and Sessions.

Both open straight in Excel, Google Sheets or Numbers.

Working with your staff

Invite assistant coaches, analysts or scouts to work on a sheet with you. Click People (top right of the sheet).

RoleCanCan’t
Owner (you)Everything—
EditorEnter data (grid and Live), change roster, sessions, metrics, ratings and targets, import, sync from a tournamentDelete the sheet, manage people, publish links, widgets or feeds
View onlySee every analysis tab, print reports, write AI reportsChange anything
  1. 1In People, choose the role, how many days the link stays valid and how many people may use it, then click Create link.
  2. 2Send the link. They sign in with a free Tournament Master account and click Join.
  3. 3Change someone's role or remove them in the same window. Revoking a link stops new people joining; people already in stay until you remove them.
  • The sheet appears under "Your stat sheets" for them, marked Editor or View only.
  • Several people can type at the same time. Each person's cells are saved separately, so you never overwrite each other's numbers, and their changes appear on your screen within about 15 seconds.
  • Anyone can leave a shared sheet from People → Leave sheet.

New season: duplicate a sheet

In Setup → Duplicate sheet, give the copy a name and choose what comes with it:

  • Setup only: stats, formulas, ratings, squad targets, scouting criteria and settings. Start the new season with an empty roster.
  • Setup + roster: the same, plus your current (non-archived) players, their tags and personal targets.
  • Everything: also every session and number, e.g. for a what-if copy.

The copy belongs to you. People, attendance, scouting reports, private notes and share links, widgets and feeds aren't copied. Copying the roster or data needs editor access to the original.

Sharing a read-only link

  1. 1Open the sheet and click Share (top right).
  2. 2Click Turn on sharing. The Link tab opens.
  3. 3Choose which view the link opens on (e.g. Leaderboard), then copy it, send it with WhatsApp, email, Telegram, X, Facebook or LinkedIn, or use Share… on a phone to pick any app.
  4. 4For training or match day, download the QR code and print it or put it on a screen. People scan it with their phone camera.
People with the link can seeThey cannot
Insights, Leaderboard, Player pages, Compare and TrendsEdit anything, see Enter data or Setup, see private player or session notes, or see archived players
  • New link replaces the link, and the old one stops working at once. Use it if a link went somewhere it shouldn't.
  • Stop sharing makes the sheet private again.
  • Website widgets and data feeds are separate: each has its own link that shows only that widget or feed, never the whole sheet. Changing or stopping the share link doesn't affect them, and they don't need it to be on.

Embed stats on a website

Put a live widget on your club website, blog or Notion page. It updates within a minute of you entering new numbers. In Share → Embed on a website, click New widget:

  1. 1Pick a widget: Leaderboard (top players for one stat plus up to 4 more columns), Player card (one player with percentile bars, good for "player of the month"), or Top performers (top 3 for up to 6 stats).
  2. 2Choose Light or Dark to match your site, the rate (totals, per session or per 90), the stats to show, and optionally a group.
  3. 3Click Create widget, check the preview, then click Copy embed code.
  4. 4Paste it into your site:
SiteWhere to paste
WordPressA “Custom HTML” block
WixAdd → Embed code → Embed HTML
SquarespaceA “Code” block
Google SitesInsert → Embed → Embed code
NotionType /embed and paste the URL (use Copy URL only)
Any other HTML pageWherever the widget should appear
  • Each widget shows only itself. Someone who finds its link can see that widget and nothing else, not the rest of your sheet, and the link can't be edited to show different players or text.
  • Change a widget with the pencil icon. Changes appear everywhere it's already pasted, with no new code needed.
  • Revoke a widget with the bin icon. It stops working on every site straight away.
  • If a player-card widget's player is archived, the widget says they're no longer listed rather than showing someone else.
Tip: Keep Auto-fit height on and the widget grows or shrinks to fit. If your site builder removes scripts, the widget still works at a fixed height.

Use your data in other apps (Google Sheets, Excel, Power BI…)

Share → Data feeds → New feed gives you live links to your numbers. Other programs read them directly and stay up to date, with nothing to re-export. Make one feed per place you use it (e.g. "Coach's Google Sheet", "Club website") so you can revoke each on its own.

  • Leaderboard: one row per player with every stat, in totals, per session or per 90.
  • Game log: one row per player per session, with the raw numbers you entered.
  • Each comes as a CSV link (for spreadsheets and BI tools) and a JSON link (for automations and developers).
AppHow to connect
Google SheetsPaste =IMPORTDATA("your CSV link") into a cell. It refreshes by itself, roughly hourly.
ExcelData → From Web → paste the CSV link → Load. Use Refresh All for the latest numbers.
Power BIGet data → Web → paste the CSV link, then set a scheduled refresh.
Looker Studio / TableauBring the data into Google Sheets with IMPORTDATA, then connect to that sheet.
Zapier, Make, n8nAn HTTP / Webhooks “GET” step with the JSON link.
Your own site or appFetch the JSON link. Any website is allowed to read it.
Treat feed links like passwords: Anyone with a feed link can read that dataset (the whole leaderboard or game log you chose). Revoke a feed with the bin icon in Data feeds and it stops working immediately.

Players enter their own numbers

Setup → Player self-entry gives each player a private link where they fill in their own numbers, such as sleep, soreness, mood and RPE after training, or GPS distance, without needing an account. Pick the stats they may fill in, pick the players, and click Create links.

  • Send each player their own link (Copy all or Download CSV, then WhatsApp or email). For safety the links are only shown once. Lost one? Make a new one; the old one stops working.
  • Players see only their own numbers for the stats you chose, for the last 14 sessions. They can't see the rest of the sheet or anyone else.
  • Their numbers land in the grid like anything you type, and show on the Squad tab's wellness and load views.
  • Stop a player's link (or Stop all) at any time, and choose an expiry when you create links.

REST API

Full reference, code samples and webhook verification: API documentation.

For developers and data people: connect Stats Lab to your own tools. Create a key on the API page (top bar), choose the sheets it may use, and whether it can write. Keys only work while you still have access to those sheets. Each sheet's id is in Share → API & webhooks.

GET  /api/v1/sheets                 sheets this key covers
GET  /api/v1/sheets/:id             metrics, players, sessions, entries
POST /api/v1/sheets/:id/rows        write by names (creates players/sessions)
     {"rows":[{"player":"Thandi Mokoena","session":"Training 14 May",
               "played_on":"2026-05-14","values":{"distance_km":7.4}}]}
PUT  /api/v1/sheets/:id/entries     write by ids
     {"entries":[{"player_id":"…","session_id":"…","values":{"goals":2,"cards":null}}]}

Header:  Authorization: Bearer slk_…      Body: Content-Type: application/json

Values merge cell by cell: a number sets a cell, null clears it, anything you don't send is left alone. Only input stats are written; calculated stats update themselves. Limits: 120 requests a minute per key and 5,000 rows per request. Attendance, scouting reports and sharing settings aren't part of the API.

Webhooks

Share → API & webhooks lets the sheet owner add an HTTPS address that Stats Lab calls whenever numbers on the sheet change, from the grid, live logging, imports, tournament sync, player self-entry or the API. Use Test to send a ping.

POST https://your-endpoint
X-StatsLab-Event: entries.updated
X-StatsLab-Signature: t=1763000000,v1=<hex HMAC-SHA256 of "t.body" with your secret>

{"id":"…","event":"entries.updated","sheet_id":"…","created_at":"…",
 "data":{"source":"app","changes":[{"session_id":"…","player_id":"…","values":{"goals":2}}],"truncated":false}}

Check the signature with the secret you were shown when you added the webhook, and reject requests whose t is more than 5 minutes old. Reply with any 2xx status within 5 seconds. Up to 500 changed rows are sent per event. After 20 failures in a row the webhook switches itself off; turn it back on once your endpoint is fixed. Addresses must be public https:// URLs. Code to check the signature (Node, Python) is in the API documentation.

Plans & upgrades

Stats Lab is free for every Tournament Master account. Tournament Master may also offer paid plans with higher limits, such as more sheets, more collaborators or more AI reports per day. Open Plan in the top bar to see your current plan, what you've used, and every plan side by side.

  • Already on Organizer Pro? You don't pay again. The Stats Lab plan included with Organizer Pro is switched on for you automatically, and it stays on for as long as your Organizer Pro subscription is active.
  • Upgrading: pay using the details in the plan's description, then choose the plan on the Plan page and enter your payment reference. An admin checks the payment and switches the plan on, usually within a working day. You can cancel a request while it's pending.
  • When a plan ends, you go back to the free plan. Nothing is deleted. If you're over a limit, you can still view and export everything, but you can't add more until you're back under it.
  • Limits on shared sheets follow the sheet owner's plan. For example, how many players or collaborators a sheet can have depends on the owner's plan, not yours.

Undo, shortcuts & light theme

  • Undo / redo: the arrows next to Saved, or Ctrl/⌘ + Z and Ctrl/⌘ + Shift + Z. Undo covers numbers typed, pasted, cleared or logged live (up to 100 steps while the sheet is open), not roster, session or setup changes.
  • Keys 1–9 switch tabs, Ctrl/⌘ + S saves at once, and ? lists every shortcut.
  • Light theme: the sun / moon button in the top bar. Your choice is remembered on this device.

Privacy, limits & deleting

  • Your sheets are visible only to you, unless you share a link.
  • On the free plan each account can keep up to 100 sheets. Each sheet holds up to 300 players, 1,000 sessions and 60 metrics. Your plan may change these, so check the Plan page.
  • To delete a sheet, go to Setup → Delete sheet and type its name to confirm. This can't be undone, so export first if you might need the data.
  • If you delete your Tournament Master account, your sheets are deleted with it.
  • Only enter information you're allowed to keep about your players. For youth players, check your club's rules on recording and sharing their data.

Troubleshooting & FAQ

“Not saved — retry” appears next to the sheet name

Your last changes didn’t reach the server, usually because the connection dropped. Click the message to try again. Your changes are kept in the page, so don’t close the tab until it says Saved.

“Per 90 min” is greyed out

The sheet has no minutes column yet. Choose one in Setup → Sheet → Minutes column and save.

A player isn’t ranked, or their row is greyed out

They’ve played fewer sessions than “Min. sessions to rank” (Setup → Sheet). Lower it, or wait until they’ve played more.

A cell shows “–”

There’s no number for it. Nothing was entered, the minutes are zero in per-90 mode, or a formula would divide by zero.

My percentage doesn’t match my spreadsheet

Stats Lab works percentages out from season totals rather than averaging game percentages. That’s the correct way, and spreadsheets often do it the other way. See Formulas.

My formula won’t save

The message in red explains why. Usually it’s a misspelt key (copy it from under the input’s label) or a missing bracket.

I see a player twice after an import

Their name was spelt differently in the file. Fix the name in the file and import again, then delete the duplicate in Setup → Roster.

Insights says “Not enough data”

Most cards need a few sessions: form needs 5+, and consistency and streaks need 3+. Keep entering numbers and they’ll appear.

I can’t find a template for my sport

Every sport on Tournament Master has one. Use the search box in New sheet. For anything else, pick Blank sheet and add your own columns and formulas.

“From a tournament” shows nothing

It only lists tournaments you organize, or that you’re on the management team for. Everyone else can still build sheets from templates or CSV.

Still stuck? Use the chat or support options in the main Tournament Master app. Mention Stats Lab and the name of your sheet.