364 Replies to “League Fixtures Generator”

  1. having just taken over as a fixture secretary, this generator has been an absolute godsend.

  2. This is as good an algorithm I can find for home/away matches. No one should get more than two home or away matches in a row. If you look at something like the English Premiership teams often get two home or away matches in a row there too. There may be a better algorithm that gives a better spread but I am not aware of it.

  3. Nice, I like it.

    I wrote one of these many years ago, lost it and am writing another. One problem with yours that I overcame, is that I’m looking at writing the program for a local pool league where we have the issue of TWO teams from the same venue. These teams obviously cannot play at home on the same night. There may be may such venues, and my last program ensured that 1&2 were never at home (or away) in the same week, 3&4, 5&6 etc…

    This functionality had a trade off … alternating home/away games became a bit erratic. I’m hoping to improve on that this time round.

  4. Actually, there are “complementary teams”. For example in a league of ten teams for each pair from 1 & 6, 2 & 7, 3 & 8, 4 & 9, and 5 & 10, both are never both at home.

    More than two teams from the same venue might be problematic. You can see a fuller explanation at http://www.barrychessclub.org.uk/berger2001.htm

  5. I beg to differ, mate. 2 & 7 are both away in round 3, and both at home in round 4.

    Don’t get me wrong, I’m not criticising. I’ve recommended this website to a friend who is arranging a 15+ man round-robin pool competition at his pub, where home/away is not an issue.

  6. True. Damn. That isn’t the case in the Berger algorithm so there’s obviously a bug in my code. Will look into it.

  7. Sorry to point that out. Like I said, I’m working on it as well (albeit in C), so if I crack it, I’ll let you know.

  8. OK, found the bug – I was flipping the home/away for the team that stays still BEFORE doing the interleaving instead of after. The version linked above now has the “complementary teams” feature.

  9. Right! I guess I’ll chuck my effort into the bin, then 🙂

    That looks pretty damned perfect to me … nice one. I’ll still progress mine as a programming training exercise (it’s been a long time, and I need to get back into it). I’ll use your solution as a benchmark for my programming expertise.

    Well done, and cheers.

  10. This is super – has cut out a lot of work for our Netball League.

    your site added to favs


  11. This is very helpful site mate. Was looking for a non-complicated generator and this is perfect.

  12. Excellent. I was struggling trying to manually do fixtures for a pool league of ten teams where four sets of two teams share a table and need to play ‘alternate’ nights. With this rule in place, I think it would be impossible for everyone to play alternate home and away matches.

  13. We have 20 ,with 5 times per day, for 5 days.Is we require each player to play each day, but with different people. tee times are 8 minutes intervals can you help

  14. Any chance of a league program to go with the generator?

    Additionally, have you used Moisystems Dataase ? (ps, the letter ” ” (one that comes after “a”) doesn’t work. I’m getting a new keyoard.

  15. superb effort this has saved me so much time as i am secretary of 5 leagues all with differant numbers of teams thank you very much. I also own a Darts shop and i am thinking of having a website built and wondered if i could include the generator on my ste for free use to any one who needed help with their fixtures ? Thats it for now and once again thanks

  16. Please feel free to use this anyhow you wish. The only caveat is that the source code is released under the GPL which means if you alter that then you have to release your new version under the same license and make it available to others. But in terms of linking or doing whatever you want with the results, etc. please go ahead.

  17. Byes are, “The position of one who draws no opponent for a round in a tournament and so advances to the next round.” (dictionary.com)

    I’ve kind of misused the term here just to mean the match where the odd team goes. It means, “no match” effectively. For when there are odd numbers of teams and one is always spare.

  18. Very efficiant fixtures generator. My dad had previously made one where you could put all the teams in and was easier to look at but he took ages making it and this one is simple and easy. Well done!

  19. This is a great generator. I’ve recently began compiling fixture lists for a local amateur football association with three divisions. Because I could not find anything on the web (and I’m not a Techi) I have had to manually create fixtures, this will undoubtly help. I was wondering though if there is a generator that could be used that replaced the numbers with team names and if dates could be configured into the script / code. I know it is possible, however I’m not a techi and do not know how to write the scripts / codes. Can anyone help.

  20. Really useful generator. I would like a copy of the source code if possible but the link above returns a 404 error. Could you possibly arange to get the link fixed or email it to me? Thanks

  21. This is tantalising. I have just taken over a league and need to generate fixtures for 15 teams. I have tried your link and get ‘This page is part of Bluebones.net’.
    Have you fixed the link

  22. Should all be working again now. Have moved to a PHP implementation so I don’t have to install Tomcat again. If anyone needs the PHP source code please email me or put a comment here.

  23. HI!

    great code!
    I would really like to see the source it it is possible.
    Thanks for it!


  24. Thanks for this, am a new ladies darts secretary and struggling to do the fixtures for the new season, this has certainly helped and saved me a lot of time.

  25. Im creating some fixtures with 10 teams, but some with more than two teams in the same division or other divisions. Whats the rule for avoiding clashes at home??? eg 1v 10 never clashes Thanks

  26. “Complementary teams”, that is – teams that never play at home at the same time as each other. For example, try 10 teams — for each pair from 1 & 6, 2 & 7, 3 & 8, 4 & 9, and 5 & 10, both are never both at home.

  27. how do i access the fixture generator?
    I cant seem to get past the how many teams page
    ta in advance…..dave

  28. You just put in the number of teams you want and press Enter. I should probably put a submit button under the box but that will work for now.

  29. You can take the source code and put it on any PHP-enabled webserver.

  30. Hi ‘Name’. Not sure what you mean. What is it you are looking for?

  31. I’m a little confused. I’ve just generated a league for seven teams, and I have examples of 1 & 6, 2 & 7 clashing at home or away. See below:

    Round 1
    1 v 8
    2 v 7
    3 v 6
    4 v 5

    Round 2
    8 v 5
    6 v 4
    7 v 3
    1 v 2

    Round 3
    2 v 8
    3 v 1
    4 v 7
    5 v 6

    Round 4
    8 v 6
    7 v 5
    1 v 4
    2 v 3

    Round 5
    3 v 8
    4 v 2
    5 v 1
    6 v 7

    Round 6
    8 v 7
    1 v 6
    2 v 5
    3 v 4

    Round 7
    4 v 8
    5 v 3
    6 v 2
    7 v 1

    Matches against team 8 are byes.

    Use mirror image of these rounds for return fixtures.

    Am I missing something? I thought that these combinations represented two teams from the same venue?

  32. Which teams are complementary varies with how many teams you have. For 7 teams the following combinations never play at home at the same time: 1 and 5, 2 and 6, 3 and 7.

    Hope that helps!

  33. Hi,

    Thank goodness for a quick search on google – was about to sit down and write a fixture generator in PHP and now that I have found yours, I will be using it instead.

    Excellent job and thanks for sharing.

  34. Hi,

    First off, well done and thank you… this has really helped us out at this stage of our leagues!!

    I was just hoping however you would be able to help me with something…

    I am feeding ‘seeded’ teams into the generator. I.e. We have a system for judging who we think will end up winning the league, so they are ‘team1’ and the team that our system determines will come second will be ‘team2’ and so on.

    It would be fantastic if the last matches were between seeded teams number 1 and number 2, 3 and 4, 5 and 6, and so on…

    So that the last round is an climax for the leagues with the (estimated) TOP teams playing their last matches against their closest rivals! Making for very tense matches if the rivals are drawing or very close together on the league!!

    I am really keen to get this up and running in the next few days, any feedback and help would be really appreciated!! 😀

    I will post anything I develop back here!

    Thanks again!! 😀

  35. Hi Chris,

    I’m afraid I don’t know any way to have this happen algorithmically. I would just look at the last couple of weeks and slot your teams in based on who you want to be playing whom in those weeks. That’s the only thing I can think of I’m afraid. Let me know if you come up with anything any better.

  36. Thank you very much for your prompt reply!

    I will work away at the problem then report back!!

    Feel free to mull it over for a while then post any updated thoughts you have here… I will keep coming back here with updates and to check for feedback / input!


  37. Hi,

    It became clear as soon as I started doing this with ‘pieces of paper’ that it would be extremely difficult to make it happen programmatically…

    It would be a very nice project to work on for fun… using some type of goal seeking system like Genetic Algorithms… but it is far beyond my ‘bang for buck’ desire with this!

    The option I’ve gone for is switching round 2 and the final round. This is because no matter how many teams you generate fixtures for (2+ of course)… team 1 and team 2 play each other in round 2.

    Switching them is a VERY quick and simple way to get the two top seeded teams competing in a climatic end to the season!


    Thanks again!

    P.S. I will check back here for updates and feedback… I will also post here if I go down the goal seeking road!

    Thanks again for your time!!

  38. very well done you have taken the headache out of this enjoyable game of football(soccer)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.