MC Toolkit / Calculators / Horse Breeding Calculator
Horse Breeding Calculator
Predict a foal's health, jump, and speed from its parents using the exact offspring formula from the game code.
Parents
Parent A
Parent B
Legal ranges: Health 15–30 HP, Jump 1.09–5.29 blocks, Speed 4.74–14.23 b/s. Values outside this range get clamped to the nearest legal value before simulating. Both parents must be fed a Golden Apple or Golden Carrot in-game before they will breed.
Foal Outlook
Per-Stat Prediction
How This Is Computed
Real Stat Ranges (Java Edition)
| Stat | Legal range | Displayed as |
|---|---|---|
| Max Health | 15 – 30 | HP (2 HP per heart) |
| Jump Strength | 1.09 – 5.29 | Blocks of jump height |
| Movement Speed | 4.74 – 14.23 | Blocks per second |
Jump Strength and Movement Speed are shown in blocks and blocks per second. In the actual game they are stored as a raw attribute (Jump Strength 0.4–1.0, run through the jump-height curve height = -0.1817v³ + 3.689v² + 2.128v - 0.343, giving a real block-height floor of ~1.09 rather than 0; Speed 0.1125–0.3375 blocks-per-tick, roughly ×42.16 to convert to blocks/second at 20 ticks/second). The simulation runs on that raw attribute, as the game does, and converts to blocks / blocks-per-second only for display, which is how the numbers show up in most stat-display mods.
The Offspring Formula
Every foal stat — Health, Jump Strength, and Movement Speed — is rolled independently using the exact same shape of formula from the game’s AbstractHorse.createOffspringAttribute code (this also governs donkeys and mules):
midpoint = (parentA + parentB) / 2range = statMax - statMinfor that stat’s legal rangespread = |parentA - parentB| + 0.3 × rangeroll = (random() + random() + random()) / 3 - 0.5— three independent 0–1 rolls averaged together, then re-centered on zerofoalValue = midpoint + spread × roll- If the result falls outside the legal range, the game reflects it back in by the amount it overshot (
max - (foalValue - max)), and so does this tool — which is why two maxed-out parents average about 13.84 b/s of speed, never the 14.23 cap.
Averaging three random rolls (step 4) instead of using one flat roll is what makes the result cluster toward the midpoint rather than spreading evenly — most foals land fairly close to the average of their parents, with occasional outliers toward either edge.
Uses the real vanilla offspring-attribute formula (parent midpoint + a difference-based spread, rolled via 3 averaged random values) run as a client-side Monte Carlo simulation — results are probabilistic estimates from many simulated rolls, not a single deterministic answer, matching how the real game works. Jump strength and speed are shown in the more intuitive blocks/blocks-per-second units rather than raw attribute values.
Latest guides
Browse all guides →How to make a lead in Minecraft: five string, no slime ball any more
The lead recipe dropped its slime ball in Java 1.21.6. The 26.3 recipe, where string comes from, what a lead can hold, and the distances that pull and snap it.
How to make a saddle in Minecraft: three leather and one iron ingot
Saddles became craftable in Java 1.21.6, and the same update pulled them from five loot tables. The recipe, where saddles still drop, and the 11 mobs that wear one.
Horse breeding: two perfect parents still cannot guarantee a perfect foal
The foal centres on the parents' midpoint, but the spread carries a floor of 0.3 × the stat range no matter how identical the parents are. That term never goes away.