Pokémon HeartGold Catch Rate Calculator
Your chance of catching this Pokémon per throw is:
How the Catch Rate Works in HeartGold & SoulSilver
In Pokémon HeartGold (Generation IV), the game uses a specific mathematical formula to determine if a Pokémon is caught when you throw a ball. Unlike later generations, the Gen IV formula relies heavily on the "Capture Value" (often referred to as 'a').
The Capture Value Formula
The game first calculates a value a using this formula:
a = (((3 * MaxHP – 2 * CurrHP) * Rate * BallMod) / (3 * MaxHP)) * StatusMod
- MaxHP: The total hit points of the wild Pokémon.
- CurrHP: The remaining hit points of the wild Pokémon.
- Rate: The base catch rate of the species (e.g., Caterpie is 255, Lugia is 3).
- BallMod: The multiplier of the ball being used.
- StatusMod: 2 for Sleep/Freeze, 1.5 for other conditions, 1 for none.
Probability and Shakes
If the value a is 255 or higher, the Pokémon is caught instantly. If it is lower than 255, the game calculates a second value b to determine how many times the ball shakes. The actual probability of a successful catch is equivalent to the chance of passing four independent "shake checks."
Common Base Catch Rates
| Pokémon Category | Base Catch Rate |
|---|---|
| Most Legendaries (Lugia, Ho-Oh, Entei) | 3 |
| Snorlax / Lapras | 25 / 45 |
| Starter Pokémon (Chikorita, etc.) | 45 |
| Common early-game (Rattata, Pidgey) | 255 |
Examples for HeartGold Players
Example 1: Lugia at 1 HP
If you are using an Ultra Ball (2x) and Lugia is Paralyzed (1.5x) with 1 HP remaining (assuming ~200 Max HP):
The calculation results in approximately a 5-7% catch chance per ball. This is why legendaries are so difficult!
Example 2: Using the Heavy Ball
In HGSS, the Heavy Ball works differently than other balls. Instead of a multiplier, it adds or subtracts from the base catch rate based on weight. For extremely heavy Pokémon like Snorlax, it adds +40 to the base rate, making it much more effective than an Ultra Ball.