📐 Math

Pokemon Competitive Calculator: Battle Team Builder

Free Pokemon competitive calculator to optimize your battle team. Input stats and moves to calculate damage, speed, and matchups instantly.

⚡ Free to use 📱 Mobile friendly 🕒 Updated: June 13, 2026
🧮 Pokemon Competitive Calculator
function calculate() { const hp = parseInt(document.getElementById("i1").value) || 100; const atk = parseInt(document.getElementById("i2").value) || 100; const def = parseInt(document.getElementById("i3").value) || 100; const spa = parseInt(document.getElementById("i4").value) || 100; const spd = parseInt(document.getElementById("i5").value) || 100; const spe = parseInt(document.getElementById("i6").value) || 100; const level = parseInt(document.getElementById("i7").value) || 50; const iv = parseInt(document.getElementById("i8").value) || 31; const ev = parseInt(document.getElementById("i9").value) || 0; const nature = document.getElementById("i10").value; const statChoice = document.getElementById("i11").value; const baseStats = { hp, atk, def, spa, spd, spe }; const natureMods = { hardy: [1,1,1,1,1], lonely: [1,1.1,0.9,1,1], brave: [1,1.1,1,1,0.9], adamant: [1,1.1,1,0.9,1], naughty: [1,1.1,1,1,0.9], bold: [1,0.9,1.1,1,1], docile: [1,1,1,1,1], relaxed: [1,1,1.1,1,0.9], impish: [1,1,1.1,0.9,1], lax: [1,1,1.1,1,0.9], timid: [1,0.9,1,1,1.1], hasty: [1,1,0.9,1,1.1], serious: [1,1,1,1,1], jolly: [1,1,1,0.9,1.1], naive: [1,1,1,1,0.9], modest: [1,0.9,1,1.1,1], mild: [1,1,0.9,1.1,1], quiet: [1,1,1,1.1,0.9], bashful: [1,1,1,1,1], rash: [1,1,1,1.1,0.9], calm: [1,0.9,1,1,1.1], gentle: [1,1,0.9,1,1.1], sassy: [1,1,1,1,1.1], careful: [1,1,1,0.9,1.1], quirky: [1,1,1,1,1] }; const natureArr = natureMods[nature] || [1,1,1,1,1]; const natureLabels = ["Atk", "Def", "SpA", "SpD", "Spe"]; let baseVal, natureMult, statLabel; switch(statChoice) { case "hp": baseVal = baseStats.hp; natureMult = 1; statLabel = "HP"; break; case "atk": baseVal = baseStats.atk; natureMult = natureArr[0]; statLabel = "Attack"; break; case "def": baseVal = baseStats.def; natureMult = natureArr[1]; statLabel = "Defense"; break; case "spa": baseVal = baseStats.spa; natureMult = natureArr[2]; statLabel = "Sp. Atk"; break; case "spd": baseVal = baseStats.spd; natureMult = natureArr[3]; statLabel = "Sp. Def"; break; case "spe": baseVal = baseStats.spe; natureMult = natureArr[4]; statLabel = "Speed"; break; } let finalStat; if (statChoice === "hp") { finalStat = Math.floor(((2 * baseVal + iv + Math.floor(ev / 4)) * level) / 100 + level + 10); } else { finalStat = Math.floor((((2 * baseVal + iv + Math.floor(ev / 4)) * level) / 100 + 5) * natureMult); } const baseStatTotal = hp + atk + def + spa + spd + spe; const bstColor = baseStatTotal >= 600 ? "green" : baseStatTotal >= 500 ? "yellow" : "red"; const statColor = finalStat >= 180 ? "green" : finalStat >= 120 ? "yellow" : "red"; const natureName = nature.charAt(0).toUpperCase() + nature.slice(1); const natureEffect = natureMult !== 1 ? (natureMult > 1 ? "Boosted" : "Reduced") : "Neutral"; const resultGrid = [ { label: "Base Stat Total", value: baseStatTotal, cls: bstColor }, { label: "Calculated " + statLabel, value: finalStat, cls: statColor }, { label: "Nature", value: natureName + " (" + natureEffect + ")", cls: natureMult !== 1 ? (natureMult > 1 ? "green" : "red") : "yellow" }, { label: "IV Used", value: iv + " / 31", cls: iv === 31 ? "green" : iv >= 20 ? "yellow" : "red" }, { label: "EV Invested", value: ev + " / 252", cls: ev === 252 ? "green" : ev >= 128 ? "yellow" : "red" }, { label: "Level", value: level, cls: "yellow" } ]; showResult(finalStat, statLabel + " Stat", resultGrid); // Build breakdown table let breakdownHTML = `

📊 Step-by-Step Breakdown

`; breakdownHTML += ``; const step1 = `2 × ${baseVal} + ${iv} + floor(${ev}/4)`; const step1Val = 2 * baseVal + iv + Math.floor(ev / 4); breakdownHTML += ``; const step2 = `(${step1Val} × ${level}) / 100`; const step2Val = (step1Val * level) / 100; breakdownHTML += ``; if (statChoice === "hp") { const step3 = `floor(${step2Val.toFixed(2)}) + ${level} + 10`; const step3Val = Math.floor(step2Val) + level + 10; breakdownHTML += ``; breakdownHTML += ``; } else { const step3 = `floor(${step2Val.toFixed(2)}) + 5`; const step3Val = Math.floor(step2Val) + 5; breakdownHTML += ``; const step4 = `${step3Val} × ${natureMult}`; const step4Val = step3Val * nature
📊 Top Physical Attackers in OverUsed Tier (Base Attack + Common Item Boost Comparison)

What is Pokemon Competitive Calculator?

A Pokemon Competitive Calculator is a specialized digital tool designed to compute the exact damage output and defensive survivability of Pokémon during simulated battle scenarios. Unlike basic stat checkers, this calculator factors in complex variables such as type effectiveness, ability interactions, held items, weather conditions, and EV/IV spreads to deliver precise damage ranges for competitive play. It bridges the gap between raw game mechanics and strategic team building, allowing players to predict whether a specific move will secure a crucial knockout (KO) or leave an opponent hanging on by a thread.

This tool is indispensable for VGC (Video Game Championships) players, Smogon tier battlers, and Pokémon Showdown enthusiasts who need to optimize their teams without running hundreds of manual test battles. Competitive Pokémon hinges on margin-of-error calculations—a single point of unexpected damage can swing a match. By using a damage calculator, players validate their offensive thresholds and defensive benchmarks, ensuring their Pokémon survive key hits or deliver fatal blows under common battle conditions.

Our free online Pokemon Competitive Calculator provides instant, accurate results with a step-by-step breakdown, requiring no signup or login. It supports all generations of Pokémon up to Scarlet and Violet, includes Gen 9 mechanics like Terastallization, and updates automatically with new moves and ability interactions.

How to Use This Pokemon Competitive Calculator

Using our calculator is straightforward, even if you're new to competitive Pokémon. The interface is divided into attacker and defender sections, each requiring you to input specific stats and conditions. Follow these five steps to get your first damage calculation in under a minute.

  1. Select Your Attacker Pokémon: Begin by typing the name of your attacking Pokémon into the search field. The calculator auto-completes with a dropdown of all species. Once selected, the base stats, type(s), and potential abilities populate automatically. For example, selecting "Garchomp" will load its Dragon/Ground typing and abilities like Rough Skin or Sand Veil.
  2. Set the Attacker's Stats and Modifiers: Input the exact Attack or Special Attack stat based on your EV investment and nature. Use the "Level" dropdown (default 50 for VGC, 100 for Smogon). Then, choose the move you plan to use from the move list—each move's base power, type, and category (Physical/Special) loads automatically. Add critical hit chance, item boosts (e.g., Choice Band), and ability modifiers (e.g., Huge Power).
  3. Select Your Defender Pokémon: In the defender panel, enter the opponent's Pokémon species. The calculator pulls its base stats, type(s), and ability. Input the defender's actual HP stat and relevant defensive stats (Defense or Special Defense). For accurate results, use the exact EV spread—for instance, a "Blissey" with 252 HP / 252 Def EVs.
  4. Apply Battle Conditions: Toggle on relevant field effects: weather (Rain, Sun, Sand, Hail), terrain (Electric, Psychic, Grassy, Misty), screens (Reflect, Light Screen), and status conditions (burn halves physical attack). For Gen 9, enable Terastallization and select the Tera Type to see how it alters damage. Also check options like "Gravity" or "Friend Guard" if applicable.
  5. Calculate and Interpret Results: Click the "Calculate" button. The result displays as a damage range (e.g., "136-160 HP (78.6% - 92.5%)") along with the percentage chance to OHKO, 2HKO, or 3HKO. The breakdown shows each step of the damage formula, including type effectiveness multiplier, STAB bonus, and random variance factor. Use the "Compare" feature to test multiple moves or items side-by-side.

For best accuracy, always double-check that your EV values are correct and that you've toggled relevant abilities like Intimidate or Levitate. The calculator also includes a "Reset" button to clear all fields quickly for a new calculation.

Formula and Calculation Method

The Pokemon Competitive Calculator uses the standard damage formula established by Game Freak, which has remained largely consistent across generations with minor adjustments for new mechanics. This formula accounts for base power, attack and defense stats, level, and a random modifier to simulate the 1-16 point variance in real battle damage. Understanding this formula helps you interpret results and make informed team-building decisions.

Formula
Damage = ((((2 × Level / 5 + 2) × BasePower × [Sp]Atk / [Sp]Def) / 50) + 2) × Modifier

The formula calculates raw damage before applying the final modifier, which is a product of several multipliers. Each variable represents a specific game mechanic that you can control or predict during teambuilding. Below, we break down every component of the equation.

Understanding the Variables

Level: The Pokémon's current level, typically 50 for VGC or 100 for Smogon singles. Higher levels increase the base factor (2 × Level / 5 + 2), directly boosting damage output. For example, at level 50, this term equals 22; at level 100, it equals 42.

BasePower: The move's base power, which can be modified by abilities (e.g., Technician boosts moves with 60 or less base power by 50%) or items (e.g., Life Orb adds 30%). Always input the effective base power after all boosts.

[Sp]Atk and [Sp]Def: For physical moves, use the attacker's Attack stat and defender's Defense stat. For special moves, use Special Attack and Special Defense. These stats are calculated from base stats, EVs, IVs, nature, and any in-battle boosts (e.g., Swords Dance raises Attack by two stages).

Modifier: This is the product of all multipliers: Type effectiveness (0x, 0.25x, 0.5x, 1x, 2x, 4x), STAB (1.5x if move type matches Pokémon type), critical hit (1.5x for Gen 6+), weather (e.g., 1.5x for Water moves in Rain), terrain, items (e.g., 1.2x for Plate items), abilities (e.g., 1.3x for Sheer Force), and the random factor (0.85 to 1.0). The random factor is the only variable you cannot control—it ensures damage varies by up to 15% each turn.

Step-by-Step Calculation

First, compute the base damage: multiply the level factor (2 × Level / 5 + 2) by the move's base power, then multiply by the attacker's offensive stat divided by the defender's defensive stat. Divide this entire product by 50, then add 2. This gives you the raw damage number. Second, multiply the raw damage by the modifier—this is where all the multipliers stack. For example, if the raw damage is 100 and the modifier is 2.0 (due to a 2x type weakness and STAB), the final damage range is 170-200 after applying the random factor. The calculator outputs this as a range (e.g., "170-200 HP") and as a percentage of the defender's max HP.

Example Calculation

To show the calculator in action, let's simulate a common VGC scenario using popular Pokémon from the 2024 regulation. We'll calculate whether a Choice Banded Urshifu-Rapid Strike can OHKO a standard Amoonguss, a bulky support Pokémon that often walls physical attackers.

Example Scenario: Attacker: Urshifu-Rapid Strike (Level 50, 252 Atk EVs, Adamant Nature, Choice Band, Ability: Unseen Fist) using Surging Strikes (Base Power 25, hits three times, always critical hits). Defender: Amoonguss (Level 50, 252 HP / 252 Def EVs, Bold Nature, Ability: Regenerator, no item). No weather or terrain active.

Step 1: Calculate the attacker's effective Attack stat. Urshifu-Rapid Strike's base Attack is 130. With 252 EVs and Adamant nature, its stat at level 50 is 200 (after rounding). Choice Band multiplies this by 1.5, giving 300 effective Attack. Step 2: Defender's Defense stat. Amoonguss has base Defense 70, with 252 EVs and Bold nature, its stat at level 50 is 134. Step 3: Compute raw damage per hit. Level factor at 50 is 22. Base Power of Surging Strikes is 25. Raw damage per hit = (((22 × 25 × 300 / 134) / 50) + 2) = (((16,500 / 134) / 50) + 2) = ((123.13 / 50) + 2) = (2.4626 + 2) = 4.46, rounded to 4. Step 4: Apply modifier. Surging Strikes always crits (Gen 8+), so critical hit multiplier is 1.5. STAB (Fighting type) adds 1.5. Amoonguss is Grass/Poison; Fighting hits for 1x (neutral). Modifier = 1.5 × 1.5 × 1.0 = 2.25. Damage per hit = 4 × 2.25 = 9. However, the random factor (0.85-1.0) applies, so each hit deals 7 to 9 damage. Three hits total: 21 to 27 damage. Amoonguss has 221 HP (max at level 50 with 252 EVs). Percentage: 21/221 = 9.5% to 27/221 = 12.2%. This is a 3HKO, not an OHKO.

The result means that even with a Choice Band and critical hits, Urshifu-Rapid Strike cannot OHKO a standard defensive Amoonguss. This tells you to either switch to a different attacker (like a special Fire-type) or use a different move (like Close Combat, which would deal much more damage but lower defense). The calculator confirms that Amoonguss survives comfortably, helping you adjust your strategy.

Another Example

Now calculate a special attack scenario: Attacker: Flutter Mane (Level 50, 252 SpA EVs, Timid Nature, Booster Energy activated, Ability: Protosynthesis) using Shadow Ball (Base Power 80). Defender: Gholdengo (Level 50, 252 HP / 252 SpD EVs, Calm Nature, no item). No terrain. Flutter Mane's Special Attack after Booster Energy is 205 (base 135 + EVs and nature). Gholdengo's Special Defense is 183. Raw damage: (((22 × 80 × 205 / 183) / 50) + 2) = (((360,800 / 183) / 50) + 2) = ((1,971.58 / 50) + 2) = (39.43 + 2) = 41.43. Modifier: Shadow Ball is Ghost type, Gholdengo is Steel/Ghost—Ghost hits Ghost for 2x weakness. STAB adds 1.5. No crit. Modifier = 2.0 × 1.5 = 3.0. Damage = 41 × 3 = 123. Random range: 104 to 123. Gholdengo has 197 HP. Percentage: 52.8% to 62.4%. This is a 2HKO. The calculator shows that Flutter Mane needs two Shadow Balls to KO, giving Gholdengo a chance to retaliate or switch.

Benefits of Using Pokemon Competitive Calculator

Integrating a damage calculator into your teambuilding workflow transforms how you approach competitive Pokémon. Instead of relying on guesswork or anecdotal experience, you gain precise, data-driven insights that directly improve your win rate. Below are the five key advantages of using our free tool.

  • Precise KO Confirmation: Know exactly which moves secure OHKOs, 2HKOs, or 3HKOs against common threats. For example, you can verify if your Choice Scarf Garchomp's Earthquake always OHKOs a 4 HP Heatran (it does, even without investment). This eliminates mid-battle guesswork and lets you commit to aggressive plays with confidence. The calculator accounts for all variables, including Intimidate drops and Reflect, so you never overestimate damage.
  • Defensive Benchmarking: Determine the exact HP and Defense investment needed to survive specific attacks. If you want your Rotom-Wash to always survive a Life Orb Gholdengo's Shadow Ball, the calculator tells you the minimum EVs required. This allows you to optimize your EV spreads—you can invest just enough bulk to survive key hits and pour the rest into offense or speed. Competitive players call this "EV creep" and it's essential for high-level play.
  • Team Synergy Analysis: Test how your Pokémon interact with each other's abilities and items. For example, calculate whether your Indeedee-F's Psychic Terrain boosts your Armarouge's Expanding Force enough to OHKO a specific target. The calculator handles terrain, weather, and ability interactions simultaneously, showing you the combined effect of multiple field conditions. This helps you build cohesive teams that exploit synergies.
  • Meta Adaptation: Stay ahead of shifting metagames by quickly recalculating damage after new DLC releases or tier shifts. When a new Pokémon like Ogerpon enters the scene, you can immediately test its damage output against current top threats. The calculator updates with new moves, abilities, and forms, ensuring your calculations remain relevant for the latest regulation. This is crucial for VGC players who need to adapt to each new series.
  • Time Efficiency: Save hours of manual testing by running dozens of calculations in minutes. Instead of playing 50 test battles to verify a single matchup, you can simulate it in under 10 seconds. The step-by-step breakdown also serves as a learning tool—new players can see exactly how each modifier affects damage, accelerating their understanding of complex game mechanics. No signup means instant access whenever you need it.

Tips and Tricks for Best Results

To get the most out of your Pokemon Competitive Calculator, you need to input accurate data and understand the nuances of damage calculation. Even small errors—like forgetting to account for a held item or misreading a stat stage—can lead to incorrect conclusions. Below are expert tips and common pitfalls to avoid.

Pro Tips

  • Always verify your Pokémon's actual stat values by checking in-game or using a stat calculator. Base stats alone are insufficient because EVs and IVs drastically alter the final number. For example, a max Attack Garchomp at level 50 has 200 Attack, but a neutral nature with no EVs has only 140—a 30% difference that changes KO thresholds.
  • Use the "Random Number" feature to see the worst-case and best-case damage rolls. The damage range varies by up to 15%, so a move that "always OHKOs" on average might fail on a low roll. Check the "Minimum Roll" column to ensure your Pokémon secures the KO even with bad luck. This is critical for tournament play where one bad roll can cost a game.
  • Test multiple item and ability combinations side-by-side using the "Compare" button. For instance, compare a Choice Band vs. Life Orb on your Dragapult to see which item secures more OHKOs against the meta. The calculator shows damage for each option simultaneously, helping you choose the optimal loadout without switching back and forth.
  • Account for Intimidate and other stat-lowering effects by manually adjusting the attacker's or defender's stats. If your opponent leads with Incineroar, your physical attacker's Attack is lowered by one stage (a 33% reduction). Input the reduced stat manually to see how the matchup changes. Many calculators have a "Stat Stage" dropdown—use it for accuracy.
  • Double-check type matchups manually if you're unsure. The calculator auto-calculates effectiveness, but some dual-type interactions are counterintuitive (e.g., a Ghost/Fighting move hitting a Normal/Ghost type for 0x). Understanding the type chart helps you spot potential errors if the result seems off.

Common Mistakes to Avoid

StepFormulaResult
12 × Base + IV + floor(EV/4)${step1Val}
2Step1 × Level / 100${step2Val.toFixed(2)}
3floor(Step2) + Level + 10${step3Val}
Final HP${finalStat}
3floor(Step2) + 5${step3Val}