Calculate your Navy PFA score based on your performance in running, push-ups, and curl-ups.
Male
Female
Enter time as MM:SS (e.g., 12:30 for 12 minutes and 30 seconds)
Your PFA Score: –
Understanding the Navy Physical Fitness Assessment (PFA)
The Navy's Physical Fitness Assessment (PFA) is a critical component of maintaining the health, readiness, and operational capability of its service members. It is designed to ensure that sailors are physically fit to perform their duties effectively and to promote a healthy lifestyle. The PFA consists of three components: a 1.5-mile run, push-ups, and curl-ups. Each component is scored, and these scores are then combined into a total PFA score.
PFA Components and Scoring
The scoring for each component varies based on age and gender. The Navy provides detailed tables and standards that dictate how many repetitions or how fast a time is required to achieve a certain score. Generally, higher numbers of repetitions (for push-ups and curl-ups) and faster times (for the run) result in higher scores.
1.5 Mile Run:
This event measures cardiovascular endurance. Service members must complete the 1.5-mile run within a specified time. Faster times earn more points. The time is typically converted into points based on standardized tables.
Push-ups:
This exercise measures upper body strength and endurance. Participants perform as many continuous push-ups as possible in two minutes. Proper form is essential; incorrect form may result in repetitions not being counted. The number of correctly performed push-ups contributes to the score.
Curl-ups:
This exercise measures abdominal strength and endurance. Similar to push-ups, participants perform as many continuous curl-ups as possible in two minutes. Again, proper form is crucial for the repetitions to count. The number of correctly performed curl-ups adds to the overall score.
Calculating Your Navy PFA Score
The calculator above uses simplified algorithms derived from typical Navy PFA scoring guidelines. It takes your age, gender, 1.5-mile run time, number of push-ups, and number of curl-ups to estimate your total PFA score. Please note that official scoring may involve more nuanced calculations or specific standards that can change. This calculator serves as a helpful tool for estimation and preparation.
The scoring for each event is converted to points, and these points are summed up. The exact point allocation for a given performance metric (e.g., a specific run time, number of push-ups) is based on Navy-specific score charts that are updated periodically. Factors like age and gender are used to normalize these standards, ensuring a fair assessment across different demographics.
Why the PFA Matters
The PFA is not just a physical test; it's a measure of a sailor's commitment to personal fitness, which is directly linked to their ability to perform military duties. A high PFA score indicates a high level of physical readiness. Conversely, failing to meet the minimum standards can have consequences, including the need for remedial physical conditioning and potential impact on career advancement.
Regularly assessing your PFA score using tools like this calculator can help you identify areas for improvement and tailor your training regimen effectively. It's recommended to consult official Navy guidance for the most up-to-date PFA standards and scoring methods.
function parseRunTime(timeString) {
var parts = timeString.split(':');
if (parts.length === 2) {
var minutes = parseInt(parts[0], 10);
var seconds = parseInt(parts[1], 10);
if (!isNaN(minutes) && !isNaN(seconds) && seconds >= 0 && seconds = 30 && age = 40) ageGroupMultiplier = 0.90; // Example adjustment
} else { // female
if (age >= 30 && age = 40) ageGroupMultiplier = 0.90; // Example adjustment
}
for (var i = 0; i < scores.length; i++) {
if (timeInMinutes = 30 && age = 40) ageGroupMultiplier = 0.90;
} else { // female
if (age >= 30 && age = 40) ageGroupMultiplier = 0.90;
}
for (var i = 0; i = scores[i].minReps) {
var calculatedPoints = scores[i].points * ageGroupMultiplier;
return Math.max(0, Math.round(calculatedPoints));
}
}
return 0; // If reps are below the lowest recorded
}
function getCurlUpScore(reps, age, gender) {
var curlUpScores = {
male: [
{ minReps: 70, points: 100 }, { minReps: 68, points: 98 }, { minReps: 66, points: 96 },
{ minReps: 64, points: 94 }, { minReps: 62, points: 92 }, { minReps: 60, points: 90 },
{ minReps: 58, points: 88 }, { minReps: 56, points: 86 }, { minReps: 54, points: 84 },
{ minReps: 52, points: 82 }, { minReps: 50, points: 80 }, { minReps: 48, points: 78 },
{ minReps: 46, points: 76 }, { minReps: 44, points: 74 }, { minReps: 42, points: 72 },
{ minReps: 40, points: 70 }, { minReps: 38, points: 68 }, { minReps: 36, points: 66 },
{ minReps: 34, points: 64 }, { minReps: 32, points: 62 }, { minReps: 30, points: 60 },
{ minReps: 28, points: 58 }, { minReps: 26, points: 56 }, { minReps: 24, points: 54 },
{ minReps: 22, points: 52 }, { minReps: 20, points: 50 }, { minReps: 18, points: 48 },
{ minReps: 16, points: 46 }, { minReps: 14, points: 44 }, { minReps: 12, points: 42 },
{ minReps: 10, points: 40 }, { minReps: 8, points: 38 }, { minReps: 6, points: 36 },
{ minReps: 4, points: 34 }, { minReps: 2, points: 32 }, { minReps: 0, points: 30 }
],
female: [
{ minReps: 55, points: 100 }, { minReps: 53, points: 98 }, { minReps: 51, points: 96 },
{ minReps: 49, points: 94 }, { minReps: 47, points: 92 }, { minReps: 45, points: 90 },
{ minReps: 43, points: 88 }, { minReps: 41, points: 86 }, { minReps: 39, points: 84 },
{ minReps: 37, points: 82 }, { minReps: 35, points: 80 }, { minReps: 33, points: 78 },
{ minReps: 31, points: 76 }, { minReps: 29, points: 74 }, { minReps: 27, points: 72 },
{ minReps: 25, points: 70 }, { minReps: 23, points: 68 }, { minReps: 21, points: 66 },
{ minReps: 19, points: 64 }, { minReps: 17, points: 62 }, { minReps: 15, points: 60 },
{ minReps: 13, points: 58 }, { minReps: 11, points: 56 }, { minReps: 9, points: 54 },
{ minReps: 7, points: 52 }, { minReps: 5, points: 50 }, { minReps: 3, points: 48 },
{ minReps: 1, points: 46 }, { minReps: 0, points: 44 }
]
};
var scores = scores[gender] || scores['male']; // Default to male if gender is not recognized
// Adjust for age groups. Simplified.
var ageGroupMultiplier = 1.0;
if (gender === 'male') {
if (age >= 30 && age = 40) ageGroupMultiplier = 0.90;
} else { // female
if (age >= 30 && age = 40) ageGroupMultiplier = 0.90;
}
for (var i = 0; i = scores[i].minReps) {
var calculatedPoints = scores[i].points * ageGroupMultiplier;
return Math.max(0, Math.round(calculatedPoints));
}
}
return 0; // If reps are below the lowest recorded
}
function calculateNavyPfa() {
var ageInput = document.getElementById('age');
var genderInput = document.getElementById('gender');
var runTimeInput = document.getElementById('runTime');
var pushUpsInput = document.getElementById('pushUps');
var curlUpsInput = document.getElementById('curlUps');
var resultDiv = document.getElementById('result');
var errorMessageDiv = document.getElementById('errorMessage');
errorMessageDiv.textContent = "; // Clear previous errors
resultDiv.textContent = 'Your PFA Score: -'; // Reset result
var age = parseInt(ageInput.value, 10);
var gender = genderInput.value;
var runTimeString = runTimeInput.value;
var pushUps = parseInt(pushUpsInput.value, 10);
var curlUps = parseInt(curlUpsInput.value, 10);
// Input validation
if (isNaN(age) || age 99) {
errorMessageDiv.textContent = 'Please enter a valid age.';
return;
}
if (runTimeString.trim() === ") {
errorMessageDiv.textContent = 'Please enter your 1.5 mile run time.';
return;
}
var runTimeInMinutes = parseRunTime(runTimeString);
if (isNaN(runTimeInMinutes)) {
errorMessageDiv.textContent = 'Invalid run time format. Please use MM:SS (e.g., 12:30).';
return;
}
if (isNaN(pushUps) || pushUps < 0) {
errorMessageDiv.textContent = 'Please enter a valid number for push-ups.';
return;
}
if (isNaN(curlUps) || curlUps < 0) {
errorMessageDiv.textContent = 'Please enter a valid number for curl-ups.';
return;
}
// Simplified scoring logic based on common PFA standards.
// NOTE: Official Navy PFA scoring uses detailed tables specific to age and gender.
// This calculator provides an estimation and may not perfectly match official scores.
var runScore = getRunScore(runTimeInMinutes, age, gender);
var pushUpScore = getPushUpScore(pushUps, age, gender);
var curlUpScore = getCurlUpScore(curlUps, age, gender);
// Total PFA Score (sum of components)
var totalPfaScore = runScore + pushUpScore + curlUpScore;
// Cap the total score at 300 (standard maximum for PFA)
totalPfaScore = Math.min(totalPfaScore, 300);
resultDiv.textContent = 'Your PFA Score: ' + totalPfaScore;
}