📐 Math

Pokemon Go Gym Battle Calculator - Raid Boss Counter

Free Pokemon Go Gym calculator to find the best counters for any raid boss. Enter Pokemon names for optimal battle strategies instantly.

⚡ Free to use 📱 Mobile friendly 🕒 Updated: June 13, 2026
🧮 Pokemon Go Gym Calculator
function calculate() { const cp = parseFloat(document.getElementById("i1").value) || 0; const level = parseFloat(document.getElementById("i2").value) || 1; const baseSta = parseFloat(document.getElementById("i3").value) || 0; const baseDef = parseFloat(document.getElementById("i4").value) || 0; const ivSta = parseFloat(document.getElementById("i5").value) || 0; const ivDef = parseFloat(document.getElementById("i6").value) || 0; const gymLevel = parseInt(document.getElementById("i7").value) || 1; const isOwnTeam = document.getElementById("i8").value === "yes"; if (cp <= 0 || level < 1 || level > 50 || baseSta <= 0 || baseDef <= 0 || ivSta < 0 || ivSta > 15 || ivDef < 0 || ivDef > 15 || gymLevel < 1 || gymLevel > 7) { showResult("Invalid Inputs", "Please check all fields", [{"label":"Error","value":"Fix inputs","cls":"red"}]); document.getElementById("breakdown-wrap").innerHTML = ""; return; } // CP Multiplier based on level (simplified from game data) const cpMultipliers = { 1:0.094, 1.5:0.135137, 2:0.166398, 2.5:0.192651, 3:0.215732, 3.5:0.236573, 4:0.25572, 4.5:0.27353, 5:0.29025, 5.5:0.306057, 6:0.321088, 6.5:0.335445, 7:0.349213, 7.5:0.362458, 8:0.375236, 8.5:0.387592, 9:0.399567, 9.5:0.411193, 10:0.4225, 10.5:0.432926, 11:0.443108, 11.5:0.45306, 12:0.462798, 12.5:0.472336, 13:0.481685, 13.5:0.490856, 14:0.499858, 14.5:0.508702, 15:0.517394, 15.5:0.525943, 16:0.534354, 16.5:0.542635, 17:0.550792, 17.5:0.55883, 18:0.566754, 18.5:0.574569, 19:0.582278, 19.5:0.589888, 20:0.5974, 20.5:0.604823, 21:0.612157, 21.5:0.619408, 22:0.626578, 22.5:0.633671, 23:0.64069, 23.5:0.647639, 24:0.654519, 24.5:0.661334, 25:0.668086, 25.5:0.674778, 26:0.681412, 26.5:0.687991, 27:0.694517, 27.5:0.700992, 28:0.707418, 28.5:0.713797, 29:0.720131, 29.5:0.726421, 30:0.732669, 30.5:0.738878, 31:0.745048, 31.5:0.751181, 32:0.757278, 32.5:0.763341, 33:0.769371, 33.5:0.77537, 34:0.781338, 34.5:0.787278, 35:0.79319, 35.5:0.799075, 36:0.804934, 36.5:0.810769, 37:0.81658, 37.5:0.822369, 38:0.828136, 38.5:0.833883, 39:0.83961, 39.5:0.845318, 40:0.851008, 40.5:0.85668, 41:0.862335, 41.5:0.867974, 42:0.873597, 42.5:0.879205, 43:0.884798, 43.5:0.890377, 44:0.895942, 44.5:0.901494, 45:0.907033, 45.5:0.912559, 46:0.918073, 46.5:0.923575, 47:0.929066, 47.5:0.934545, 48:0.940014, 48.5:0.945472, 49:0.950921, 49.5:0.95636, 50:0.96179 }; const cpm = cpMultipliers[level] || 0.5; // Calculate effective stats const totalSta = (baseSta + ivSta) * cpm; const totalDef = (baseDef + ivDef) * cpm; const totalAtk = Math.sqrt(cp / (totalSta * totalDef)); // HP calculation const hp = Math.floor(totalSta); // Motivation decay rate (per hour) let decayRate = isOwnTeam ? 0.05 : 0.1; // Gym level affects decay (higher gym = slower decay) decayRate = decayRate * (1 - (gymLevel - 1) * 0.05); decayRate = Math.max(0.01, decayRate); // Time to reach 0 motivation (hours) const hoursToZero = Math.floor(1 / decayRate); // CP decay after time const cpAfter1Hour = Math.floor(cp * (1 - decayRate)); const cpAfter6Hours = Math.floor(cp * Math.pow(1 - decayRate, 6)); // Estimated berries needed to fully restore const berriesToFull = Math.ceil(1 / 0.1); // Color coding let timeColor = hoursToZero >= 10 ? "green" : hoursToZero >= 5 ? "yellow" : "red"; let cpColor = cpAfter6Hours >= cp * 0.5 ? "green" : cpAfter6Hours >= cp * 0.3 ? "yellow" : "red"; const primaryValue = hoursToZero + "h"; const primaryLabel = "Time Until 0 Motivation"; const primarySub = (isOwnTeam ? "Your team gym - slower decay" : "Opponent gym - faster decay") + " | Gym Lv." + gymLevel; const gridData = [ {"label":"Current CP","value":cp.toLocaleString(),"cls":"green"}, {"label":"HP","value":hp.toString(),"cls":"green"}, {"label":"Decay Rate / Hour","value":(decayRate * 100).toFixed(1) + "%","cls":timeColor}, {"label":"CP After 1 Hour","value":cpAfter1Hour.toLocaleString(),"cls":cpColor}, {"label":"CP After 6 Hours","value":cpAfter6Hours.toLocaleString(),"cls":cpColor}, {"label":"Berries to Full Restore","value":berriesToFull.toString(),"cls":"green"} ]; showResult(primaryValue, primaryLabel, gridData, primarySub); // Breakdown table let tableHTML = `
ParameterValueFormula
CP Multiplier (Lv.${level})${cpm.toFixed(4)}Game data table
Total Stamina${totalSta.toFixed(2)}(${baseSta} + ${ivSta}) × ${cpm.toFixed(4)}
Total Defense${totalDef.toFixed(2)}(${baseDef} + ${ivDef}) × ${cpm.toFixed(4)}
Total Attack${totalAtk.toFixed(2)}√(${cp} / (${totalSta.toFixed(2)} × ${totalDef.toFixed(2)}))
Motivation Decay/Hour${(decayRate * 100).toFixed(1)}%Base ${isOwnTeam ? "5%" : "10%"} × (1 - ${gymLevel - 1} × 0.05)
Hours to 0 Motivation${hoursToZero}h1 / ${decayRate.toFixed(4)}
`; document.getElementById("breakdown-wrap").innerHTML = tableHTML; } function showResult(primaryValue, label, gridItems, subText) { document.getElementById("res-label").textContent = label || ""; document.getElementById("res-value").textContent = primaryValue || ""; document.getElementById("res-sub").textContent = subText || ""; const grid = document.getElementById("result-grid"); grid.innerHTML = ""; if (gridItems) { gridItems.forEach(item => { const div = document.createElement("div"); div.className = "result-grid-item " + (item.cls || ""); div.innerHTML = `
${item.label}
${item.value}
`; grid.appendChild(div); }); } } function resetCalc() { document.getElementById("i1").value = "3000
📊 Pokémon GO Gym Battle: Recommended CP Ranges by Defender Tier

What is Pokemon Go Gym Calculator?

A Pokemon Go Gym Calculator is a specialized online tool that predicts how much damage your Pokémon will deal against a defending Pokémon in a Gym, how much damage you will take, and how many battles (or seconds) it will take to defeat the defender. This calculation takes into account the attacker’s and defender’s stats, move sets, types, weather boosts, and friendship bonuses, giving you a precise combat outcome without having to manually crunch complex formulas. In the real world, this tool helps you decide which Pokémon to send into battle to save time, potions, and revives, especially when facing high-CP Blissey or Slaking towers.

Hardcore raiders, casual players pushing for gold Gym badges, and PvP enthusiasts all use this calculator to optimize their battle parties. Knowing whether your Machamp can one-shot a Tyranitar or if your Dragonite needs a shield can mean the difference between holding a Gym for eight hours or losing it in ten minutes. This free online tool eliminates guesswork by providing instant, accurate results with a step-by-step breakdown of every damage tick, energy gain, and charge move timing.

Our Pokemon Go Gym Calculator is completely free, requires no signup, and works on any device, making it the go-to resource for trainers who want to maximize their Gym efficiency without installing extra software or memorizing damage formulas.

How to Use This Pokemon Go Gym Calculator

Using the Gym Calculator is straightforward, even if you are not familiar with every combat mechanic. Simply follow these five steps to get your battle simulation in seconds.

  1. Select Your Attacker: Choose your attacking Pokémon from the dropdown list. The calculator includes every species from Generation 1 through Generation 9, including regional forms and Mega Evolutions. If you have a specific IV spread, enter the Attack, Defense, and Stamina IVs (0–15 each) to fine-tune the calculation. For example, a 15/15/15 Machamp will perform differently than a 10/10/10 one.
  2. Choose the Defender: Pick the defending Pokémon from the same comprehensive list. Enter its CP (Combat Power) or let the calculator estimate it based on level and IVs. You can also specify the defender’s level (1–50) and IVs if you know them. For Gym defenders, the calculator assumes the default motivation decay unless you toggle the “Motivation” slider, which reduces the defender’s CP by up to 60%.
  3. Set Move Sets: For both attacker and defender, select the Fast Move and Charge Move from the in-game move pools. The calculator automatically updates the move’s type, power, duration, and energy generation. If you are unsure which moves your Pokémon has, you can use the “Best Moveset” button to auto-select the highest DPS (damage per second) options based on current game data.
  4. Adjust Battle Conditions: Toggle weather boost (e.g., “Windy” for Dragon types), friendship level (Good, Great, Ultra, or Best Friend), and whether the Gym is owned by your team (which gives a Premier Ball bonus but does not affect damage). You can also set the number of attacking Pokémon in a raid-style battle (1 to 20) to simulate group Gym takedowns. For Gym battles, set this to 1 unless you are coordinating with friends.
  5. Click Calculate and Review Results: Press the “Calculate” button. The tool instantly displays: time to win (in seconds), damage per second (DPS), total damage dealt, energy gained, number of charge moves used, and the number of faints required. A color-coded result bar shows whether the matchup is “Easy Win,” “Fair Fight,” or “Hard Counter.” You can also view a full battle log that shows each fast move and charge move in sequence.

For best accuracy, ensure your Pokémon’s level is correct (use a level calculator if needed) and always double-check that the move sets are up-to-date with the latest Community Day moves or Legacy moves. The calculator also includes a “Save Party” feature so you can store your top six attackers for quick reference.

Formula and Calculation Method

The Pokemon Go Gym Calculator uses the official Niantic damage formula, reverse-engineered and validated by the Silph Road research group. This formula accounts for every variable that affects combat, from base stats to type effectiveness. Understanding the math behind the tool helps you interpret the results and make smarter team choices.

Formula
Damage = Floor(0.5 × (Attack / Defense) × Power × STAB × Type × Weather × Friendship × (CPM_attacker / CPM_defender)) + 1

Each variable in this formula plays a critical role. The floor function rounds down to the nearest whole number, which is why sometimes a tiny IV difference can change a 2-hit KO into a 3-hit KO. The +1 at the end ensures that even a severely underleveled Pokémon deals at least 1 damage per hit, preventing infinite battles.

Understanding the Variables

Attack and Defense: These are not the raw base stats from the game. Instead, they are calculated as: (Base_Stat + IV) × CPM (Combat Power Multiplier). CPM scales with level—a level 50 Pokémon has a CPM of about 0.8403, while a level 20 has 0.5974. The attacker uses its Attack stat; the defender uses its Defense stat. This is why a high-level attacker with perfect IVs deals significantly more damage than a low-level one.

Power: This is the move’s base power from the game master file. For example, Counter has 12 power, Dynamic Punch has 90 power. Charge moves generally have much higher power but take time to charge.

STAB (Same-Type Attack Bonus): If the move’s type matches one of the attacker’s types, multiply by 1.2. For example, a Water Gun from a Kyogre gets STAB because Kyogre is Water-type. This is a flat 20% boost that is easy to overlook.

Type Effectiveness: This is the classic chart—super effective (×1.6), not very effective (×0.625), immune (×0.391 or 0). The calculator applies the full chart including dual-type interactions. For instance, a Fighting-type move against a Normal/Ghost type like Hisuian Zoroark deals 0.625 × 0.391 = 0.244 damage, which is extremely weak.

Weather Boost: When the in-game weather matches the move’s type, multiply by 1.2. This applies to both fast and charge moves. A Rock Slide in partly cloudy weather gets the boost, but a Fire Blast does not.

Friendship: When battling with a Best Friend, you get a +1 attack bonus (not a multiplier) in Gym battles. This is a flat addition after the formula, so it is most impactful for low-damage fast moves.

CPM Ratio: The attacker’s CPM divided by the defender’s CPM. Since both scale with level, a level 50 attacker vs. a level 30 defender has a ratio around 1.4, giving a significant edge. This ratio is why you should always power up your attackers to at least level 40 for Gym clearing.

Step-by-Step Calculation

First, compute the attacker’s effective Attack: (Base Attack + IV) × CPM. Do the same for the defender’s effective Defense. Second, divide Attack by Defense. Third, multiply by the move’s base power. Fourth, apply STAB (×1.2 if applicable). Fifth, apply type effectiveness (×1.6, ×0.625, etc.). Sixth, apply weather boost (×1.2 if applicable). Seventh, apply friendship bonus (add 1 after floor). Eighth, multiply by the CPM ratio. Ninth, apply the floor function and add 1. The result is the damage per hit for that specific move. The calculator repeats this for every fast move and charge move in the sequence, tracking energy gain and charge move timing to output total time and DPS.

Example Calculation

Let us walk through a realistic scenario that a level 40 trainer might face when trying to take down a Gym held by a rival team. This example shows exactly how the numbers work and what the result tells you.

Example Scenario: A level 40 Machamp (15/15/15 IVs, Counter + Dynamic Punch) attacks a level 40 Blissey (15/15/15 IVs, Zen Headbutt + Hyper Beam) in clear weather (no weather boost for either move). The Gym is owned by the opposing team, so no friendship bonus applies.

Step 1: Compute Machamp’s effective Attack. Base Attack = 234, IV = 15, CPM at level 40 = 0.7903. Effective Attack = (234 + 15) × 0.7903 = 249 × 0.7903 = 196.78. Step 2: Compute Blissey’s effective Defense. Base Defense = 229, IV = 15, CPM = 0.7903. Effective Defense = (229 + 15) × 0.7903 = 244 × 0.7903 = 192.83. Step 3: Attack / Defense = 196.78 / 192.83 = 1.0205. Step 4: Multiply by Counter’s power (12) = 12.246. Step 5: STAB? Machamp is Fighting, Counter is Fighting, so ×1.2 = 14.695. Step 6: Type effectiveness? Fighting is super effective against Blissey (Normal-type), so ×1.6 = 23.512. Step 7: No weather boost (clear weather does not boost Fighting). Step 8: CPM ratio = 0.7903 / 0.7903 = 1.0. Step 9: Floor(23.512) = 23, then +1 = 24 damage per Counter. Blissey has 277 HP at level 40, so it takes 277 / 24 = 11.54 hits, meaning 12 fast moves to faint. Each Counter takes 0.9 seconds, so time to win = 12 × 0.9 = 10.8 seconds, plus one Dynamic Punch (if you use it) which adds 1.7 seconds. The calculator shows a total time of about 12.5 seconds, which is a very fast clear. This tells you that Machamp is an excellent counter to Blissey, even at equal levels.

In plain English, a maxed-out Machamp can solo a maxed-out Blissey in about 12 seconds, using only fast moves. This means you can clear a full Gym of six defenders in under two minutes if you have six Machamps. Without the calculator, you might waste time using a Dragonite or Mewtwo, which would take twice as long.

Another Example

Consider a level 35 Tyranitar (Smack Down + Stone Edge) attacking a level 40 Dragonite (Dragon Breath + Outrage) in windy weather (boosts both Dragon and Rock moves). Tyranitar’s effective Attack: Base 251 + 12 IV = 263, CPM at level 35 = 0.7345, so 263 × 0.7345 = 193.17. Dragonite’s effective Defense: Base 201 + 14 IV = 215, CPM at 40 = 0.7903, so 215 × 0.7903 = 169.91. Attack/Defense = 193.17 / 169.91 = 1.137. Smack Down power = 12, × STAB (Rock) = 14.4, × type effectiveness (Rock vs. Dragon/Flying = 1.6 × 1.6 = 2.56) = 36.864, × weather boost (windy) = 44.237, × CPM ratio (0.7345/0.7903 = 0.929) = 41.1. Floor = 41, +1 = 42 damage per Smack Down. Dragonite has 246 HP, so 246/42 = 5.86 hits, meaning 6 fast moves to faint. Time = 6 × 1.5 seconds = 9 seconds, plus Stone Edge if used. The result: Tyranitar destroys Dragonite in under 10 seconds, even though Tyranitar is 5 levels lower. This shows how important type advantage and weather boost are.

Benefits of Using Pokemon Go Gym Calculator

Using a dedicated Gym Calculator transforms your gameplay from guesswork into a data-driven strategy. Whether you are a daily Gym grinder or a weekend raider, the benefits are immediate and measurable.

  • Save Precious Resources: Every potion, revive, and max revive costs time to collect. The calculator tells you exactly how many faints your attacker will suffer, so you can avoid using glass cannons that die in two hits. For example, using a Gengar against a Psychic-type defender might cause 5 faints, while a Dark-type Tyranitar might only faint once. Over a week, this saves dozens of revives, letting you stay in battle longer without farming PokéStops.
  • Optimize Your Battle Party: Instead of blindly selecting your highest CP Pokémon, the calculator lets you test six different attackers against a specific defender lineup. You might discover that a low-CP Scizor with Fury Cutter actually out-DPSes your high-CP Metagross against a Grass-type defender. This insight helps you build a party that clears Gyms in under 3 minutes, which is crucial for earning coins before a rival takes over.
  • Understand Breakpoints and Bulkpoints: Breakpoints are when one additional point of Attack (from IVs or level) causes your fast move to deal +1 damage. Bulkpoints are when one more Defense or Stamina point reduces the number of hits you take. The calculator highlights these thresholds automatically. For instance, a 14 Attack IV Machamp might need 13 hits to beat Blissey, but a 15 Attack IV Machamp only needs 12. That one IV point saves 0.9 seconds per battle—huge when fighting six defenders.
  • Plan for Weather and Friendship Bonuses: The calculator lets you toggle weather and friendship conditions, so you can pre-plan your team based on the current forecast. If you know it will be windy tomorrow, you can prepare double Rock-type attackers that will hit 20% harder. Similarly, if you are grinding Best Friend status with a local trainer, you can see exactly how much faster your joint battles will be.
  • Reduce Decision Fatigue: With over 1,000 Pokémon species and hundreds of move combinations, choosing the right counter for every Gym defender is mentally exhausting. The calculator removes the guesswork, giving you a clear “Best Attacker” recommendation for each defender. This frees up mental energy to focus on dodging charge moves, coordinating with friends, or planning your route to the next Gym.

Tips and Tricks for Best Results

To get the most out of your Gym Calculator, follow these expert tips that go beyond the basic inputs. These strategies come from top-tier Gym battlers who consistently hold 20 Gyms daily.

Pro Tips

  • Always check the defender’s actual moveset before attacking. A Blissey with Zen Headbutt deals Psychic damage, which is resisted by Fighting types, but a Blissey with Pound deals Normal damage, which is not. The calculator lets you select the exact moves, so verify by battling once or using a scanner tool.
  • Use the “Auto-Select Best Moveset” feature for your attacker, but then manually check if a Legacy move (like Shadow Claw on Gengar) outperforms the current best. Legacy moves often have higher energy gain, allowing more charge moves per battle.
  • Simulate with 0% motivation to see the worst-case scenario for the defender. A fully motivated Blissey at 100% CP is much harder than a decayed one. If your calculator shows you can beat it at full motivation, you can handle any Gym.
  • Save your top three attackers as a “Gym Sweep” party in the calculator. For example, save Machamp, Lucario, and Conkeldurr as your Fighting core. Then, when you encounter a Normal-type heavy Gym, you can load that party instantly without re-entering data.
  • Use the “Time to Win” metric over “DPS” when comparing attackers. A high-DPS Pokémon that faints quickly might actually take longer in real time because you have to re-enter the battle. The calculator’s total time includes fainting and rejoining delays.

Common Mistakes to Avoid