Functional Threshold Heart Rate (FTHR), sometimes referred to as Lactate Threshold Heart Rate (LTHR), is the maximum heart rate you can sustain for an extended period, typically around one hour, without fatigue increasing exponentially. Unlike Maximum Heart Rate (which is a biological ceiling), FTHR is a performance metric that changes with fitness.
Knowing your FTHR is critical for endurance athletes because it allows you to establish accurate training zones. Training based on FTHR is generally considered more effective than training based on Maximum Heart Rate, as it accounts for your current physiological fitness level.
How to Test Your FTHR
The most common field test to determine FTHR is the 20-minute Time Trial. Here is the standard protocol:
Warm-up: 15-20 minutes of easy to moderate activity, including a few short bursts of intensity to prime the system.
The Test: Go as hard as you can for 20 minutes. This should be a maximal, steady-state effort. It is not an interval session; pace yourself so you don't blow up in the first 5 minutes, but finish completely exhausted.
Cool-down: 10-15 minutes of easy spinning or jogging.
The Calculation: Take the average heart rate of that 20-minute effort and multiply it by 0.95. This effectively approximates what your heart rate would be for a full 60-minute effort. This calculator handles that math automatically.
Understanding the Training Zones
This calculator uses the widely accepted 7-zone system (popularized by Joe Friel) to structure your training. Note that the percentages differ slightly between running and cycling due to the weight-bearing nature of running.
Zone 1 (Active Recovery): Very easy effort, used for recovery rides or runs. promotes blood flow without inducing fatigue.
Zone 2 (Aerobic/Endurance): The "all day" pace. Builds mitochondrial density and fat-burning efficiency. This is where the bulk of training should occur.
Zone 3 (Tempo): A "comfortably hard" pace. Requires concentration but can be maintained.
Zone 4 (Sub-Threshold): Just below your FTHR. Intense aerobic work.
Zone 5a (Super-Threshold): Just above FTHR. Improves the body's ability to clear lactate.
Zone 5b (Aerobic Capacity/VO2 Max): Very hard, short efforts (3-8 minutes). Improves maximum oxygen uptake.
Zone 5c (Anaerobic Capacity): Sprinting or very short bursts. Neuromuscular power.
Cycling vs. Running Zones
It is important to test separately for different sports. Your FTHR for running is typically 5-10 beats higher than cycling because running engages more muscle mass and is weight-bearing. This calculator adjusts the zone percentages based on the activity you select to ensure your training data is accurate for the specific sport.
function calculateFTHR() {
// Get input values
var avgHrInput = document.getElementById('avgHeartRate').value;
var sportType = document.getElementById('sportType').value;
// Validation
if (!avgHrInput || isNaN(avgHrInput) || avgHrInput 250) {
alert("Please enter a valid average heart rate (between 40 and 250 bpm).");
return;
}
var avgHr = parseFloat(avgHrInput);
// Calculate FTHR (95% of 20-min average)
var fthr = Math.round(avgHr * 0.95);
// Display FTHR
document.getElementById('fthrValue').innerText = fthr + " bpm";
document.getElementById('results').style.display = 'block';
// Define Zones based on Sport Type (Joe Friel's Zones)
var zones = [];
if (sportType === 'cycling') {
// Cycling Zones
zones = [
{ name: "Zone 1", desc: "Active Recovery", min: 0, max: Math.round(fthr * 0.81), pct: " 106%" }
];
} else {
// Running Zones (Friel Running)
// Z1 106%
zones = [
{ name: "Zone 1", desc: "Active Recovery", min: 0, max: Math.round(fthr * 0.85), pct: " 106%" }
];
}
// Build Table HTML
var tbody = document.getElementById('zonesBody');
tbody.innerHTML = ""; // Clear previous results
for (var i = 0; i " + z.min + " bpm";
} else if (z.min === 0) {
rangeStr = "< " + z.max + " bpm";
} else {
rangeStr = z.min + " – " + z.max + " bpm";
}
var row = "