How rankings are calculated

Every score on this site — attackers, defenders, per-type lists, and counters — comes from the same estimator. This page explains it, what it assumes, and exactly where its numbers come from.

What this measures

Each score is an estimated cycle damage-per-second (DPS): how much damage a Pokémon's best fast + charged moveset deals per second, averaged over one full attack cycle. It is not a battle simulation — no dodging, no shields, no opposing moveset, no HP tracking. It is a comparative estimate for ranking Pokémon against each other, the same honesty framing used on every rankings and counters page.

The formula, worked

This is the current #1 Top Attacker, Eternatus, worked step by step:

Poison Jab + Dynamax Cannon

9.2
Moves to chargeceil(charged energy ÷ fast energy)n = 12
Cycle time12 × fast duration + charged duration13.5s
STABPoison Jab: own type, ×1.2 · Dynamax Cannon: own type, ×1.2
Cycle damage12 × fast power × fast mod + charged power × charged mod445.2
Final score278 × 445.2 ÷ 13500ms = 9.2

What changes across contexts

The same formula runs in four contexts — only the target-type list and a bulk multiplier change:

ContextMovesetTarget typesExtra step
Attacker rating / Top AttackersEvery movesetNone (neutral)
Defender rating / Top DefendersEvery movesetNone (neutral)× bulk factor (√(Defense × Stamina) ÷ 100)
Best by type / type rankingsRestricted to one typeNone (neutral)
CountersEvery movesetThe target's own typesReal effectiveness multiplier per move

What the score does not account for

The formula never applies a CP Multiplier or a level. It uses each Pokémon's raw base Attack stat directly, so scores are proportional to base stats, not an absolute DPS figure at any specific level. They will not match a level-scaled DPS calculator's output — they're built to compare Pokémon against each other, not to predict real battle damage.

Where the data comes from

Base Attack, Defense, and Stamina come straight from PoGoAPI's own published GO base stats (its pokemon_stats data) — pogo-db copies them through unchanged. Every move's power, energy cost, and cast time come from PoGoAPI's move data the same way. The only computation pogo-db performs on top of these numbers is the score formula itself, described above.

Full attribution: Pokémon data and artwork from PokéAPI. Pokémon GO data from PoGoAPI.

What's not modeled

No weather boost, no friendship/buddy bonus, no dodge timing, no opponent moveset or shield behavior. Treat every score here as a ranking signal, not a battle outcome.