Skip to content
πŸ› οΈToolsShed

Heart Rate Recovery Calculator

Measure post-exercise heart rate recovery to assess cardiovascular fitness level.

Measured at rest, before exercise

About this tool

Heart rate recovery (HRR) is the amount your pulse drops in the minutes immediately after exercise ends. It's one of the most practical indicators of cardiovascular fitness because a faster recovery typically means your heart is more efficient and your aerobic system is stronger. Unlike VO2 max or other lab-based measures, you can assess HRR anywhere with just a stopwatch and pulse check.

To use this calculator, exercise at moderate to high intensity for at least 10 minutes, then immediately measure your heart rate at rest and again after 1, 2, or 3 minutes of recovery. Enter both values, and the tool calculates your recovery rate. Athletes and fitness enthusiasts use this metric to track improvements over weeks and months, while anyone recovering from illness or sedentary periods can use it as a simple baseline for cardiovascular health.

Generally, recovering 12+ beats per minute in the first minute after exercise suggests good fitness; 20+ beats is considered excellent. However, HRR varies by age, fitness level, and exercise intensity, so compare your results to your own previous measurements rather than strict benchmarks. Consult a healthcare provider if you notice unusual patterns or have underlying health conditions.

Frequently Asked Questions

Code Implementation

def heart_rate_recovery(peak_hr: int, one_min_hr: int) -> dict:
    """Calculate Heart Rate Recovery (HRR) and fitness level."""
    hrr = peak_hr - one_min_hr

    if hrr > 40:
        level = "Excellent"
    elif hrr >= 21:
        level = "Average"
    elif hrr >= 13:
        level = "Below Average"
    else:
        level = "Poor - consult a doctor"

    return {"hrr": hrr, "level": level, "peak": peak_hr, "one_min": one_min_hr}

def max_hr_estimate(age: int) -> int:
    """Estimate maximum heart rate using Fox formula."""
    return 220 - age

# Example: 35-year-old, peak HR 175 bpm, 1-min HR 135 bpm
age = 35
peak = 175
one_min = 135

result = heart_rate_recovery(peak, one_min)
max_hr = max_hr_estimate(age)

print(f"Age: {age}, Estimated max HR: {max_hr} bpm")
print(f"Peak HR: {result['peak']} bpm")
print(f"1-min HR: {result['one_min']} bpm")
print(f"HRR: {result['hrr']} bpm β†’ {result['level']}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.