Table of Contents

Chess - Programming - Rating - Conversions

The formulae to convert from one rating system to another have changed over the years in an attempt to make them more accurate.

The below formulae are mine, sometimes following official specs but occasionally altering slightly when deemed more accurate.


ecf to elo

return unsigned((ecf * 7.5) + 700);

elo to ecf

return unsigned((elo - 700) / 7.5);

elo to uscf

if (elo <= 1886)
  return unsigned(elo/0.75) - 570;
else
if (elo <= 2000)
  return 180 + unsigned(0.94 * elo);
else
  return 20 + unsigned(1.02 * elo);

elo to uscf (for Juniors)

If an event is known to be a youth event, such as the World Youth Championships, then the following conversion is used for all opponents:

if (elo <= 2000)
  return 560 + unsigned(0.74 * elo);
else
  return 80 + unsigned(1.0 * elo);

uscf to elo

if (uscf > 2060)
  return unsigned((uscf - 180) / 0.94);
else
if (uscf > 1945)
  return unsigned((uscf - 20) / 1.02);
else
  return unsigned(0.75 * 570) + uscf;