FantasyTools.ai
League Tool

Fantasy Football Schedule Generator

List your teams, pick the number of weeks, and get a balanced week-by-week schedule for any league from 4 to 16 teams. Byes for odd leagues, divisions and a rivalry week are built in; print it or take it to a spreadsheet.

Fantasy football schedule generator

12 teams. Order matters here: divisions are cut from the top of the list, and teams listed next to each other are rivals.

Divisions weight the schedule toward division rivals: extra weeks go to them, and a short season drops other opponents first.

The same list and settings always build the same schedule. Want a random arrangement first? Shuffle your teams with the draft order randomizer and paste the result here.

Your schedule

12 teams · 14 weeks

View
  1. Week 1

    • Team 1vsTeam 2
    • Team 3vsTeam 4
    • Team 5vsTeam 6
    • Team 7vsTeam 8
    • Team 9vsTeam 10
    • Team 11vsTeam 12
  2. Week 2

    • Team 1vsTeam 4
    • Team 2vsTeam 6
    • Team 3vsTeam 8
    • Team 5vsTeam 10
    • Team 7vsTeam 12
    • Team 9vsTeam 11
  3. Week 3

    • Team 1vsTeam 6
    • Team 2vsTeam 10
    • Team 3vsTeam 12
    • Team 4vsTeam 8
    • Team 5vsTeam 11
    • Team 7vsTeam 9
  4. Week 4

    • Team 1vsTeam 8
    • Team 2vsTeam 11
    • Team 3vsTeam 9
    • Team 4vsTeam 12
    • Team 5vsTeam 7
    • Team 6vsTeam 10
  5. Week 5

    • Team 1vsTeam 10
    • Team 2vsTeam 7
    • Team 3vsTeam 5
    • Team 4vsTeam 9
    • Team 6vsTeam 11
    • Team 8vsTeam 12
  6. Week 6

    • Team 1vsTeam 12
    • Team 2vsTeam 3
    • Team 4vsTeam 5
    • Team 6vsTeam 7
    • Team 8vsTeam 9
    • Team 10vsTeam 11
  7. Week 7

    • Team 1vsTeam 11
    • Team 2vsTeam 4
    • Team 3vsTeam 6
    • Team 5vsTeam 8
    • Team 7vsTeam 10
    • Team 9vsTeam 12
  8. Week 8

    • Team 1vsTeam 9
    • Team 2vsTeam 8
    • Team 3vsTeam 10
    • Team 4vsTeam 6
    • Team 5vsTeam 12
    • Team 7vsTeam 11
  9. Week 9

    • Team 1vsTeam 7
    • Team 2vsTeam 12
    • Team 3vsTeam 11
    • Team 4vsTeam 10
    • Team 5vsTeam 9
    • Team 6vsTeam 8
  10. Week 10

    • Team 1vsTeam 5
    • Team 2vsTeam 9
    • Team 3vsTeam 7
    • Team 4vsTeam 11
    • Team 6vsTeam 12
    • Team 8vsTeam 10
  11. Week 11

    • Team 1vsTeam 3
    • Team 2vsTeam 5
    • Team 4vsTeam 7
    • Team 6vsTeam 9
    • Team 8vsTeam 11
    • Team 10vsTeam 12
  12. Week 12

    • Team 1vsTeam 2
    • Team 3vsTeam 4
    • Team 5vsTeam 6
    • Team 7vsTeam 8
    • Team 9vsTeam 10
    • Team 11vsTeam 12
  13. Week 13

    • Team 1vsTeam 4
    • Team 2vsTeam 6
    • Team 3vsTeam 8
    • Team 5vsTeam 10
    • Team 7vsTeam 12
    • Team 9vsTeam 11
  14. Week 14

    • Team 1vsTeam 6
    • Team 2vsTeam 10
    • Team 3vsTeam 12
    • Team 4vsTeam 8
    • Team 5vsTeam 11
    • Team 7vsTeam 9

How the schedule is built

The schedule is a round-robin built with the circle method. Seat the teams around a table with one seat fixed. Each week, pair every team with the team across from it, then rotate everyone except the fixed seat one place. In a league of n teams (n even) that gives n − 1 weeks. In each one every team plays exactly once, and across all of them every team meets every other team exactly once. We call one such week a round. A 12-team league has 11 rounds.

Here is a six-team league over a five-week season, straight from the tool. Every team appears once a week, and each pair meets once:

Six teams, five weeks: who plays whom each week
Week Matchups
1 Aces vs Bombers · Comets vs Dragons · Eagles vs Falcons
2 Aces vs Dragons · Bombers vs Falcons · Comets vs Eagles
3 Aces vs Falcons · Bombers vs Comets · Dragons vs Eagles
4 Aces vs Eagles · Bombers vs Dragons · Comets vs Falcons
5 Aces vs Comets · Bombers vs Eagles · Dragons vs Falcons

Count it: each team plays 5 games, and each pair meets once. The tool's Schedule check panel makes the same counts on whatever you build, from the schedule itself.

Odd leagues and byes

With an odd number of teams someone has to sit each week. The tool adds an invisible extra team; whoever draws it has the bye. Over one full cycle every team sits exactly once. Five teams, five weeks:

Five teams, five weeks: matchups and the team on bye
Week Matchups Bye
1 Aces vs Bombers · Comets vs Dragons Eagles
2 Aces vs Dragons · Comets vs Eagles Bombers
3 Bombers vs Comets · Dragons vs Eagles Aces
4 Aces vs Eagles · Bombers vs Dragons Comets
5 Aces vs Comets · Bombers vs Eagles Dragons

Each team has one bye and 4 games. Over a longer season the byes stay balanced too: no team sits more than once more than any other.

Seasons longer or shorter than a round-robin

A season rarely matches the round-robin exactly. With a 12-team league and a 14-week season there are 11 rounds to fill 14 weeks, so 3 rounds are played twice. With 16 teams and 14 weeks there are 15 rounds for 14 weeks, so one round is skipped and every team misses one opponent. Either way the rule is the same: no pair meets more than once more than any other pair. In the tool, a 12-team, 14-week league has pairs meeting 1–2 times, and a 16-team, 14-week league 0–1 times.

Rematches are spread out: the schedule never sends the same two teams against each other in back-to-back weeks. The Schedule check panel shows the count, and it stays at zero.

Divisions, and how division games are weighted

Choose 2 divisions (any league from 4 teams) or 4 divisions (8, 11, 12, 15 or 16 teams, so the divisions come out equal). Divisions are cut from the top of your list in equal blocks: with two divisions, the first half of the list is Division A. If the teams do not split evenly, the last division is one team short and one team has the bye each week.

With divisions, the tool builds the round-robin so that some weeks are (nearly) all division games: each division plays its own round-robin at the same time, then divisions play across. That is what lets it weight the season. Extra weeks go to division rivals first, and when the season is short, non-division opponents are dropped first. A 12-team league with two divisions over 14 weeks has division rivals meeting 1–2 times and everyone else once. At 16 teams and 14 weeks, every division rival still meets once, and the one skipped round is a cross-division round.

Rivalry week

Pick a rivalry week and the teams listed next to each other meet that week: the first team plays the second, the third plays the fourth, and so on. List real rivals next to each other and the week takes care of itself. In an odd league the last team listed has that week's bye. The rivalry week is one of the schedule's normal rounds, moved to the week you choose, so it does not disturb the balance.

Print, CSV and share

  • Print gives a clean sheet of the view you have open: the week-by-week cards, or the team grid with one row per team.
  • CSV (one row per game) has a Week, Team A, Team B row for every game and a BYE row for every bye. CSV (team grid) has one row per team and a column per week, ready for a spreadsheet.
  • Copy link to this schedule saves the team list, the number of weeks, the divisions and the rivalry week in the address, so a leaguemate opens the same schedule. Nothing is uploaded.
  • Highlight a team tints one team's games so you can find your own week fast.

The same list and settings always build the same schedule; there is no random draw here. If you want a random arrangement first, shuffle the list with the draft order randomizer and paste it in. Weeks run from 4 to 18.

Related tools

Next step

Schedule set? Write the rules down.

Answer eight steps, get a numbered league constitution: dues, waivers, vetoes, keepers, tanking rules. Print or copy as Markdown.

Open the league constitution generator 

Chalk & Sharp, our AI start/sit assistant, is coming soon 

Free weekly cheat sheet

Get the weekly cheat sheet in your inbox.

Two short emails a week in season. Tuesday: the waiver adds worth a claim, the defenses and kickers worth streaming, and who’s gaining targets. Saturday: injury report changes, line moves, wind and the close start/sit calls. No spam, unsubscribe any time.

We’ll email you once to confirm. See our privacy policy.