Push-Up Fitness Test
Score your push-up fitness test based on YMCA standards by age and gender.
Standards by Age & Gender (Male · 20-29)
| Category | Minimum Push-ups |
|---|---|
| Excellent | 54+ |
| Good | 47+ |
| PushUpFitnessTest.aboveAvg | 37+ |
| Average | 29+ |
| PushUpFitnessTest.belowAvg | 22+ |
| Poor | 17+ |
Standards based on YMCA / ACE fitness guidelines
About this tool
The push-up is one of the most accessible and effective fitness tests because it measures upper body strength, core stability, and muscular endurance all in one movement. Unlike expensive equipment that requires a gym, all you need is your own body weight and open floor space. Push-up performance has been tracked by fitness organizations and military standards for decades, making it a reliable benchmark for comparing your fitness level to established norms.
To use this tool, select your age and gender, perform your best push-up test using proper form, and enter the number of repetitions you completed. The calculator instantly compares your result against YMCA fitness assessment standards and tells you your fitness category: whether you're below average, average, good, excellent, or superior. This gives you a clear understanding of where you stand and what to aim for.
Remember that consistency matters more than raw numbers—the same test conditions (same time of day, adequate rest, proper warmup) help you track meaningful progress over weeks and months. Whether you're training for athletic performance, military readiness, or simply improving your overall fitness, this tool removes guesswork and provides objective feedback based on evidence-based standards.
Frequently Asked Questions
Code Implementation
# Push-up fitness test score calculator (YMCA standards)
YMCA_STANDARDS = {
"male": {
(18, 25): [("Excellent", 56), ("Good", 47), ("Above Average", 41),
("Average", 34), ("Below Average", 25), ("Poor", 18), ("Very Poor", 0)],
(26, 35): [("Excellent", 51), ("Good", 41), ("Above Average", 35),
("Average", 29), ("Below Average", 22), ("Poor", 17), ("Very Poor", 0)],
(36, 45): [("Excellent", 46), ("Good", 36), ("Above Average", 30),
("Average", 24), ("Below Average", 18), ("Poor", 13), ("Very Poor", 0)],
(46, 55): [("Excellent", 41), ("Good", 31), ("Above Average", 25),
("Average", 20), ("Below Average", 13), ("Poor", 9), ("Very Poor", 0)],
(56, 65): [("Excellent", 36), ("Good", 26), ("Above Average", 21),
("Average", 17), ("Below Average", 9), ("Poor", 6), ("Very Poor", 0)],
},
"female": {
(18, 25): [("Excellent", 42), ("Good", 33), ("Above Average", 28),
("Average", 21), ("Below Average", 15), ("Poor", 10), ("Very Poor", 0)],
(26, 35): [("Excellent", 39), ("Good", 30), ("Above Average", 24),
("Average", 19), ("Below Average", 13), ("Poor", 8), ("Very Poor", 0)],
(36, 45): [("Excellent", 34), ("Good", 25), ("Above Average", 20),
("Average", 14), ("Below Average", 9), ("Poor", 5), ("Very Poor", 0)],
(46, 55): [("Excellent", 29), ("Good", 20), ("Above Average", 15),
("Average", 10), ("Below Average", 6), ("Poor", 3), ("Very Poor", 0)],
(56, 65): [("Excellent", 24), ("Good", 17), ("Above Average", 12),
("Average", 7), ("Below Average", 4), ("Poor", 2), ("Very Poor", 0)],
},
}
def get_push_up_rating(age: int, gender: str, count: int) -> str:
gender = gender.lower()
if gender not in YMCA_STANDARDS:
return "Unknown gender"
for age_range, standards in YMCA_STANDARDS[gender].items():
if age_range[0] <= age <= age_range[1]:
for rating, threshold in standards:
if count >= threshold:
return rating
return "Very Poor"
return "Age out of range"
# Examples
print(get_push_up_rating(28, "male", 35)) # Good
print(get_push_up_rating(35, "female", 22)) # Above AverageComments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.