Tutorial:Horses
This is a tutorial for the process of finding, measuring, and breeding horses.
Preparation
Food
Prior to horse breeding, it's advised to have a reliable source of Golden Carrots. This can be through the combination of a Zombified Piglin farm and a Carrot farm, or through trading with a Master Farmer. In a less progressed world, it often makes sense to supplement this with Wheat, which can be grown alongside carrots in rows for an efficient supply of both. If an extensive surplus of Golden Apples are available, they can be used to mature horses much faster at the expense of much more Gold.
Leads
Leads are useful in keeping horses organized and moving them from place to place. Fences should be set up prior to breeding to conveniently attach horses to. Having a few on-hand is very useful, but there's no reason to prepare a surplus as they can be reused after a horse is discarded and optimal methods of horse breeding rarely use more than 12 horses.
Starter horses
Locating
While horses also spawn in savannas, they're over four times more likely to spawn in Plains or Sunflower Plains. They can be quickly scanned for by flying over these biomes with an Elytra.
Choosing
The stats of a horse can be evaluated without riding it by using F3 + I, but it's not difficult to tell vaguely if a horse's stats are sufficient by taming and briefly riding it. Finding a naturally spawned horse with desired traits can save breeding time later on, especially regarding the color and pattern of the horse.
Transporting
Horses can be carried back to a more convenient location using Leads in tandem with an Elytra or Happy Ghast. Alternatively, tamed horses can simply be ridden home. In Java Edition, the Nether roof is an ideal way to transport horses.
Measuring
Through debug shortcuts
Pressing F3 + I while looking at the horse will copy entity data. This can be pasted into a text editor or the in-game chat.
For health, find in "minecraft:max_health" (for example {id: "minecraft:max_health", base: 24.0d}, meaning the horse has 24HP × 12).
For jump strength: "minecraft:jump_strength"
For speed: "minecraft:movement_speed"
Health
The health can be determined by looking at the heads-up display. The saddle icons replacing your hunger bar while riding a horse is the horse’s health bar. One heart equals two health points. When you ride a horse that has an odd number of health points, the last health point isn’t shown on the HUD. Sometimes, horses have an odd number of health points; one method you can check if the horse has an even or odd number of health points/hitpoints is by hitting the horse and mounting the horse to check the hitpoints. If the HUD shows one less health point lost in health than the attack damage to the player, after the player attacks it, either with or without tools, the horse has 1 more health point than shown in the HUD and thus has an odd number of health points. If the HUD shows the exact amount lost in health than the total attack damage to the player after the player attacks it, the horse has an even number of health and it has exactly the number of health points/hitpoints as shown in the HUD. The horse might regenerate one health point right after you attack it, so you might want to try again. Heal the horse to full health and attack it again to check again if you’re correct in checking if the horse has an odd or even number of hitpoints. For example, if a horse appears to have 22 hitpoints and you attack it, if the horse has lost one fewer health point than the damage you inflicted to the horse, and if the horse didn’t regenerate, then it means that the horse actually has 23 hitpoints.
Jump Strength
The internal value for jump strength for horses ranges from 0.4 to 1.0, which turns out to be approximately 1.11 to 5.3 blocks. A device to measure this can be quite simple: build walls of increasing heights parallel to each other, 3 blocks apart. To test horse jump strength, simply jump over the shortest wall to arrive at the next wall, and continue jumping until you can no longer jump. The last wall you were able to jump over indicates your horse's maximum jump strength. Slabs and snow layers can be used to create non-full block increments.
| Internal units | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1.0 | player |
|---|---|---|---|---|---|---|---|---|
| blocks | 1.1093 | 1.6248 | 2.2216 | 2.8933 | 3.6339 | 4.4379 | 5.29997 | 1.2522 |
Speed
Speed proves to be the most difficult attribute to measure accurately. The internal value for horses ranges from .1125 to .3375. A device to measure this can be constructed with the delay on repeaters, using repeater locking. Create a very long chain of repeaters.
Use a piston to hold back the horse. Connect redstone such that the piston releases the horse at the same time as a pulse starts down the repeater chain. At the end of a certain amount of blocks (~45 or so), add pressure plates, which are usually more consistent than tripwire. When these pressure plates are activated, use a long string of redstone to lock every repeater in the chain. This will "freeze" the chain and the pulse that started at the beginning will be frozen in place. You can mark the repeater where the pulse is frozen with a block.
Keep in mind that you may need repeaters to lengthen the signal enough to lock the entire repeater chain, which will introduce a delay. You can account for this delay by adjusting the delay of the repeaters used for locking. As long as all the repeaters lock at the exact same time, the device will work.
Also keep in mind that for the results to be consistent, you must be going perfectly straight every time. You can do this by opening F3 mode and looking at the "facing" label, which shows a numerical value for your camera angle. You can temporarily decrease your mouse sensitivity through the controls to align yourself perfectly.
This device cannot measure the horse's exact speed in blocks/second, but can accurately measure its speed relative to other horses. Aside from server lag, it is incredibly consistent and can be used for accurate comparisons.
To convert a horse's internal speed to blocks/seconds, multiply the internal value by 42.16. This differs from the usual conversion of 43.17 blocks/sec, because horses do not move at their full internal speed.
| Internal units | 0.1125 (min) | 0.16875 | 0.2250 (avg) | 0.28125 | 0.3375 (max) |
|---|---|---|---|---|---|
| blocks/s | 4.74 | 7.11 | 9.49 | 12.86 | 14.23 |
Breeding Results
Stats
Upon breeding, the two parent horse's stats are each averaged independently, and then a random deviation is applied. This random deviation is calculated by generating a number between -0.5 and 0.5 (biased towards 0) and multiplying it by the sum of the difference between the two parents and 30% of the total range for the given stat. This means that each stat in a horse produced by breeding can be up to 15% lower than their lowest parent, or 15% higher than the highest parent. However, the expected value for each stat is still the average of the two parents. When any stat value exceeds its' upper or lower limit, it gets lowered or raised according to the difference between it and the limit. This means that if the average of two parents is above the 85th percentile for a given stat, it becomes more likely for the offspring horse to have a lower value in that stat as opposed to a higher one, and the opposite is true for horses below the 15th percentile. Therefore, the chance of getting a better horse is 50% for any horse between the 15th and 85th percentiles, but worse horses approach a nearly 100% chance of improving while better horses approach a nearly 100% chance of being worse than their parents.
Colors
Each parent has an equal probability of passing along its color to their offspring, and the same applies to patterns. Additionally, new horses have a 20% chance to have a random new pattern, or an 11.11% chance to have a random new color. The relative probability of each combination of color and pattern is shown below. This is a table representing the probabilities of the color and markings of the baby horse when breeding two horses A and B.
| Color of A | Color of B | Random color | Total | |
|---|---|---|---|---|
| Markings of A | 17.78% | 17.78% | 4.44% | 40% |
| Markings of B | 17.78% | 17.78% | 4.44% | 40% |
| Random markings | 8.89% | 8.89% | 2.22% | 20% |
| Total | 44.44% | 44.44% | 11.11% |
Breeding difficulty

Prior to Java Edition 1.19.4 and Bedrock Edition 1.19.70, breeding two horses created a new horse by averaging the two parent horses with a randomly generated horse. An average/arithmetic mean will always be less than the highest number being averaged, unless all numbers are identical.
By this logic, a perfect horse can only be bred if the randomly selected horse is perfect, and both parent horses are perfect, in which case the average of the three perfect horses will be a perfect horse. By extension, without two perfect horses, a perfect horse cannot be bred.
| Attribute of both Parents | Chance of getting better horse |
Maximum child | ||||
|---|---|---|---|---|---|---|
| Jump | Health | Speed | Jump | Health | Speed | |
| 0.40 (1.09m) | 15HP × 7.5 | 0.1125 (4.86m/s) | 100% | 0.55 (2.22m) | 20HP × 10 | 0.1875 (8.09m/s) |
| 0.55 (1.91m) | 18HP × 9 | 0.1686 (7.27m/s) | 75% | 0.70 (2.89m) | 22HP × 11 | 0.2250 (9.71m/s) |
| 0.70 (2.89m) | 22HP × 11 | 0.2250 (9.71m/s) | 50% | 0.80 (3.63m) | 24HP × 12 | 0.2625 (11.33m/s) |
| 0.85 (4.02m) | 26HP × 13 | 0.2813 (12.14m/s) | 25% | 0.90 (4.43m) | 27HP × 13.5 | 0.3000 (12.95m/s) |
| 1.00 (5.29m) | 30HP × 15 | 0.3375 (14.57m/s) | 0% | 1.00 (5.29m) | 30HP × 15 | 0.3375 (14.57m/s) |
After 3.13 blocks jump, 11 hearts, or 9.71 blocks/second speed, any future breeding will have a higher chance of producing a worse child than a better one. Because the range of horses that are better than a given horse gets narrower as the horse gets better, the likelihood of breeding a horse in that range of better horses also gets linearly narrower as the horse gets better, and as a result, the actual number of breed attempts necessary to likely get a better horse increases exponentially, until a fully perfect horse is unattainable, as shown in the table.
This graph shows what jump strength a player should expect their best horse to have after repeatedly breeding their two best horses together up to 1,000 times. The blue line shows the average jump strength of the best horse and the chances of the horse's jump strength being within the red lines is 95%.

Optimal Breeding Scheme
The optimal breeding scheme is that you start with two parent horses and breed them, and if the foal is stronger than the weakest parent horse, replace the weakest parent horse with the foal. Each time a foal is produced counts as "1" breeding attempt, regardless of whether it replaces a parent or is discarded.
This breeding scheme proves difficult to model mathematically because probabilities cascade with every attempt, so the following tables show consistent experimental data over 420,000 trials per table. If both parents have the attribute listed in the "Both parents," the following lists the number of foals produced before the target is reached).
Note that since the maximum value is impossible to achieve via breeding, it is omitted.
| Target | Both parents | |||||
|---|---|---|---|---|---|---|
| 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | |
| 0.5 | 1 | — | — | — | — | — |
| 0.6 | 4 | 2 | — | — | — | — |
| 0.7 | 7 | 6 | 3 | — | — | — |
| 0.8 | 14 | 13 | 11 | 7 | — | — |
| 0.9 | 36 | 34 | 32 | 29 | 22 | — |
| 0.95 | 78 | 77 | 75 | 71 | 64 | 44 |
| 0.99 | 404 | 403 | 400 | 394 | 390 | 368 |
| Target | Both parents | |||||
|---|---|---|---|---|---|---|
| 15 | 18 | 21 | 24 | 27 | 28 | |
| 16 | 1 | — | — | — | — | — |
| 18 | 2 | — | — | — | — | — |
| 20 | 3 | 2 | — | — | — | — |
| 23 | 8 | 6 | 3 | — | — | — |
| 26 | 20 | 18 | 15 | 9 | — | — |
| 28 | 46 | 45 | 42 | 36 | 19 | — |
| 29 | 100 | 98 | 95 | 89 | 73 | 56 |
| Target | Both parents | |||||
|---|---|---|---|---|---|---|
| 0.1125 | 0.15 | 0.2 | 0.25 | 0.3 | 0.33 | |
| 0.125 | 1 | — | — | — | — | — |
| 0.15 | 1 | — | — | — | — | — |
| 0.2 | 4 | 3 | — | — | — | — |
| 0.25 | 11 | 10 | 7 | — | — | — |
| 0.3 | 36 | 34 | 31 | 25 | — | — |
| 0.33 | 207 | 205 | 203 | 195 | 173 | — |
| 0.337 | 2913 | 2917 | 2916 | 2929 | 2896 | 2738 |