RosterMetrix

How to make an amateur league schedule

Updated October 18, 2026

The schedule says who plays whom, when and where. This guide covers the most common formats, the circle method that gets every team to face every other without repeats, how to share out fields and time slots, and what to do when it rains.

What you need before you start

Have these at hand: how many teams there are, which days you play and at what times, which fields you have, the opening date and the date you want to finish. Then list the dates with no games: holidays, Easter week, local festivals, days the field is lent out.

Also decide how many games a team can play in one day: usually one, two with doubleheaders, and three if a whole series is played in a day.

The formats

Round robin, or a single round: each team plays every other team once. With N teams you get N(N-1)/2 games, and each team plays N-1. Six teams make 15 games, eight make 28 and ten make 45.

Double round robin, home and away: the second round repeats the first with the home team swapped, so each pairing gets one game at each park. That’s N(N-1) games: 30 with six teams.

A fixed number of games per team: when the league promises, say, 20 games to every club no matter how many clubs there are. Round-robin rounds are dealt out again and again while both teams in a pairing still need games, and at the end the teams left short are paired up, starting with those who have met least. If the number of teams times the promised games is odd, someone has to play one extra: with five teams and 15 games each, one ends up with 16.

Series of 2 or 3: each pairing is a series of two or three games in a row between the same teams, played once or once at each park. It works well when a team travels and should play several times on the same weekend.

Divisions: one or more rounds inside each division plus a fixed number of games against each team in the other divisions, alternating home teams. Two divisions of four, with two rounds inside and one game against each team outside, give ten games per team and 40 in all. Mix the two kinds of games through the season so the cross-division ones don’t all pile up at the end.

The circle method, step by step

To have everyone face everyone without anybody playing twice in one round, use the circle method. Put the teams in a row and pair the first with the last, the second with the second-to-last, and so on toward the middle: that’s round 1. For the next round the first team stays put, the last team moves into second place and everyone else shifts down one spot.

An example with six teams, A, B, C, D, E and F. Row A B C D E F, round 1: A vs F, B vs E and C vs D.

F moves to second place, giving A F B C D E. Round 2: A vs E, F vs D and B vs C.

Row A E F B C D. Round 3: A vs D, E vs C and F vs B.

Row A D E F B C. Round 4: A vs C, D vs B and E vs F.

Row A C D E F B. Round 5: A vs B, C vs F and D vs E.

That’s five rounds of three games, 15 in all: every letter appears once per round and faces the other five. With an even number of teams, N, you always get N-1 rounds of N/2 games.

With an odd number of teams: the bye

With an odd number of teams, add a pretend team called «Bye» and run the circle the same way. Whoever draws the bye sits out that round. Spanish-speaking leagues call it «descansa».

With five teams, use the table above with «Bye» in place of F: A sits out round 1, D round 2, B round 3, E round 4 and C round 5. That’s five rounds of two games, ten in all, and every team gets exactly one bye.

Publish who has the bye in each round, just like the games, so nobody shows up to the field for nothing.

Balancing home and away

The circle tells you who plays whom, not who’s home. If you use the position in the row to decide, the fixed team ends up home every other week and some clubs get three home games in a row.

It’s better to decide as you write the schedule, game by game: the team with fewer home games so far hosts; if they’re tied, the one that was away last time hosts. In a double round robin, the second round swaps the home team of every game.

In a single round with an even number of teams, each team plays an odd number of games, so it will have one more home game than away or the other way around: just never let the gap go past one. Even if everyone plays on the same field, the home team bats last, so it’s still worth balancing.

Fields, time slots and dates off

With the matchups ready, give them dates. Go day by day from the opener, skipping the dates with no games. In each time slot, place the next pending game that meets three conditions: neither team is already playing at that time, neither has reached its games for the day, and a field is free.

If the field already has games from another tournament or age group, put those in first: those slots are taken.

Do the math before you promise a closing date. A day holds fields times slots, but with one game per team per day it never holds more than half the teams: six teams make three games a Sunday even with two fields and four slots, and a single round fills five Sundays. If it doesn’t fit, add days, slots or fields, or change the format.

Doubleheaders and one-day series

A doubleheader is two games for the same team on one day. It saves Sundays but takes more arms: think about pitchers’ rest, and about daylight if the second game starts late. If your rules shorten the second game, say so on the schedule.

Label games between the same two teams on the same day Game 1, Game 2 and Game 3, in order. Three in a day is the sensible maximum.

Rainouts and postponed games

A game that wasn’t played isn’t deleted: mark it postponed, so it stays on the schedule and nobody forgets it’s owed.

Leave makeup dates from the start: a free Sunday mid-season, another before the playoffs, or an empty slot each week. Rescheduling into a gap that already exists is far easier than moving half the season.

Write into your rules who calls a game for rain, how late the call can be made, how soon it must be made up and what happens if it never is. Also cover a game suspended after it started: some leagues resume it where it stopped, others count it as complete after a set number of innings.

When you reschedule, check the same things as when you built the schedule: neither team plays at that time, a field is free, and nobody goes past their games for the day.

Publishing the schedule and keeping it current

Before you publish, check that every team has the games you promised, home games are balanced, nobody plays twice at the same time and nothing lands on a date off.

Publish the schedule in one place, with the date, time and field of every game, and who has the bye. When something changes, change it there and note the date of the last update. A screenshot passed around in a group chat goes stale with the first rainout; a link that’s always current doesn’t.

With RosterMetrix

RosterMetrix has a free schedule generator at /en/tools/schedule-generator: pick the format, days, time slots, fields and dates off, and see the whole schedule before you use it. Inside a league, the commissioner generates and publishes it in the app: the schedule shows up on the league’s page, a postponed game is moved to another day from there, and if something went wrong the whole batch can be undone as long as none of its games has anything entered.