Skip to content

PvP IV Ranker

Hails edited this page Jul 1, 2026 · 2 revisions

PvP IV Ranker

The PvP IV Ranker at /pvp finds the best IV spreads for a Pokemon in each GO Battle League format. Unlike raids, where pure attack wins, league play caps CP, so lower attack IVs often allow a higher level and a better overall stat product. Search a Pokemon and the tool ranks every possible IV combination for the league you picked.

Using the page

Three league tabs sit at the top:

  • Great League: 1500 CP cap
  • Ultra League: 2500 CP cap
  • Master League: no cap

Type a Pokemon name (for example "Azumarill") and press Show IV Rankings or hit Enter. The result shows the Pokemon's sprite, genus, Pokedex flavor text, and a Legendary or Mythical badge where it applies, followed by a ranked table.

Each row of the table is one IV spread: rank, the attack, defense, and stamina IVs, the best level that spread can reach while staying under the league cap, the CP at that level, and the stat product. The number one spread gets a gold highlight and ranks 2 through 10 a silver one. The table shows the top 25 spreads out of all 4,096 combinations (16 x 16 x 16), with a note telling you how many were ranked.

For Master League there is no cap, so 15/15/15 at the maximum level always wins; the table is mostly useful for seeing how little the lower spreads give up.

Under the hood

Everything is computed client side in ts/pvp.ts from the PoGoAPI base stats and CP multiplier table (see Data-Sources).

CP formula. With each stat scaled by the level's CP multiplier (atk = (baseAtk + ivAtk) * cpm, and likewise for def and sta):

CP = max(10, floor(atk * sqrt(def) * sqrt(sta) / 10))

This is algebraically the familiar floor((baseAtk + iv) * sqrt(baseDef + iv) * sqrt(baseSta + iv) * cpm^2 / 10) form, since the three multipliers combine into cpm^2 under the square roots.

Best level. For each IV spread, the ranker walks the CP multiplier table in level order and keeps the highest level whose CP stays at or under the cap.

Stat product, the ranking metric:

statProduct = (baseAtk + ivAtk) * cpm * (baseDef + ivDef) * cpm * floor((baseSta + ivSta) * cpm)

Attack and defense stay fractional, but stamina is floored because the game floors HP; two spreads with slightly different stamina can therefore tie at the same HP breakpoint.

All 4,096 IV combinations are evaluated, sorted by stat product descending, and assigned ranks before the top 25 are rendered. The league tabs are lazy: each panel is built on first activation by the shared tab helper in ts/shared/tabs.ts (see Frontend-Guide).

Clone this wiki locally