Color Calculator for Horses

Horse Color Calculator & Genetics Predictor .hcc-container { max-width: 800px; margin: 0 auto; font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #333; line-height: 1.6; background: #fdfdfd; padding: 20px; border: 1px solid #e0e0e0; border-radius: 8px; } .hcc-header { text-align: center; margin-bottom: 30px; background-color: #4a3b32; color: #fff; padding: 20px; border-radius: 8px 8px 0 0; } .hcc-header h2 { margin: 0; font-size: 28px; } .hcc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; margin-bottom: 30px; } @media (max-width: 600px) { .hcc-grid { grid-template-columns: 1fr; } } .hcc-card { background: #fff; padding: 20px; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 2px 5px rgba(0,0,0,0.05); } .hcc-card h3 { margin-top: 0; color: #4a3b32; border-bottom: 2px solid #d4c5b0; padding-bottom: 10px; } .hcc-input-group { margin-bottom: 15px; } .hcc-input-group label { display: block; margin-bottom: 5px; font-weight: 600; font-size: 14px; color: #555; } .hcc-input-group select { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 15px; } .hcc-btn-container { text-align: center; margin-bottom: 30px; } .hcc-btn { background-color: #8b5a2b; color: white; border: none; padding: 15px 40px; font-size: 18px; border-radius: 5px; cursor: pointer; transition: background-color 0.3s; font-weight: bold; } .hcc-btn:hover { background-color: #6d4520; } #hcc-result { background-color: #f9f4ef; border: 1px solid #e3d2bf; padding: 25px; border-radius: 8px; display: none; } #hcc-result h3 { color: #4a3b32; margin-top: 0; text-align: center; } .hcc-result-table { width: 100%; border-collapse: collapse; margin-top: 15px; } .hcc-result-table th, .hcc-result-table td { text-align: left; padding: 12px; border-bottom: 1px solid #ddd; } .hcc-result-table th { background-color: #e3d2bf; color: #4a3b32; } .hcc-result-bar-bg { width: 100%; background-color: #e0e0e0; height: 10px; border-radius: 5px; margin-top: 5px; } .hcc-result-bar-fill { height: 100%; background-color: #8b5a2b; border-radius: 5px; } .hcc-article { margin-top: 50px; padding-top: 20px; border-top: 1px solid #eee; } .hcc-article h2 { color: #4a3b32; } .hcc-article ul { padding-left: 20px; }

Horse Color Calculator

Predict foal coat colors based on Sire and Dam genetics

Sire (Stallion) Genetics

Homozygous Black (EE) – Cannot produce Red Heterozygous Black (Ee) – Black base, carries Red Red (ee) – Chestnut base
Homozygous Agouti (AA) – Always restricts black Heterozygous Agouti (Aa) – Carries non-agouti Non-Agouti (aa) – Uniform black (if E present)
Non-Dilute (nn) Single Dilute (nCr) – Palomino/Buckskin/Smoky Black Double Dilute (CrCr) – Cremello/Perlino/Smoky Cream

Dam (Mare) Genetics

Homozygous Black (EE) – Cannot produce Red Heterozygous Black (Ee) – Black base, carries Red Red (ee) – Chestnut base
Homozygous Agouti (AA) – Always restricts black Heterozygous Agouti (Aa) – Carries non-agouti Non-Agouti (aa) – Uniform black (if E present)
Non-Dilute (nn) Single Dilute (nCr) – Palomino/Buckskin/Smoky Black Double Dilute (CrCr) – Cremello/Perlino/Smoky Cream

Foal Coat Color Probabilities

Based on standard Mendelian inheritance for Extension, Agouti, and Cream.

Phenotype (Color) Probability Visual

Understanding Horse Color Genetics

Predicting the color of a foal is a science based on Mendelian genetics. While there are many genes that influence horse coat color (such as Dun, Champagne, Silver, and White patterns), the three most common factors determining the base color are Extension, Agouti, and Cream. This calculator focuses on these three primary loci.

1. The Red Factor (Extension Locus – E)

All horses begin with a base color of either Black or Red (Chestnut). The Extension gene determines this base.

  • EE: The horse has a black base and cannot produce a red foal (unless the mate contributes genes to dilute/modify it, but the base remains black).
  • Ee: The horse is visually black based but carries the red gene (recessive).
  • ee: The horse is Red (Chestnut/Sorrel). It cannot produce black pigment in the coat.

2. The Agouti Factor (Bay Locus – A)

The Agouti gene controls the distribution of black pigment. It essentially "pushes" black pigment to the points (mane, tail, legs, ear rims), creating a Bay horse.

  • AA or Aa: Restricts black pigment to the points. A black base horse becomes Bay.
  • aa: No restriction. A black base horse remains solid Black.

Note: Agouti is not visually expressed on Red (ee) horses because they have no black pigment to restrict, but they can still carry and pass the gene to offspring.

3. The Cream Dilution (Cr)

The Cream gene dilutes the base color. It is an incomplete dominant trait, meaning one copy (heterozygous) looks different from two copies (homozygous).

  • nn: No cream dilution.
  • nCr (Single Dilute):
    • Chestnut base -> Palomino
    • Bay base -> Buckskin
    • Black base -> Smoky Black
  • CrCr (Double Dilute):
    • Chestnut base -> Cremello
    • Bay base -> Perlino
    • Black base -> Smoky Cream

Example Calculation

If you breed a Palomino (Chestnut base ee + Single Cream nCr) to a Buckskin (Bay base E_ A_ + Single Cream nCr), the genetics can get complicated.

Using the calculator above, you can determine exactly what percentage chance you have of getting a Cremello, Perlino, Buckskin, Palomino, or Smoky Black foal.

function calculateFoalColor() { // 1. Get Genotypes from Inputs var sireExt = document.getElementById('sire_ext').value; // EE, Ee, ee var sireAgo = document.getElementById('sire_ago').value; // AA, Aa, aa var sireCrm = document.getElementById('sire_crm').value; // nn, nCr, CrCr var damExt = document.getElementById('dam_ext').value; var damAgo = document.getElementById('dam_ago').value; var damCrm = document.getElementById('dam_crm').value; // 2. Helper function to get alleles array from string function getAlleles(genotypeStr, type) { // type: 'E' (2 chars), 'A' (2 chars), 'Cr' (special case handling) if (type === 'Cr') { if (genotypeStr === 'nn') return ['n', 'n']; if (genotypeStr === 'nCr') return ['n', 'Cr']; if (genotypeStr === 'CrCr') return ['Cr', 'Cr']; } return [genotypeStr.charAt(0), genotypeStr.charAt(1)]; } var sE = getAlleles(sireExt, 'E'); var sA = getAlleles(sireAgo, 'A'); var sC = getAlleles(sireCrm, 'Cr'); var dE = getAlleles(damExt, 'E'); var dA = getAlleles(damAgo, 'A'); var dC = getAlleles(damCrm, 'Cr'); // 3. Logic: Calculate probabilities for each locus independent // Returns object { 'EE': 0.25, 'Ee': 0.5 … } function punnett(sireAlleles, damAlleles) { var outcomes = {}; var total = 0; for (var i = 0; i < 2; i++) { for (var j = 0; j < 2; j++) { // Combine, sort alphabetically/standardly to normalize keys var a1 = sireAlleles[i]; var a2 = damAlleles[j]; var combo = ''; // Sorting logic for normalization if (a1 === 'Cr' || a2 === 'Cr') { if (a1 === 'Cr' && a2 === 'Cr') combo = 'CrCr'; else if (a1 === 'n' && a2 === 'n') combo = 'nn'; else combo = 'nCr'; } else { // For E and A, uppercase comes first (Dominant) if (a1 0) { sortedResults.push([p, phenotypeProbs[p]]); } } sortedResults.sort(function(a, b) { return b[1] – a[1]; }); for (var i = 0; i < sortedResults.length; i++) { var name = sortedResults[i][0]; var prob = sortedResults[i][1] * 100; // Format row var row = ""; row += "" + name + ""; row += "" + prob.toFixed(2) + "%"; row += "
"; row += ""; resultBody.innerHTML += row; } document.getElementById('hcc-result').style.display = 'block'; }

Leave a Reply

Your email address will not be published. Required fields are marked *