Calculate Marathon Time from Half Marathon

Marathon Time Predictor

Estimate your full marathon finish based on your half marathon PB

Predicted Marathon Time

–:–:–

How to Calculate Your Marathon Time from a Half Marathon

Running a marathon (26.2 miles) is a significantly different physiological challenge than a half marathon (13.1 miles). This calculator uses the Riegel Formula, which is the industry standard for predicting race times across different distances. The formula is: T2 = T1 * (D2 / D1)^1.06.

When predicting a marathon from a half marathon, the distance doubles, but the fatigue factor increases exponentially. Most runners cannot simply double their half marathon time; the 1.06 exponent accounts for the natural aerobic decay that occurs during the second half of a full marathon.

Key Factors Influencing Your Prediction

  • Weekly Mileage: The Riegel formula assumes you have done the appropriate endurance training. If your weekly mileage is low, your actual marathon time may be slower than predicted.
  • The "Wall": Glycogen depletion typically occurs around mile 20. Proper fueling strategies are required to hit your predicted time.
  • Course Profile: If your half marathon was on a flat course and your target marathon is hilly (like Boston), add 5-10 minutes to the prediction.

Example Predictions

Half Marathon Time Predicted Marathon
1:30:00 (Sub-Elite/Fast) 3:07:37
1:45:00 (Competitive) 3:38:54
2:00:00 (Recreational) 4:10:10
function calculateMarathonTime() { var h = parseFloat(document.getElementById('hmHours').value) || 0; var m = parseFloat(document.getElementById('hmMinutes').value) || 0; var s = parseFloat(document.getElementById('hmSeconds').value) || 0; if (h === 0 && m === 0 && s === 0) { alert("Please enter a valid half marathon time."); return; } // Convert total input to seconds var totalSecondsHM = (h * 3600) + (m * 60) + s; // Riegel Formula: T2 = T1 * (D2/D1)^1.06 // For Marathon (42.195) vs Half (21.0975), D2/D1 is exactly 2. // 2 ^ 1.06 is approximately 2.08493 var totalSecondsMarathon = totalSecondsHM * Math.pow(2, 1.06); // Format output var marH = Math.floor(totalSecondsMarathon / 3600); var marM = Math.floor((totalSecondsMarathon % 3600) / 60); var marS = Math.floor(totalSecondsMarathon % 60); // Padding zeros var displayH = marH; var displayM = marM < 10 ? "0" + marM : marM; var displayS = marS < 10 ? "0" + marS : marS; var finalTimeString = displayH + ":" + displayM + ":" + displayS; // Calculate Pace (Min/Mile) var totalMinutes = totalSecondsMarathon / 60; var pacePerMileRaw = totalMinutes / 26.2188; var paceMin = Math.floor(pacePerMileRaw); var paceSec = Math.floor((pacePerMileRaw – paceMin) * 60); var displayPaceSec = paceSec < 10 ? "0" + paceSec : paceSec; document.getElementById('finalTime').innerHTML = finalTimeString; document.getElementById('paceInfo').innerHTML = "Predicted Average Pace: " + paceMin + ":" + displayPaceSec + " per mile"; document.getElementById('resultArea').style.display = 'block'; }

Leave a Comment