At Rankémon, we believe the best rankings balance popularity, performance, and fan dedication. Our custom algorithm evaluates both Pokémon and Trainer performance daily using a combination of engagement and outcome-based signals — all normalized to create a fair leaderboard.
Each Pokémon is ranked based on their performance in daily matchups and long-term popularity. Even if a Pokémon doesn’t appear on a given day, we use aggregate history to keep rankings active and accurate.
(wins + 1) / (matchups + 2)
compositeScore = round( (adjustedWinRate * 0.40) + (votesPerAppearance * 0.25) + (normalizedVotes * 0.30) + (favorites * 0.05), 2 );
Scores are normalized between 0 and 1. We use competition ranking: tied Pokémon share a rank, and the next rank skips accordingly.
Trainer rankings reward participation, consistency, and smart picks. Each day, we normalize key performance and engagement stats across all active Trainers to generate a fair composite score.
compositeScore = round( (normalizedVotes * 0.15) + (adjustedWinRate * 0.25) + (normalizedFavorites * 0.15) + (normalizedCurrentStreak * 0.20) + (normalizedMaxStreak * 0.15) + (normalizedCaught * 0.10), 4 );
Like Pokémon, Trainer scores are normalized between 0 and 1. This creates a level playing field across engagement types.
We take daily snapshots of every Pokémon and Trainer, regardless of activity that day. This ensures consistent rank tracking and allows us to show history, trends, and progress on your profile.
Normalized metrics make sure everyone competes fairly, while adjusted scores give newcomers a competitive start.