Fair Rotation / Substitution Tool
Even playing time across periods.
Built and maintained by Paul Clark, Redmoon Software · Last checked
Coaches use this to build a period-by-period substitution grid where playing time stays even. Enter the roster, set how many are on the field per period and how many periods, and each period is filled with the players who have played least so far, breaking ties at random. A per-player minutes summary and CSV export make it easy to show parents the plan is fair.
Enter. List your players and set the number of periods and slots per period.
0 items
Click Build rotation to see a result.
Options
Recent results
- No history yet.
How it works
- Enter. List your players and set the number of periods and slots per period.
- Build. Click Build rotation to generate a balanced schedule.
- Review. Check each period's lineup and confirm bench time is even.
- Rebuild. Build again if you'd like a different fair arrangement.
About the Fair Rotation / Substitution Tool
How the rotation is actually built
This is not a shuffle. For each period the tool sorts every player by how many periods they have already played, fewest first, breaks ties at random, and puts the first n of them on the field. Then it counts those appearances and repeats for the next period.
That greedy rule has a useful guarantee: at the end, no player has played more than one period more than any other. That is the best an even split can do whenever the number of slots does not divide by the number of players — and it usually does not. Five on the field for four periods is twenty slots, which twelve players cannot share evenly however you arrange it.
The random tie-break is what stops the same people always taking the extra period. Among everyone on the same count it is a coin toss, so the surplus rotates across runs rather than settling on the same names.
Read the totals, not just the grid
Under the period grid there is a per-player total. That is the number to check before you commit, and the number to show a parent who asks. It makes the arithmetic visible: if the totals read three, three, three, two, two, then two players are a period short and that is a property of your squad size, not a mistake the tool made.
If the gap is wider than one period, the input is wrong rather than the output — usually a player listed twice, or a name that split on a comma into two entries.
What it deliberately does not model
The rotation is blind to everything except appearance count. It does not know positions, so a period may put five defenders on the field together. It does not know fitness, so it will bring a player straight back on. It does not know that two players cannot be on at the same time, or that your goalkeeper is your goalkeeper.
Those are coaching decisions and the tool leaves them to you deliberately — a rotation that tried to satisfy them would need information it cannot have and would quietly stop being even. Use the grid as the fairness backbone and adjust it by hand where the game requires; the totals tell you exactly what each swap costs.
Nothing carries across matches either. Cumulative minutes over a season is a record you have to keep yourself.
Frequently asked questions
How does the tool keep playing time even?
Before each period it sorts the roster by periods already played and fills the on-field slots from the bottom up, breaking ties randomly. A player only gets extra time once everyone else has caught up.
How can I check the schedule is actually balanced?
Expand "Minutes played per player" under the grid. Because the tool always picks the least-played players first, totals can never differ by more than one period across the roster.
What if I have fewer players than on-field slots?
Everyone simply plays every period. The tool caps each period's lineup at your roster size, so a five-slot setting with four players just fields all four each time.
Can I give stronger players more time?
No — equal time is the point of this tool, and every player is treated identically apart from random tie-breaks. If what you need is position allocation rather than minutes, the Random Sports Position Assigner is the companion tool.
Do the tie-breaks favor anyone?
No. When several players are level on playing time, a random draw decides who fills the remaining slots, so nobody is consistently first off the bench. Click Build rotation again for a different fair arrangement.
Related randomizers
Further reading
- Short-handed? The position assigner loses the same slots every time
The Random Sports Position Assigner shuffles your players, never the positions. So when eight kids show up for an eleven-a-side lineup, which slots come back empty is not random at all — and for soccer it means nobody up front. Here is the fill order for each sport and how to read a short lineup.
- Even playing time is a counting problem (do the math before you promise it)
Five on the field for four quarters is twenty slots. Twelve players cannot split twenty evenly, so 'everyone plays the same amount' is sometimes impossible before the whistle blows. Here is the slot arithmetic, how the rotation tool keeps the gap to a single period, and what it deliberately leaves to the coach.
- A random batting order for game day (and when to hand out positions too)
Writing the same lineup card every week is how a rec-league coach ends up in the parking lot explaining themselves. Here's how a random batting order works, what the position-assignment option actually does, and the one spot you should never leave to chance.
- A chore roster that actually feels fair (and stops the arguments)
The same person always ends up on bathroom duty. Here's how a random chore roster — fresh shuffle each day, rotated across the week — spreads the jobs nobody wants without anyone keeping score, and how it handles having more chores than people.
- Fair lineups and honest playing time: a coach's guide to randomizing
Parents notice everything: who bats third, who sits the most, who always plays the easy position. Here's how to use random lineups and rotation tools to make playing time provably fair — and when not to.