Round-robin tennis league: schedule and math
Round-robin — everyone plays everyone — is the default format for amateur tennis leagues because it is fair, simple and forgiving of loose scheduling. The math is worth knowing before you commit a group of players to a season.
How many matches?
With N players, a single round-robin has N × (N − 1) ÷ 2 matches, and each player plays N − 1. Ten players means 45 matches (9 each); sixteen means 120 (15 each); twenty-four means 276 (23 each) — at that size, consider splitting into two divisions.
- →8 players → 28 matches, 7 per player
- →12 players → 66 matches, 11 per player
- →16 players → 120 matches, 15 per player
- →20 players → 190 matches, 19 per player
How long does a season need to be?
Amateur players realistically manage one league match every one to two weeks. So N − 1 matches need roughly (N − 1) × 1.5 weeks: a 12-player league fits in about four months, a 16-player league wants six. Add a buffer month at the end — it will be used.
Breaking ties in the standings
Points ties are common at season end. The standard cascade: head-to-head result first, then set difference, then games difference. Publish the tie-break order before the season starts — the one time it matters, feelings will be strong.
Double round-robin and divisions
Small groups (6–8) can play everyone twice for a fuller season. Groups above ~20 are better split into divisions with promotion and relegation between seasons — it creates two title races instead of one long tail of dead matches.
FAQ
Is round-robin better than a ladder?
For a season with a champion, yes — every player gets a full schedule and the winner is unambiguous. Ladders are better for continuous, season-less play.
Do all round-robin matches have to be played?
Aim for it, but decide up front how unplayed matches score (typically a walkover or zero points for both). A league where 90% of matches complete is a healthy league.
Lynvo handles everything in this guide — standings, scoring, result entry and AI match news — on your league’s own subdomain.
Create your league →