Hansons Running Calculator

Hansons Running Pace Calculator

The Hansons Marathon Method is a popular training philosophy that emphasizes cumulative fatigue and specific pace work to prepare runners for the marathon distance. Unlike traditional methods that rely heavily on long runs, Hansons focuses on consistent, moderately long runs and specific workouts designed to simulate race conditions and build endurance without excessive mileage.

Understanding Hansons Paces

The Hansons method prescribes five key training paces, all derived from your goal marathon pace (or in this calculator's case, an equivalent marathon pace based on your recent race performance):

  • Easy Pace: These runs are for recovery and building aerobic base. They should feel comfortable and conversational. Hansons suggests these are typically 60-90 seconds per mile (37-56 seconds per km) slower than your marathon pace.
  • Marathon Pace: This is your target marathon race pace. Training at this pace helps your body adapt to the demands of race day.
  • Tempo Pace: These runs are slightly faster than marathon pace, designed to improve your lactate threshold. They are typically 10-20 seconds per mile (6-12 seconds per km) faster than your marathon pace.
  • Interval Pace: Shorter, faster efforts with recovery, aimed at improving speed and VO2 max. Hansons often bases these on your 10k race pace equivalent.
  • Repetition Pace: Very short, very fast efforts with full recovery, focusing on running economy and top-end speed. These are often based on your 1-mile race pace equivalent.

This calculator helps you determine these specific training paces based on a recent race performance, allowing you to tailor your Hansons training plan to your current fitness level.

Calculate Your Hansons Paces

5K 10K Half Marathon Marathon

H M S

function calculateHansonsPaces() { var raceDistance = document.getElementById("raceDistance").value; var raceHours = parseFloat(document.getElementById("raceHours").value); var raceMinutes = parseFloat(document.getElementById("raceMinutes").value); var raceSeconds = parseFloat(document.getElementById("raceSeconds").value); // Input validation if (isNaN(raceHours) || isNaN(raceMinutes) || isNaN(raceSeconds) || raceHours < 0 || raceMinutes < 0 || raceSeconds = 60 || raceSeconds >= 60) { document.getElementById("hansonsResult").innerHTML = "Please enter valid race time values."; return; } var totalRaceSeconds = (raceHours * 3600) + (raceMinutes * 60) + raceSeconds; if (totalRaceSeconds <= 0) { document.getElementById("hansonsResult").innerHTML = "Race time must be greater than zero."; return; } // Define race distances in meters var distances = { '5k': 5000, '10k': 10000, 'halfMarathon': 21097.5, 'marathon': 42195 }; var D1 = distances[raceDistance]; var D_marathon = distances['marathon']; var D_10k = distances['10k']; var D_mile = 1609.34; // For repetition pace // Riegel's formula: T2 = T1 * (D2 / D1)^1.06 var T_marathon_eq = totalRaceSeconds * Math.pow((D_marathon / D1), 1.06); var T_10k_eq = totalRaceSeconds * Math.pow((D_10k / D1), 1.06); var T_mile_eq = totalRaceSeconds * Math.pow((D_mile / D1), 1.06); // Calculate base paces (seconds per km and seconds per mile) from Equivalent Marathon Time var marathonPaceSecPerKm = T_marathon_eq / (D_marathon / 1000); var marathonPaceSecPerMile = T_marathon_eq / (D_marathon / D_mile); // Hansons Pace Differentials (average values used for calculation) var easyPaceAddSecPerMile = 75; // Average of 60-90 sec/mile var easyPaceAddSecPerKm = 46.6; // Equivalent of 75 sec/mile var tempoPaceSubtractSecPerMile = 15; // Average of 10-20 sec/mile var tempoPaceSubtractSecPerKm = 9.3; // Equivalent of 15 sec/mile // Calculate Hansons Paces var easyPaceSecPerMile = marathonPaceSecPerMile + easyPaceAddSecPerMile; var easyPaceSecPerKm = marathonPaceSecPerKm + easyPaceAddSecPerKm; var tempoPaceSecPerMile = marathonPaceSecPerMile – tempoPaceSubtractSecPerMile; var tempoPaceSecPerKm = marathonPaceSecPerKm – tempoPaceSubtractSecPerKm; // Interval Pace (based on equivalent 10k pace) var intervalPaceSecPerKm = T_10k_eq / (D_10k / 1000); var intervalPaceSecPerMile = T_10k_eq / (D_10k / D_mile); // Repetition Pace (based on equivalent 1-mile pace) var repetitionPaceSecPerKm = T_mile_eq / (D_mile / 1000); var repetitionPaceSecPerMile = T_mile_eq / (D_mile / D_mile); // D_mile / D_mile = 1, so T_mile_eq is already sec/mile // Helper function to format seconds into min:sec function formatPace(totalSeconds) { var minutes = Math.floor(totalSeconds / 60); var seconds = Math.round(totalSeconds % 60); return minutes + ":" + (seconds < 10 ? "0" : "") + seconds; } var resultsHtml = "

Your Estimated Hansons Training Paces:

"; resultsHtml += "Based on your " + raceDistance.toUpperCase() + " time of " + raceHours + "h " + raceMinutes + "m " + raceSeconds + "s, your equivalent marathon pace is approximately " + formatPace(marathonPaceSecPerMile) + "/mile (" + formatPace(marathonPaceSecPerKm) + "/km)."; resultsHtml += ""; resultsHtml += ""; resultsHtml += ""; resultsHtml += ""; resultsHtml += ""; resultsHtml += ""; resultsHtml += ""; resultsHtml += "
Pace TypePace per MilePace per KM
Easy Pace" + formatPace(easyPaceSecPerMile) + "" + formatPace(easyPaceSecPerKm) + "
Marathon Pace" + formatPace(marathonPaceSecPerMile) + "" + formatPace(marathonPaceSecPerKm) + "
Tempo Pace" + formatPace(tempoPaceSecPerMile) + "" + formatPace(tempoPaceSecPerKm) + "
Interval Pace" + formatPace(intervalPaceSecPerMile) + "" + formatPace(intervalPaceSecPerKm) + "
Repetition Pace" + formatPace(repetitionPaceSecPerMile) + "" + formatPace(repetitionPaceSecPerKm) + "
"; resultsHtml += "Note: These paces are estimates based on Riegel's formula for race equivalency and average Hansons differentials. Individual results may vary. Always listen to your body."; document.getElementById("hansonsResult").innerHTML = resultsHtml; } .hansons-running-calculator { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f9f9f9; padding: 25px; border-radius: 10px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); max-width: 700px; margin: 20px auto; color: #333; } .hansons-running-calculator h2, .hansons-running-calculator h3 { color: #2c3e50; text-align: center; margin-bottom: 20px; } .hansons-running-calculator p { line-height: 1.6; margin-bottom: 15px; } .hansons-running-calculator ul { list-style-type: disc; margin-left: 20px; margin-bottom: 20px; } .hansons-running-calculator ul li { margin-bottom: 8px; } .calculator-form label { display: inline-block; margin-bottom: 8px; font-weight: bold; color: #555; width: 180px; /* Align labels */ } .calculator-form input[type="number"], .calculator-form select { padding: 10px; border: 1px solid #ccc; border-radius: 5px; margin-bottom: 15px; font-size: 16px; box-sizing: border-box; } .calculator-form select { width: 150px; margin-right: 10px; } .calculator-form button { background-color: #3498db; color: white; padding: 12px 25px; border: none; border-radius: 5px; cursor: pointer; font-size: 18px; display: block; width: fit-content; margin: 20px auto 0; transition: background-color 0.3s ease; } .calculator-form button:hover { background-color: #2980b9; } .calculator-result { margin-top: 30px; padding: 20px; background-color: #eaf4f9; border: 1px solid #cce7f4; border-radius: 8px; text-align: center; } .calculator-result h3 { color: #2c3e50; margin-top: 0; margin-bottom: 15px; } .calculator-result table { width: 100%; border-collapse: collapse; margin-top: 20px; } .calculator-result th, .calculator-result td { border: 1px solid #ddd; padding: 12px; text-align: center; } .calculator-result th { background-color: #d4e6f1; color: #333; font-weight: bold; } .calculator-result tr:nth-child(even) { background-color: #f2f8fc; } .calculator-result p { font-size: 15px; color: #555; } .calculator-result p small { font-size: 0.85em; color: #777; }

Leave a Reply

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