DEV Community

Dingiu Liao
Dingiu Liao

Posted on

How Palworld's Hidden Breeding Formula Works — I Built a Calculator That Maps All 35K+ Combinations Tags

Palworld's breeding system looks like magic until you see the formula. Then it's just math.

Every Pal has a hidden integer called Breeding Power — and once you know it, you can predict exactly what any pair of Pals will produce.


The Formula

child = closest_BP_match((BP_parentA + BP_parentB) / 2)

Three steps:

  1. Take two Pals, look up their BP values
  2. Average them
  3. Among all 266 Pals, find the one whose BP is closest to that average

That's it. No RNG. No hidden rules. Just an average and a nearest-neighbor lookup.


Concrete Example

Penking BP = 520
Bushi BP = 640

Average = (520 + 640) / 2 = 580

Pal with BP closest to 580?
→ Anubis (BP = 570, distance = 10)
→ Next closest: Finsider (BP = 590, distance = 10)

Winner: Anubis ✅

Two parents averaging ~580 land on Anubis at 570. Every single time.


The BP Scale

BP Range Tier Examples
1000–1500 Common / Early Chikipi (1500), Teafant (1490), Lamball (1470)
500–999 Mid-game Anubis (570), Penking (520), Bushi (640)
200–499 Late-game Jormuntide (310), Blazamut (180)
1–199 Legendary Jetragon (90), Frostallion (130)

Higher BP = more common, easier to catch. That's also why breeding two early-game Pals often spits out a mid-game one — their high average drops into the 500–800 range.


Why Most Calculators Get Some Pals Wrong

Older tools use pre-1.0 BP data. Palworld's 1.0 update shifted some values and added 40+ new Pals. If your calculator says Penking + Bushi = Relaxaurus instead of Anubis, it's running on old numbers.


A static site calculator that loads all 266 BP values and computes results client-side:

  • Pick any two parents → instant child prediction
  • Covers all 35,000+ possible combinations
  • Updated for Palworld 1.0
  • Zero dependencies, runs entirely in the browser

Try it: palworldguides.com/breeding-calculator/

There's also a reverse finder if you want to pick the child first and see all parent combos ranked by difficulty.


The Algorithm (JavaScript)


javascript
function findChild(bpA, bpB, allPals) {
  const avg = (bpA + bpB) / 2;
  let best = allPals[0];
  let bestDist = Math.abs(best.bp - avg);

  for (const pal of allPals) {
    const dist = Math.abs(pal.bp - avg);
    if (dist < bestDist) {
      best = pal;
      bestDist = dist;
    }
  }
  return best;
}

O(n) per lookup, instant in the browser for 266 Pals.

---
Fun weekend project. Happy to answer questions if anyone's building something similar.
Enter fullscreen mode Exit fullscreen mode

Top comments (0)