Fixtures

How to Set Up Round-Robin Fixtures for a League

A round-robin is the fairest way to run a league: everyone plays everyone. Here's how the scheduling works, how many games you'll need, and how to build the list without a spreadsheet.

What is a round-robin?

In a round-robin, every team plays every other team the same number of times. In a single round-robin each pair meets once; in a double round-robin they meet twice (typically home and away). Because every team faces identical opposition, the final table is a true reflection of performance — no one can complain about an easy draw.

How many matches will you play?

For a single round-robin with n teams, the total number of matches is n × (n − 1) ÷ 2. Double it for a home-and-away season. A quick reference:

Plan your day around this. Eight teams playing a single round-robin is 28 matches — at 20 minutes each with quick turnarounds, that's a full day on one pitch, or a half-day across two.

Building a fair schedule

The classic method is the "circle" or polygon algorithm: fix one team in place and rotate the others around it each round. With an even number of teams, every team plays in every round; with an odd number, one team sits out (a "bye") each round. Done by hand, this is fiddly and error-prone — it's easy to schedule a team twice in one round or drop a pairing entirely.

Handling an odd number of teams

With an odd count, add a "ghost" team; whoever is drawn against it gets a bye that round. This keeps the rotation clean and ensures each real team eventually sits out exactly once.

Skip the spreadsheet

Rather than build the grid manually, generate it. Oveli Football creates a balanced round-robin fixture list the moment you've added your teams — every pairing scheduled once, no duplicates, no missed games. From there you score each match live and the standings update automatically.

Generate your fixtures in seconds

Add teams, tap generate, and start playing. Free and works offline.

Open the matchroom

Related guides: How to run a football tournament · Sharing a live score with fans