Army Fitness Calculator

ACFT Score Calculator

Male Female
17-21 22-26 27-31 32-36 37-41 42-46 47-51 52+

ACFT Events

Results Summary


Understanding Your ACFT Score

The Army Combat Fitness Test (ACFT) is the current physical fitness assessment for the United States Army. It consists of six events designed to better predict a Soldier's readiness for the physical demands of modern combat. To pass, a Soldier must score at least 60 points in each of the six events, for a minimum total score of 360.

The Six ACFT Events

  • 3-Repetition Maximum Deadlift (MDL): Tests muscular strength and lower body power.
  • Standing Power Throw (SPT): Tests explosive power by throwing a 10-pound medicine ball backward.
  • Hand-Release Push-Up (HRP): Tests upper body muscular endurance.
  • Sprint-Drag-Carry (SDC): Tests agility, anaerobic capacity, and muscular endurance through a 250m shuttle.
  • Plank (PLK): Tests core strength and stability.
  • Two-Mile Run (2MR): Tests aerobic endurance.

Scoring and Standards

Scores are calculated based on age and gender performance tables. While the minimum passing score is 60 per event, the maximum is 100, leading to a total possible score of 600. For example, a 22-year-old male might need a 13:22 2-mile run for 100 points, whereas a 22:00 run might result in 60 points.

Example Scenarios

Scenario 1: High Performer
A 25-year-old female hitting 200 lbs on the deadlift, throwing 8 meters, completing 45 pushups, a 1:50 SDC, a 3:30 plank, and a 16:00 run would typically score above 500 points, demonstrating high physical readiness.

Scenario 2: Minimum Passing
A 30-year-old male hitting 140 lbs deadlift, 6m throw, 10 pushups, 2:30 SDC, 1:30 plank, and a 21:00 run would be right at the threshold for passing (60 points per event).

function calculateACFT() { var gender = document.getElementById("gender").value; var age = parseInt(document.getElementById("ageGroup").value); var mdl = parseFloat(document.getElementById("mdl").value) || 0; var spt = parseFloat(document.getElementById("spt").value) || 0; var hrp = parseInt(document.getElementById("hrp").value) || 0; var sdc_m = parseInt(document.getElementById("sdc_m").value) || 0; var sdc_s = parseInt(document.getElementById("sdc_s").value) || 0; var sdcTotal = (sdc_m * 60) + sdc_s; var plk_m = parseInt(document.getElementById("plk_m").value) || 0; var plk_s = parseInt(document.getElementById("plk_s").value) || 0; var plkTotal = (plk_m * 60) + plk_s; var tmr_m = parseInt(document.getElementById("tmr_m").value) || 0; var tmr_s = parseInt(document.getElementById("tmr_s").value) || 0; var tmrTotal = (tmr_m * 60) + tmr_s; // Simplified scoring logic simulation for ACFT 3.0 standards // Real scoring uses complex tables; these functions approximate the 60-100 point range function getEventScore(val, min, max, inverse) { var score; if (inverse) { if (val 0) score = 100; else if (val >= min) score = 60; else { var range = min – max; var performance = min – val; score = 60 + (performance / range) * 40; } } else { if (val >= max) score = 100; else if (val <= min) score = 60; else { var range = max – min; var performance = val – min; score = 60 + (performance / range) * 40; } } if (val === 0) return 0; return Math.min(100, Math.max(0, Math.round(score))); } // Gender/Age adjustments (Simplified coefficients) var modifier = (gender === "female") ? 0.85 : 1.0; var ageMod = 1 – ((age – 17) * 0.005); var mdlScore = getEventScore(mdl, 140 * modifier * ageMod, 340 * modifier); var sptScore = getEventScore(spt, 4.5 * modifier * ageMod, 12.5 * modifier); var hrpScore = getEventScore(hrp, 10 * modifier * ageMod, 60 * modifier); var sdcScore = getEventScore(sdcTotal, 180 / modifier / ageMod, 90 / modifier, true); var plkScore = getEventScore(plkTotal, 90 * modifier * ageMod, 220 * modifier); var tmrScore = getEventScore(tmrTotal, 1320 / modifier / ageMod, 800 / modifier, true); var totalScore = mdlScore + sptScore + hrpScore + sdcScore + plkScore + tmrScore; var failedEvents = []; if (mdlScore < 60) failedEvents.push("Deadlift"); if (sptScore < 60) failedEvents.push("Power Throw"); if (hrpScore < 60) failedEvents.push("Push-Ups"); if (sdcScore < 60) failedEvents.push("Sprint-Drag-Carry"); if (plkScore < 60) failedEvents.push("Plank"); if (tmrScore 0) { statusDiv.innerHTML = "Status: FAIL (Failed events: " + failedEvents.join(", ") + ")"; } else { statusDiv.innerHTML = "Status: PASS"; } resultDiv.scrollIntoView({ behavior: 'smooth' }); }

Leave a Comment