node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



Minimalistic leaderboards for the ranking of non-unique usernames.

Every new name/score pair added to a leaderboard will generate a unique id associated with the transaction. This id can be stored and used to query additional information about the transaction at a later time.


npm install rank-me



var Leaderboard = require('rank-me');
var leaderboard = new Leaderboard('leaderboard_id', [options]);


  • host (default:
  • The host address of the redis server.
  • port (default: 6379)
  • The port of the redis server.
  • db (default: 0)
  • Select the specified redis DB.



Gets the total # of stores stored in the leaderboard.

leaderboard.getScoreCount(function(err, count) {
    // count - The # of scores in the leaderboard. 

addScore(name, score, callback)

Adds a score to the leaderboard for a given user name.
Names are not required to be unique. For every name/score that is added to the leaderboard, a unique entryId will be generated. This unique id is passed as a parameter to the callback of addScore. Using this unique id, information about the added score entry can be queried if desired.

leaderboard.addScore('Bob', 4, function(err, entryId) {
    // entryId - The unique id for the added score. 

getRank(entryId, callback)

Gets the rank for a given leaderboard entry.

leaderboard.getRank(entryId, function(err, rank) {
    // rank - The rank of the user, or -1 if it didn't exist. 

getScoresForRankRange(fromRank, toRank, callback)

Gets the names and scores for a given range of ranks.
Note that fromRank and toRank indices are both inclusive.

//   Get the top 3 ranks: 
leaderboard.getScoresForRankRange(0, 2, function(err, list) {
    // list - List of names ordered from highest to lowest score 
    // [ 
    //   { name: 'bob', rank: 0, score: 30 }, 
    //   { name: 'joe', rank: 1, score: 20 }, 
    //   { name: 'sue', rank: 2, score: 10 } 
    // ]