Army Fitness Test Calculator

Army Combat Fitness Test (ACFT) Calculator

Use this calculator to estimate your score on the Army Combat Fitness Test (ACFT) based on your performance in each of the six events. The ACFT is designed to assess a Soldier's physical readiness for combat tasks.

:
:
:

Understanding the Army Combat Fitness Test (ACFT)

The Army Combat Fitness Test (ACFT) is the U.S. Army's physical fitness test, designed to better connect fitness with combat readiness. It replaced the Army Physical Fitness Test (APFT) in 2022 and consists of six events that measure various components of fitness crucial for Soldier tasks.

The Six Events of the ACFT:

  1. 3-Repetition Maximum Deadlift (MDL): Measures muscular strength. Soldiers lift the maximum weight possible for three repetitions.
  2. Standing Power Throw (SPT): Measures explosive power. Soldiers throw a 10-pound medicine ball backward and overhead for distance.
  3. Hand Release Push-Up (HRP): Measures muscular endurance. Soldiers perform as many push-ups as possible in two minutes, releasing their hands from the ground at the bottom of each repetition.
  4. Sprint-Drag-Carry (SDC): Measures muscular endurance, strength, agility, and anaerobic capacity. This event involves five 50-meter shuttles: sprint, 90-pound sled drag, lateral shuffle, two 40-pound kettlebell carry, and sprint.
  5. Plank (PLK): Measures core strength and endurance. Soldiers hold a plank position for as long as possible.
  6. 2-Mile Run (2MR): Measures aerobic endurance. Soldiers run two miles for time.

ACFT Scoring and Standards

Each event is scored on a scale of 0 to 100 points. To pass the ACFT, Soldiers must achieve a minimum of 60 points in each event, for a total minimum score of 360 points. Higher scores indicate greater physical readiness. The scoring standards are generally uniform across age groups and genders, though specific passing requirements can vary slightly based on a Soldier's component (Active Duty, National Guard, Reserve) and Military Occupational Specialty (MOS).

How to Use the Calculator:

Enter your performance for each of the six ACFT events into the respective fields. For timed events (Sprint-Drag-Carry, Plank, 2-Mile Run), enter your time in minutes and seconds. Click "Calculate ACFT Score" to see your estimated points for each event, your total score, and your overall pass/fail status based on the general active duty minimum standards.

Disclaimer: This calculator provides an estimate based on general ACFT scoring scales. Official scores are determined by trained graders during a supervised ACFT. Always refer to official Army regulations and your unit's guidance for precise standards and requirements.

.calculator-container { font-family: 'Arial', sans-serif; max-width: 700px; margin: 20px auto; padding: 25px; border: 1px solid #ddd; border-radius: 8px; background-color: #f9f9f9; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } .calculator-container h2 { text-align: center; color: #333; margin-bottom: 20px; } .calc-input-group { margin-bottom: 15px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; } .calc-input-group label { flex: 1 1 200px; color: #555; font-weight: bold; } .calc-input-group input[type="number"] { flex: 0 1 120px; padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 1em; box-sizing: border-box; } .calc-input-group input[type="number"]:focus { border-color: #007bff; outline: none; box-shadow: 0 0 5px rgba(0, 123, 255, 0.25); } .calculate-button { display: block; width: 100%; padding: 12px 20px; background-color: #28a745; color: white; border: none; border-radius: 5px; font-size: 1.1em; cursor: pointer; transition: background-color 0.3s ease; margin-top: 20px; } .calculate-button:hover { background-color: #218838; } .calc-result { margin-top: 25px; padding: 15px; border: 1px solid #e0e0e0; border-radius: 5px; background-color: #e9ecef; color: #333; font-size: 1.1em; line-height: 1.6; } .calc-result p { margin: 5px 0; } .calc-result strong { color: #000; } .pass { color: #28a745; font-weight: bold; } .fail { color: #dc3545; font-weight: bold; } .article-content { margin-top: 30px; padding-top: 20px; border-top: 1px solid #eee; } .article-content h3, .article-content h4 { color: #333; margin-bottom: 15px; } .article-content p, .article-content ol { color: #666; line-height: 1.6; margin-bottom: 10px; } .article-content ol { margin-left: 20px; } .article-content li { margin-bottom: 8px; } // Helper for linear interpolation to calculate points function interpolateScore(rawScore, minRaw, maxRaw, minPoints, maxPoints, isLowerBetter) { if (isNaN(rawScore) || rawScore < 0) { return 0; // Invalid input } if (isLowerBetter) { // For events where lower raw score is better (e.g., time) if (rawScore = maxRaw) return minPoints; // Slower than or equal to min points time var score = ((maxRaw – rawScore) / (maxRaw – minRaw)) * (maxPoints – minPoints) + minPoints; return Math.round(Math.max(minPoints, Math.min(maxPoints, score))); } else { // For events where higher raw score is better (e.g., weight, reps, distance) if (rawScore = maxRaw) return maxPoints; // More than or equal to max points raw score var score = ((rawScore – minRaw) / (maxRaw – minRaw)) * (maxPoints – minPoints) + minPoints; return Math.round(Math.max(minPoints, Math.min(maxPoints, score))); } } // ACFT Event Scoring Functions (based on general standards) // MDL (3RM Deadlift) – Higher is better // Min 140 lbs = 60 pts, Max 340 lbs = 100 pts function calculateMDLScore(weight) { return interpolateScore(weight, 140, 340, 60, 100, false); } // SPT (Standing Power Throw) – Higher is better // Min 4.5 meters = 60 pts, Max 12.5 meters = 100 pts function calculateSPTScore(distance) { return interpolateScore(distance, 4.5, 12.5, 60, 100, false); } // HRP (Hand Release Push-Up) – Higher is better // Min 10 reps = 60 pts, Max 80 reps = 100 pts function calculateHRPScore(reps) { return interpolateScore(reps, 10, 80, 60, 100, false); } // SDC (Sprint-Drag-Carry) – Lower time is better // 100 pts at 1:33 (93 sec), 60 pts at 3:00 (180 sec) function calculateSDCScore(timeInSeconds) { return interpolateScore(timeInSeconds, 93, 180, 100, 60, true); } // PLK (Plank) – Higher time is better // 60 pts at 2:09 (129 sec), 100 pts at 4:20 (260 sec) function calculatePLKScore(timeInSeconds) { return interpolateScore(timeInSeconds, 129, 260, 60, 100, false); } // 2MR (2-Mile Run) – Lower time is better // 100 pts at 13:30 (810 sec), 60 pts at 21:00 (1260 sec) function calculate2MRScore(timeInSeconds) { return interpolateScore(timeInSeconds, 810, 1260, 100, 60, true); } function calculateACFTScore() { // Get input values var mdlWeight = parseFloat(document.getElementById("mdlWeight").value); var sptDistance = parseFloat(document.getElementById("sptDistance").value); var hrpReps = parseInt(document.getElementById("hrpReps").value); var sdcMinutes = parseInt(document.getElementById("sdcMinutes").value); var sdcSeconds = parseInt(document.getElementById("sdcSeconds").value); var sdcTimeInSeconds = (isNaN(sdcMinutes) ? 0 : sdcMinutes * 60) + (isNaN(sdcSeconds) ? 0 : sdcSeconds); var plkMinutes = parseInt(document.getElementById("plkMinutes").value); var plkSeconds = parseInt(document.getElementById("plkSeconds").value); var plkTimeInSeconds = (isNaN(plkMinutes) ? 0 : plkMinutes * 60) + (isNaN(plkSeconds) ? 0 : plkSeconds); var twoMileRunMinutes = parseInt(document.getElementById("twoMileRunMinutes").value); var twoMileRunSeconds = parseInt(document.getElementById("twoMileRunSeconds").value); var twoMileRunTimeInSeconds = (isNaN(twoMileRunMinutes) ? 0 : twoMileRunMinutes * 60) + (isNaN(twoMileRunSeconds) ? 0 : twoMileRunSeconds); // Validate inputs if (isNaN(mdlWeight) || isNaN(sptDistance) || isNaN(hrpReps) || isNaN(sdcTimeInSeconds) || isNaN(plkTimeInSeconds) || isNaN(twoMileRunTimeInSeconds) || mdlWeight < 0 || sptDistance < 0 || hrpReps < 0 || sdcTimeInSeconds < 0 || plkTimeInSeconds < 0 || twoMileRunTimeInSeconds < 0) { document.getElementById("acftResult").innerHTML = "Please enter valid positive numbers for all fields."; return; } // Calculate scores for each event var mdlScore = calculateMDLScore(mdlWeight); var sptScore = calculateSPTScore(sptDistance); var hrpScore = calculateHRPScore(hrpReps); var sdcScore = calculateSDCScore(sdcTimeInSeconds); var plkScore = calculatePLKScore(plkTimeInSeconds); var twoMileRunScore = calculate2MRScore(twoMileRunTimeInSeconds); // Calculate total score var totalScore = mdlScore + sptScore + hrpScore + sdcScore + plkScore + twoMileRunScore; // Determine pass/fail status (general active duty standard: 60 points per event, 360 total) var passStatus = "Pass"; var passClass = "pass"; var failReason = []; if (mdlScore < 60) failReason.push("MDL (Deadlift)"); if (sptScore < 60) failReason.push("SPT (Power Throw)"); if (hrpScore < 60) failReason.push("HRP (Push-Up)"); if (sdcScore < 60) failReason.push("SDC (Sprint-Drag-Carry)"); if (plkScore < 60) failReason.push("PLK (Plank)"); if (twoMileRunScore 0) { passStatus = "Fail"; passClass = "fail"; } else if (totalScore < 360) { passStatus = "Fail"; passClass = "fail"; failReason.push("Total Score (below 360)"); } // Display results var resultHTML = "

Your ACFT Results:

"; resultHTML += "3-Repetition Maximum Deadlift (MDL): " + mdlScore + " points"; resultHTML += "Standing Power Throw (SPT): " + sptScore + " points"; resultHTML += "Hand Release Push-Up (HRP): " + hrpScore + " points"; resultHTML += "Sprint-Drag-Carry (SDC): " + sdcScore + " points"; resultHTML += "Plank (PLK): " + plkScore + " points"; resultHTML += "2-Mile Run (2MR): " + twoMileRunScore + " points"; resultHTML += "Total ACFT Score: " + totalScore + " points"; resultHTML += "Overall Status: " + passStatus + ""; if (failReason.length > 0) { resultHTML += "You failed to meet the minimum standard in: " + failReason.join(", ") + "."; } document.getElementById("acftResult").innerHTML = resultHTML; }

Leave a Comment