Glicko2 rating system

Usage no npm install needed!

<script type="module">
  import serpentineGlicko2 from 'https://cdn.skypack.dev/@serpentine/glicko2';



A javascript implementation of the glicko2 rating system.


Existing javascript implementations seemed to be either outdated, overly complicated, or extremely inefficient (lots of recalculated values). This package is meant to solve these problems. The package itself is tiny (< 100 SLOC), has no dependencies, and is extremely readable (it should be quite easy to read the source code side-by-side with the official specs).


npm install @serpentine/glicko2

Note: This package was mainly created for Serpentine, but should be useable anywhere.


const glicko2 = require('glicko2');

// Object represention of a player whose rating we want to update
const player = {
  rating: 1500,
  rd: 200,
  volatility: 0.06,

// Initialize the System Constant (tau) and Convergence Tolerance (epsilon)
// This example shows the defaults.
  systemConstant: 0.3,
  convergenceTolerance: 0.000001,

// Update the player based on a batch of results (the rating period).
// This updates the player object in place.
glicko2.update(player, [
    rating: 1400,
    rd: 30,
    score: 1,
    rating: 1550,
    rd: 100,
    score: 0,
    rating: 1700,
    rd: 300,
    score: 0,