Estimate your FIDE rating

Calculate your ELO based on your or Lichess online ratings



  • Analyzed profiles of 100,000+ chess players
  • Created a linear regression model to calculate FIDE standard ratings from online ratings
  • Available for free for all users
Scatter plot showing how a linear regression model is created (animated GIF)
From initial dataset to model, Lichess/Blitz (animated GIF)

Online Rating vs. FIDE rating

Ever wondered what your FIDE rating would be? I've done the math for us and below I will explain the full process! Today, the ChessMonitor database contains information about more than 70 million games and 7 million players. I've used the data to find players that have entered their FIDE ranking and will use that data in addition to the FIDE list of players to create a model to predict the FIDE standard rating for players playing on or Lichess.

Data Gathering

The full process involved analyzing over 7 million player profiles. I executed the following steps

  • Limit the full list of users to those who have entered a FIDE rating
  • The data of these accounts was refreshed in March to have up-to-date information, result:

    • 31,420 users for
    • 69,677 users for Lichess
  • For each user, only time controls fullfilling the following requirements were considered:

    • Must have played at least 10 games.
    • The last game must not be older than one year.
    • The rating deviation must be smaller than 110.
    • Lichess only: The rating must be considered non-provisional.

This left me with the following datasets:

Time ControlChess.comLichess
Number of profiles in each dataset

Data Cleaning

For each of the datasets listed above, I then repeated the following steps.

  • Removed profiles with FIDE ratings above 2800 (there is only a single person above 2800). While officially there are no FIDE ratings below 1000, I left these values in as people might want to report their inofficial rating (after falling below 1000 or after playing against other rated players).
  • As a lot of users are obviously "guesstimating" their rating (the visual plateaus in the graph...), I removed all ratings ending with "00" (1000, 1100, 1200, etc.).
  • I then used a simple linear regression model to apply a corridor to filter out heavy outliers (mainly people exaggerating their ratings).

I repeated these step for each of the datasets. In the following I will exemplarily show the process for the biggest (the Lichess/Blitz dataset).

Matching with the official FIDE player list

In addition to the first dataset above, I created a second dataset that contains only accounts with a matched FIDE account. For this, I downloaded the official FIDE dataset of players (from March 2023) containing 1.2 million ranked players with rating, name and federation/country.

For each player with a unique name in the list, I tried to find a player in the database with a unique name and the federation matching their provided country (if provided). In addition, I filtered out all players who provided a FIDE rating (on the website) that was more than 100 points apart from their actual rating.

The resulting dataset is much smaller. As an example: The Lichess/Blitz dataset only contains 603 profiles (compared to 29,184 users in the cleaned dataset).

Model Creation

Based on the dataset, I was able to create a trendline via a simple linear regression model. Comparing the trendlines from the filtered dataset and from the accounts matched with official FIDE data shows how similar both are.

Scatter plot showing all steps including trend lines (animated GIF)
Steps with trend lines (animated GIF)

The model based on the real FIDE ratings has a r²=0.65 with a 95% confidence interval at ±118 meaning that the predictions ±118 should be correct for 95% of players.

The layed out process was repeated for all time controls and websites. The models I'm using on are based on the dataset matched against the offical FIDE ratings. Only in rare cases, where a dataset did not contain a sufficient number of points (like for the Lichess/Correspondence) I relied on the cleaned dataset.

See your rating

If you want to checkout your own rating, create yourself an account or visit your own page. I've created a visual component showing your estimate in a range from 0 to 2500.

05001000150020002500?Not enough data
Example how the rating is displayed

Weighted Rating Calculation

To give an overall FIDE rating estimate based on different time controls, will not include all time controls you have ever played but only the ones you have played in your past 100 games.

So, for each time control and website with at least 50 games, the latest rating is mapped to the corresponding FIDE value. After that, based on how much you played the time control on the website, the value is proportionately used to create the overall rating.

Example: If you have played 90 blitz games and 10 rapid games, your overall FIDE estimate will be created base on 90% of your blitz estimate and 10% of your rapid estimate.

The player page also shows a comparison value which is the average taken from your ratings 50 games ago (for each time control and website) even if that game is not in your list of your most 100 recent games.


Please keep in mind that the provided ratings are estimates! Especially, the correlations in faster time controls (like Bullet) have a great uncertainty and do not allow for a precise mapping to the FIDE standard rating. In addition, FIDE ratings can vary between countries and continents due to different player pools. Therefore, please interpret the provided rating as a rough estimate.

Previous Approaches

I'm not the first to do this. You can find previous attempts by others listed here:

As all approaches use very similar methodologies the overall results are quite similar to my results.

Feedback or ideas?

Thanks for reading! Do you have an official FIDE rating? I would be happy to hear if the estimate works for you! Also, if you have any feedback or ideas, feel free to reach out. I'm developing this website based on community feedback.

Things you can do right now:

  • Join the ChessMonitor community on reddit: r/chessmonitor
  • Subscribe to the newsletter below.
  • Wanna get in touch? Send me a mail!

ChessMonitor Blog

Want to get a mail when a new post is published?

At the current rate, a few times per year... I will never send you spam, I hate spam too.