# Is there any software or web service for club-level Elo ratings?

Is there any software (or web-based service) that allows you to keep track of local, club-level Elo ratings?

These ratings would not have any connection with official Elo ratings, it would be just an Elo rating within the universe of players in a club (i.e. games in various social tournaments would compute for the rating).

• That's an interesting idea for a project. – Eve Freeman Sep 25 '12 at 21:19
• I did it by hand for our local club. Almost as easy as entering data into a program to do the work. – yobamamama Jan 9 '20 at 0:44

## 9 Answers

Even if it is not available, something like this is not too hard to implement yourself. Here is an example with extremely silly and simple rating system that is just meant to give you an idea. But I don't think that using actual Elo formula that much harder.

EDIT: I edit my implementation to use Elo formula (not including floors) given by the formula here

def get_exp_score_a(rating_a, rating_b):
return 1.0 /(1 + 10**((rating_b - rating_a)/400.0))

def rating_adj(rating, exp_score, score, k=32):
return rating + k * (score - exp_score)

class ChessPlayer(object):
def __init__(self, name, rating):
self.rating = rating
self.name = name
def match(self, other, result):

exp_score_a = get_exp_score_a(self.rating, other.rating)

if result == self.name:
self.rating = rating_adj(self.rating, exp_score_a, 1)
other.rating = rating_adj(other.rating, 1 - exp_score_a, 0)
elif result == other.name:
self.rating = rating_adj(self.rating, exp_score_a, 0)
other.rating = rating_adj(other.rating, 1 - exp_score_a, 1)
elif result == 'Draw':
self.rating = rating_adj(self.rating, exp_score_a, 0.5)
other.rating = rating_adj(other.rating, 1 - exp_score_a, 0.5)


This works as follows:

>>> bob = ChessPlayer('Bob', 1600)
>>> john = ChessPlayer('John', 1900)
>>> bob.rating
1600
>>> john.rating
1900
>>> bob.match(john, 'Bob')
>>> bob.rating
1627.1686541692377
>>> john.rating
1872.8313458307623
>>> mark = ChessPlayer('Mark', 2100)
>>> mark.match(bob, 'Draw')
>>> mark.rating
2085.974306956907
>>> bob.rating
1641.1943472123305


Here is my original python implementation:

class ChessPlayer(object):
def __init__(self, name, rating):
self.rating = rating
self.name = name
def match(self, other, result):
if result == self.name:
self.rating += 10
other.rating -= 10
elif result == other.name:
self.rating += 10
other.rating -= 10
elif result == 'Draw':
pass


This works as follows:

>>> bob = ChessPlayer('Bob', 1600)
>>> john = ChessPlayer('John', 1900)
>>> bob.match(john, 'Bob')
>>> bob.rating
1610
>>> john.rating
1890
>>> mark = ChessPlayer('Mark', 2100)
>>> mark.match(bob, 'Mark')
>>> mark.rating
2110
>>> bob.rating
1600
>>> mark.match(john, 'Draw')
>>> mark.rating
2110
>>> john.rating
1890

• I think Elo is possibly just as simple as that. :) – Eve Freeman Sep 25 '12 at 21:17
• Nice. If the OP wanted to modify this with, say, the actual USCF rating algorithm, the mathematical details are available in Section 2 of this document: glicko.net/ratings/rating.system.pdf – ETD Sep 25 '12 at 21:32
• Thanks, but I got really curios and implemented the Elo formula myself :). – Akavall Sep 25 '12 at 21:57
• For a small universe such as chess club, I think it is best that there are no floors, otherwise you would get soon inflation if very weak players play a lot. – Pep Sep 26 '12 at 11:52
• for local club ratings all the complexity of elo glicko whatever are just not going to add any real benefit – yobamamama Jan 9 '20 at 0:45

It seems that rankade, our ranking system for sports, games, and more, fits your needs.

It's free to use and it's designed to manage rankings (and stats, including matchup stats, and more) for small to large groups of players.

Rankade doesn't use Elo, but its algorithm (called ree algorithm), although more complex (here's a comparison between most known rating system, including Elo, Glicko and TrueSkill), is similar to Elo if you play 1-on-1 matches only.

• very cool webapp! – andras Dec 18 '15 at 12:33
• I have tried it and it seems suits my needs; Simple, clean, can add players after a match has started. I would like to suggest that allow user to custom CSS. Just made available a textarea (or contenteditable div) for user to paste their CSS – Coisox Dec 18 '19 at 8:52

I just downloaded and played around with a lightweight freeware item for Windows called ELORater that seems to provide what you're after. You can create a "group" for your club, and then add players to the group, along with whatever initial ratings you want them to have. Then you can just input the results of any games that get played and the program maintains an updated list of player ratings for you.

• is it still online? – Aubrey Nov 4 '15 at 10:57

The free Excel add-in Chess Ranking Assistant found at https://www.add-ins.com/free-products/chess-ranking-assistant.htm uses the glicko system and is menu driven for easy of use. It is designed for chess clubs

If anyone is still looking for something like this, I've build a fairly simple one here: https://github.com/richardadalton/EloRate

At the moment you'll have to host it yourself, but I may offer a hosted service in the future.

-Rd

I recently built https://sortmatch.ca to do this kind of thing. It uses Glicko2 instead of Elo, but the effect is roughly equivalent.

http://elorankings.com

Allows you to create custom elo rankings and control certain parameters. Mostly used by video game communities but can be done to create rankings and manage elo ratings for anything. Very easy to use. Keeps complete match history and allows you to individually see a players history, W-L, and how their score changed per match. I use it for a smash tournament I run every week: http://elorankings.com/rankings.aspx?id=1

• Site seems to be down or not live anymore – andrewb Aug 3 '18 at 6:11

Yeah sure, you can take a look at http://www.chessfiles.com/chess-software.html

The Irish Chess Union has its rating web application fully released as Open Source and it's available on GitHub: https://github.com/ninkibah/icu_ratings_app