How type multipliers combine
Every attacking type has a fixed multiplier against every defending type: 2×, ½×, 1× or 0×. For a Pokémon with two types, those multipliers are multiplied together, not averaged. That single rule explains every defensive profile in the game:
- Two weaknesses stack into a 4× hit — Water/Ground takes 4× from Grass, and Ground/Flying takes 4× from Ice.
- A weakness cancelled by a resistance becomes a 1× hit — Fire's weakness to Water disappears on a Water type.
- An immunity beats everything: 0× from any source stays 0×, no matter what the other type does.
Dual types are therefore not "more weaknesses". They are a reshuffle: some threats get worse, others get neutralised, and a resist that lands on a weakness is worth far more than a resist on a neutral type.
Reading a defensive profile properly
Counting weaknesses alone is a trap. The three numbers that matter are the count of weaknesses, the count of resistances, and whether any of those resistances are immunities. A profile with two weaknesses and nine resistances is a wall; the same two weaknesses with four resistances is fragile in practice.
Compare three well-known combinations:
- Fire — three weaknesses (Water, Ground, Rock), six resistances, no immunity. Solid offensively, fragile defensively, and the Rock weakness is the one that ends games.
- Steel / Fairy — two weaknesses (Fire, Ground) against nine resistances and two immunities (Poison, Dragon). That immunity to Dragon is the reason the combination defines entire metagames.
- Water / Ground — a single weakness to Grass, and an immunity to Electric. That immunity is worth more than most resistances, because it turns a common attacking type into a free switch.
Nothing else about a Pokémon changes these multipliers. Ability and held item are separate layers, and the calculator deliberately reports the type chart alone so the two are not confused.
The offensive side, which is often forgotten
The same chart read from the other direction tells you what a type is worth as an attacker. Two figures decide whether a defensive type is really a safe switch-in: how many types resist it, and how many it cannot touch at all.
Normal is the extreme case — no super-effective hits at all, and a complete immunity against Ghost. That is why Normal coverage is usually paired with a second attacking type rather than used alone. Compare Ground, which hits five types super effectively and can only be stopped by Flying and the occasional Levitate.
When you build a coverage set of four moves, the goal is to minimise the number of types that resist all of them at once. The calculator gives you the raw per-type data; combining two or three attacking types to leave no gaps is the next step.
Where the data comes from
The type chart is not estimated or copied from another calculator. All eighteen attacking types were fetched from PokéAPI, which publishes the official damage relations for every matchup — the double damage, half damage and no damage lists. The 18 × 18 matrix on this page is built directly from those responses, and a spot check of twelve publicly well-known matchups (Fire beats Grass, Electric cannot touch Ground, Normal cannot touch Ghost, Dragon is immune to Fairy's mirrors, and so on) was run against the generated data before publishing.
Sources and standards
Where these figures come from
Every constant and formula on this page was taken from the published reference below and re-checked before it was published.
- PokéAPI — the official damage relations for all eighteen types, used to build the chart on this page.
- The Pokémon Company — type assignments for species, which are what the two-type selection here represents.
- Bulbapedia — the type chart written out, used as an independent cross-check of the API data.
Every type at a glance
Counted straight from the chart data used by the calculator above, so these figures cannot drift from the tool:
| Defending type | Weaknesses | Resistances | Immunities |
|---|---|---|---|
| Normal | 1 | 0 | 1 |
| Fire | 3 | 6 | 0 |
| Water | 2 | 4 | 0 |
| Electric | 1 | 3 | 0 |
| Grass | 5 | 4 | 0 |
| Ice | 4 | 1 | 0 |
| Fighting | 3 | 3 | 0 |
| Poison | 2 | 5 | 0 |
| Ground | 3 | 2 | 1 |
| Flying | 3 | 3 | 1 |
| Psychic | 3 | 2 | 0 |
| Bug | 3 | 3 | 0 |
| Rock | 5 | 4 | 0 |
| Ghost | 2 | 2 | 2 |
| Dragon | 3 | 4 | 0 |
| Dark | 3 | 2 | 1 |
| Steel | 3 | 10 | 1 |
| Fairy | 2 | 3 | 1 |
The spread is wider than most players assume. grass carries 5 weaknesses as a single type, the most on the chart, while steel leads on resistances with 10 plus 1 immunity. Those counts only cover single types — pairing two types reshuffles the whole profile, which is what the calculator is for.
Three mistakes worth avoiding
- Adding weakness counts instead of multiplying multipliers. Two types with a shared weakness do not give "two weaknesses" — they give one 4× weakness, which is far worse than two separate 2× ones because a single resisted hit becomes a knockout.
- Treating a resistance as a safe switch. A ½× hit still deals damage and still carries secondary effects. Only 0× stops the move entirely, which is why immunities define defensive cores.
- Forgetting that the chart is only the first layer. Ability and item change the damage calculation on top of these multipliers. A type profile tells you the baseline, not the final number.