Checked v0.7.10 · effectiveness() · 21 Oct 2026
PokéBonk Type Chart
I opened the damage function instead of the glossary, because they disagree. The glossary still says ×2, ×0.5, and ×0. The function in the v0.7.10 client does not. If you build a team off a main-series chart, your resists will feel too strong and your weaknesses too weak.
The multiplier I am quoting
For each chart value i, the code does r *= i >= 2 ? 1.35 : i === 0 ? 0.5 : i <= 0.5 ? 0.8 : 1. Then the result is clamped between 0.4 and 1.8. A standard “super effective” 2 becomes 1.35. A neutral 1 stays 1. A “not very effective” 0.5 becomes 0.8. An immunity 0 becomes 0.5, not zero.
Dual types apply the conversion separately and multiply. Two weaknesses give 1.35 × 1.35 = 1.8225, clamped to 1.8. Two resists give 0.64. An immunity plus a resist gives the 0.4 floor. The 18-by-18 table below converts every entry in the official types.json; rows are attacking types and columns are defending types. The matchup calculator also handles two defending types.
Why other pages show 2×
The glossary uses conventional effectiveness labels, but the current damage function converts the table before applying it. STAB is separate: the outgoing-hit code multiplies matching-type damage by 1.25, or 1.5625 for Adaptability. The chart omits STAB, items, weather and abilities. Incoming damage applies an additional 0.5–1.6 clamp around effectiveness, so 0.4 and 1.8 here describe the shared effectiveness function, not every final received-damage value.
Official data snapshot: v0.7.10 / mvgy3iyx / 2026-10-21
18-type effectiveness chart
| Attack / Defend | Normal | Fighting | Flying | Poison | Ground | Rock | Bug | Ghost | Steel | Fire | Water | Grass | Electric | Psychic | Ice | Dragon | Dark | Fairy |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Normal | 1× | 1× | 1× | 1× | 1× | 0.8× | 1× | 0.5× | 0.8× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× |
| Fighting | 1.35× | 1× | 0.8× | 0.8× | 1× | 1.35× | 0.8× | 0.5× | 1.35× | 1× | 1× | 1× | 1× | 0.8× | 1.35× | 1× | 1.35× | 0.8× |
| Flying | 1× | 1.35× | 1× | 1× | 1× | 0.8× | 1.35× | 1× | 0.8× | 1× | 1× | 1.35× | 0.8× | 1× | 1× | 1× | 1× | 1× |
| Poison | 1× | 1× | 1× | 0.8× | 0.8× | 0.8× | 1× | 0.8× | 0.5× | 1× | 1× | 1.35× | 1× | 1× | 1× | 1× | 1× | 1.35× |
| Ground | 1× | 1× | 0.5× | 1.35× | 1× | 1.35× | 0.8× | 1× | 1.35× | 1.35× | 1× | 0.8× | 1.35× | 1× | 1× | 1× | 1× | 1× |
| Rock | 1× | 0.8× | 1.35× | 1× | 0.8× | 1× | 1.35× | 1× | 0.8× | 1.35× | 1× | 1× | 1× | 1× | 1.35× | 1× | 1× | 1× |
| Bug | 1× | 0.8× | 0.8× | 0.8× | 1× | 1× | 1× | 0.8× | 0.8× | 0.8× | 1× | 1.35× | 1× | 1.35× | 1× | 1× | 1.35× | 0.8× |
| Ghost | 0.5× | 1× | 1× | 1× | 1× | 1× | 1× | 1.35× | 1× | 1× | 1× | 1× | 1× | 1.35× | 1× | 1× | 0.8× | 1× |
| Steel | 1× | 1× | 1× | 1× | 1× | 1.35× | 1× | 1× | 0.8× | 0.8× | 0.8× | 1× | 0.8× | 1× | 1.35× | 1× | 1× | 1.35× |
| Fire | 1× | 1× | 1× | 1× | 1× | 0.8× | 1.35× | 1× | 1.35× | 0.8× | 0.8× | 1.35× | 1× | 1× | 1.35× | 0.8× | 1× | 1× |
| Water | 1× | 1× | 1× | 1× | 1.35× | 1.35× | 1× | 1× | 1× | 1.35× | 0.8× | 0.8× | 1× | 1× | 1× | 0.8× | 1× | 1× |
| Grass | 1× | 1× | 0.8× | 0.8× | 1.35× | 1.35× | 0.8× | 1× | 0.8× | 0.8× | 1.35× | 0.8× | 1× | 1× | 1× | 0.8× | 1× | 1× |
| Electric | 1× | 1× | 1.35× | 1× | 0.5× | 1× | 1× | 1× | 1× | 1× | 1.35× | 0.8× | 0.8× | 1× | 1× | 0.8× | 1× | 1× |
| Psychic | 1× | 1.35× | 1× | 1.35× | 1× | 1× | 1× | 1× | 0.8× | 1× | 1× | 1× | 1× | 0.8× | 1× | 1× | 0.5× | 1× |
| Ice | 1× | 1× | 1.35× | 1× | 1.35× | 1× | 1× | 1× | 0.8× | 0.8× | 0.8× | 1.35× | 1× | 1× | 0.8× | 1.35× | 1× | 1× |
| Dragon | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 0.8× | 1× | 1× | 1× | 1× | 1× | 1× | 1.35× | 1× | 0.5× |
| Dark | 1× | 0.8× | 1× | 1× | 1× | 1× | 1× | 1.35× | 1× | 1× | 1× | 1× | 1× | 1.35× | 1× | 1× | 0.8× | 0.8× |
| Fairy | 1× | 1.35× | 1× | 0.8× | 1× | 1× | 1× | 1× | 0.8× | 0.8× | 1× | 1× | 1× | 1× | 1× | 1.35× | 1.35× | 1× |
Frequently asked questions
Is super effective 2× in PokéBonk?
No. A chart value of 2 becomes 1.35 in the damage function I read for v0.7.10.
Do immunities deal zero?
No. A chart value of 0 becomes 0.5 before the clamp.
Sources checked 2026-10-21
- PokéBonk public data: types.json · accessed 2026-10-21
- PokéBonk version.json · accessed 2026-10-21
- Official effectiveness(), outgoing STAB and incoming-damage clamp · accessed 2026-10-21