Breeding a mare is an exciting time for any horse owner, but the long wait for the foal can be nerve-wracking. The average gestation period for a mare is approximately 340 days (about 11 months). However, nature rarely adheres strictly to the calendar, and a normal pregnancy can range anywhere from 320 to 370 days.
Did you know? While 340 days is the standard average, many owners use 335 to 345 days as the "watch window." Foals born before 320 days are considered premature and may require intensive veterinary care.
How to Use the Mare Foaling Calculator
This calculator helps you determine the window in which your mare is most likely to foal. Simply enter the date the mare was last bred (the ovulation date is most accurate if known). The calculator provides:
Average Due Date: Calculated at 340 days post-breeding.
Earliest Safe Date: The 320-day mark, generally considered the threshold for a viable foal without intensive intervention.
Latest Likely Date: The 365-day mark. While some mares go longer, carrying past a year is less common but can be normal for some individuals.
Factors Affecting Gestation Length
Several variables can influence exactly when your mare will foal:
Season of Breeding: Mares bred earlier in the year (Winter/early Spring) often have slightly longer gestation periods than those bred in late Spring or Summer due to daylight length.
Foal Gender: Statistical studies suggest that colts (males) may be carried slightly longer than fillies (females), typically by 1-3 days.
Mare's History: Some mares are consistently "early" or "late." If your mare has foaled before, check her previous records.
Nutritional Status: Severely undernourished mares may have altered gestation lengths, though this is rare in managed breeding programs.
Signs of Approaching Labor
As the calculated date approaches, observe your mare for physical changes indicating imminent foaling:
Udder Development: The udder usually begins to fill 2-4 weeks prior to foaling, becoming distended and tight.
"Waxing": Beads of colostrum (wax) may appear on the teat ends 6-48 hours before birth.
Relaxation of Pelvic Ligaments: The tail head may feel soft and mushy, and the croup muscles relax.
Behavioral Changes: Restlessness, pacing, sweating, or isolation from the herd are common signs of first-stage labor.
Always keep your veterinarian's number handy as the due date approaches. While most deliveries are uncomplicated, being prepared is the best way to ensure the safety of both mare and foal.
function calculateFoaling() {
// Get input value
var dateInput = document.getElementById("breedingDate").value;
var resultBox = document.getElementById("result");
// Validate input
if (!dateInput) {
alert("Please select a valid breeding date.");
resultBox.style.display = "none";
return;
}
// Create Date object from input
// Appending time to ensure local timezone calculation avoids off-by-one errors with UTC
var breedingDate = new Date(dateInput + 'T12:00:00');
// Constants for equine gestation
var avgGestation = 340;
var minGestation = 320;
var maxGestation = 365;
// Calculate Average Date
var avgDate = new Date(breedingDate);
avgDate.setDate(breedingDate.getDate() + avgGestation);
// Calculate Minimum Date
var minDate = new Date(breedingDate);
minDate.setDate(breedingDate.getDate() + minGestation);
// Calculate Maximum Date
var maxDate = new Date(breedingDate);
maxDate.setDate(breedingDate.getDate() + maxGestation);
// Calculate Current Day of Gestation
var today = new Date();
var diffTime = Math.abs(today – breedingDate);
var diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
// Adjust logic if breeding date is in the future
var currentGestationText = "";
if (breedingDate > today) {
currentGestationText = "Breeding date is in the future";
} else {
// Check if already foaled based on max duration
if (diffDays > 400) {
currentGestationText = "Check date (Over 400 days passed)";
} else {
currentGestationText = "Day " + diffDays;
}
}
// Format dates for display
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
document.getElementById("displayAvgDate").innerHTML = avgDate.toLocaleDateString('en-US', options);
document.getElementById("displayMinDate").innerHTML = minDate.toLocaleDateString('en-US', options);
document.getElementById("displayMaxDate").innerHTML = maxDate.toLocaleDateString('en-US', options);
document.getElementById("displayCurrentDay").innerHTML = currentGestationText;
// Show result box
resultBox.style.display = "block";
}