Mil Pay Calculator

Military Pay Calculator

Use this calculator to estimate your monthly military pay, including base pay, Basic Allowance for Housing (BAH), Basic Allowance for Subsistence (BAS), and any special pays. Please note that actual pay can vary based on specific circumstances, location, and current pay charts.

E-1 E-2 E-3 E-4 E-5 E-6 E-7 E-8 E-9 W-1 W-2 W-3 W-4 W-5 O-1 O-2 O-3 O-4 O-5 O-6 O-7 O-8 O-9 O-10
Enter your specific BAH rate based on your location and dependent status. You can find this on Defense Travel Management Office.
Enter your specific BAS rate. For 2024, Enlisted BAS is $460.42, Officer BAS is $316.98.
e.g., Hostile Fire Pay, Hazardous Duty Incentive Pay, Sea Pay, etc.

Understanding Your Military Pay

Military pay is a comprehensive compensation package designed to support service members and their families. It consists of several key components, each calculated based on various factors such as rank, years of service, family status, and geographic location.

1. Base Pay

Base pay is the fundamental component of military compensation. It is determined by your pay grade (rank) and your cumulative years of service. As you advance in rank and accrue more time in service, your base pay increases. This calculator uses a simplified representation of the official pay charts to estimate your monthly base pay.

2. Basic Allowance for Housing (BAH)

BAH is a non-taxable allowance provided to service members to help offset the cost of housing when government quarters are not provided. The amount of BAH you receive depends on your geographic location, pay grade, and whether you have dependents. BAH rates are set annually and vary significantly by zip code. For accurate BAH, it's crucial to look up the specific rate for your duty station.

3. Basic Allowance for Subsistence (BAS)

BAS is a non-taxable allowance intended to offset the costs of a service member's meals. Unlike BAH, BAS is generally a fixed monthly rate that varies only slightly between enlisted members and officers. It is designed to provide a flat rate for food expenses, regardless of location or family size.

4. Special and Incentive Pays

Beyond base pay and allowances, many service members are eligible for various special and incentive (S&I) pays. These are typically taxable and are awarded for specific skills, duties, or hazardous conditions. Examples include:

  • Hostile Fire Pay/Imminent Danger Pay (HFP/IDP): For service in designated combat zones or areas of imminent danger.
  • Hazardous Duty Incentive Pay (HDIP): For performing duties such as flying, parachuting, or diving.
  • Sea Pay: For enlisted members serving on ships.
  • Assignment Incentive Pay (AIP): For accepting certain difficult-to-fill assignments.
  • Reenlistment Bonuses: Incentives for service members to continue their service.

This calculator includes a generic "Monthly Special Pay" input to allow you to factor in any additional pays you may receive.

How to Use the Calculator

  1. Select Your Pay Grade: Choose your current military rank from the dropdown menu.
  2. Enter Years of Service: Input your total years of service.
  3. Indicate Dependents: Check the box if you have dependents, as this affects BAH.
  4. Enter BAH: Look up your specific BAH rate for your location and dependent status on the official Defense Travel Management Office website and enter it.
  5. Enter BAS: Input your current monthly BAS rate.
  6. Enter Special Pay: Add any additional monthly special or incentive pays you receive.
  7. Click "Calculate Monthly Pay": The calculator will then display your estimated total monthly military pay.

Important Considerations

This calculator provides an estimate and should not be considered a definitive statement of your actual pay. Factors such as taxes, deductions for SGLI (Servicemembers' Group Life Insurance), Thrift Savings Plan (TSP) contributions, and other allotments are not included in this calculation. For precise pay information, always refer to your official Leave and Earnings Statement (LES).

Example Calculation:

Let's consider an E-6 with 10 years of service, with dependents, stationed in a medium-cost area, receiving some special pay.

  • Pay Grade: E-6
  • Years of Service: 10
  • Has Dependents: Yes
  • Monthly Housing Allowance (BAH): $2,000 (example for a medium-cost area with dependents)
  • Monthly Subsistence Allowance (BAS): $460.42 (Enlisted BAS 2024)
  • Monthly Special Pay: $150 (e.g., Sea Pay)

Based on a simplified 2024 pay chart, an E-6 with 10 years of service would have a base pay of approximately $4,395.90.

Total Estimated Monthly Pay: $4,395.90 (Base Pay) + $2,000 (BAH) + $460.42 (BAS) + $150 (Special Pay) = $7,006.32

.mil-pay-calculator-container { font-family: 'Arial', sans-serif; max-width: 700px; margin: 20px auto; padding: 25px; border: 1px solid #e0e0e0; border-radius: 8px; background-color: #f9f9f9; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } .mil-pay-calculator-container h2 { text-align: center; color: #2c3e50; margin-bottom: 20px; } .mil-pay-calculator-container h3 { color: #34495e; margin-top: 25px; margin-bottom: 15px; border-bottom: 1px solid #eee; padding-bottom: 5px; } .mil-pay-calculator-container h4 { color: #34495e; margin-top: 20px; margin-bottom: 10px; } .calculator-form .form-group { margin-bottom: 15px; } .calculator-form label { display: block; margin-bottom: 5px; font-weight: bold; color: #333; } .calculator-form input[type="number"], .calculator-form select { width: calc(100% – 22px); padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .calculator-form input[type="checkbox"] { margin-top: 8px; transform: scale(1.2); } .calculator-form small { display: block; margin-top: 5px; color: #666; font-size: 0.9em; } .calculator-form a { color: #007bff; text-decoration: none; } .calculator-form a:hover { text-decoration: underline; } .calculate-button { display: block; width: 100%; padding: 12px 20px; background-color: #28a745; color: white; border: none; border-radius: 4px; font-size: 18px; cursor: pointer; margin-top: 20px; transition: background-color 0.3s ease; } .calculate-button:hover { background-color: #218838; } .result-container { margin-top: 25px; padding: 15px; border: 1px solid #d4edda; background-color: #e9f7ef; border-radius: 4px; font-size: 1.1em; color: #155724; text-align: center; font-weight: bold; } .result-container p { margin: 5px 0; } .calculator-article { margin-top: 30px; padding-top: 20px; border-top: 1px dashed #e0e0e0; } .calculator-article p, .calculator-article ul { line-height: 1.6; color: #555; margin-bottom: 10px; } .calculator-article ul { list-style-type: disc; margin-left: 20px; padding-left: 0; } .calculator-article li { margin-bottom: 5px; } function calculateMilitaryPay() { var payGrade = document.getElementById("payGrade").value; var yearsService = parseFloat(document.getElementById("yearsService").value); var hasDependents = document.getElementById("hasDependents").checked; var monthlyHousingAllowance = parseFloat(document.getElementById("monthlyHousingAllowance").value); var monthlySubsistenceAllowance = parseFloat(document.getElementById("monthlySubsistenceAllowance").value); var monthlySpecialPay = parseFloat(document.getElementById("monthlySpecialPay").value); // Input validation if (isNaN(yearsService) || yearsService < 0) { yearsService = 0; document.getElementById("yearsService").value = 0; } if (isNaN(monthlyHousingAllowance) || monthlyHousingAllowance < 0) { monthlyHousingAllowance = 0; document.getElementById("monthlyHousingAllowance").value = 0; } if (isNaN(monthlySubsistenceAllowance) || monthlySubsistenceAllowance < 0) { monthlySubsistenceAllowance = 0; document.getElementById("monthlySubsistenceAllowance").value = 0; } if (isNaN(monthlySpecialPay) || monthlySpecialPay < 0) { monthlySpecialPay = 0; document.getElementById("monthlySpecialPay").value = 0; } var basePay = getBasePay(payGrade, yearsService); var totalMonthlyPay = basePay + monthlyHousingAllowance + monthlySubsistenceAllowance + monthlySpecialPay; var resultDiv = document.getElementById("result"); resultDiv.innerHTML = "

Estimated Monthly Pay:

" + "Base Pay: $" + basePay.toFixed(2) + "" + "Monthly Housing Allowance (BAH): $" + monthlyHousingAllowance.toFixed(2) + "" + "Monthly Subsistence Allowance (BAS): $" + monthlySubsistenceAllowance.toFixed(2) + "" + "Monthly Special Pay: $" + monthlySpecialPay.toFixed(2) + "" + "Total Estimated Monthly Pay: $" + totalMonthlyPay.toFixed(2) + ""; } function getBasePay(payGrade, yearsService) { var basePay = 0; // Simplified 2024 Base Pay Table (Monthly) – Representative values // This table is a simplified representation and does not cover all possible years of service or specific pay increments. // For exact figures, refer to official DoD pay charts. if (payGrade === "E-1") { if (yearsService < 2) basePay = 1773.90; else basePay = 1896.90; // E-1 caps at 2 years } else if (payGrade === "E-2") { if (yearsService < 2) basePay = 1998.90; else basePay = 2112.30; // E-2 caps at 2 years } else if (payGrade === "E-3") { if (yearsService < 2) basePay = 2100.30; else if (yearsService < 3) basePay = 2213.70; else basePay = 2327.10; // E-3 caps at 3 years } else if (payGrade === "E-4") { if (yearsService < 2) basePay = 2637.90; else if (yearsService < 3) basePay = 2790.90; else if (yearsService < 4) basePay = 2943.90; else basePay = 3096.90; // E-4 caps at 6 years } else if (payGrade === "E-5") { if (yearsService < 2) basePay = 2943.90; else if (yearsService < 3) basePay = 3174.90; else if (yearsService < 4) basePay = 3327.90; else if (yearsService < 6) basePay = 3480.90; else if (yearsService < 8) basePay = 3633.90; else if (yearsService < 10) basePay = 3786.90; else basePay = 3786.90; // E-5 caps at 10 years } else if (payGrade === "E-6") { if (yearsService < 2) basePay = 3270.90; else if (yearsService < 3) basePay = 3480.90; else if (yearsService < 4) basePay = 3633.90; else if (yearsService < 6) basePay = 3786.90; else if (yearsService < 8) basePay = 3939.90; else if (yearsService < 10) basePay = 4092.90; else if (yearsService < 12) basePay = 4245.90; else if (yearsService < 14) basePay = 4398.90; else basePay = 4398.90; // E-6 caps at 14 years } else if (payGrade === "E-7") { if (yearsService < 6) basePay = 4089.90; else if (yearsService < 8) basePay = 4242.90; else if (yearsService < 10) basePay = 4395.90; else if (yearsService < 12) basePay = 4548.90; else if (yearsService < 14) basePay = 4701.90; else if (yearsService < 16) basePay = 4854.90; else if (yearsService < 18) basePay = 5007.90; else if (yearsService < 20) basePay = 5160.90; else if (yearsService < 22) basePay = 5313.90; else if (yearsService < 24) basePay = 5466.90; else if (yearsService < 26) basePay = 5619.90; else basePay = 5772.90; // E-7 caps at 26 years } else if (payGrade === "E-8") { if (yearsService < 8) basePay = 5892.90; else if (yearsService < 10) basePay = 6045.90; else if (yearsService < 12) basePay = 6198.90; else if (yearsService < 14) basePay = 6351.90; else if (yearsService < 16) basePay = 6504.90; else if (yearsService < 18) basePay = 6657.90; else if (yearsService < 20) basePay = 6810.90; else if (yearsService < 22) basePay = 6963.90; else if (yearsService < 24) basePay = 7116.90; else if (yearsService < 26) basePay = 7269.90; else basePay = 7422.90; // E-8 caps at 26 years } else if (payGrade === "E-9") { if (yearsService < 10) basePay = 7116.90; else if (yearsService < 12) basePay = 7269.90; else if (yearsService < 14) basePay = 7422.90; else if (yearsService < 16) basePay = 7575.90; else if (yearsService < 18) basePay = 7728.90; else if (yearsService < 20) basePay = 7881.90; else if (yearsService < 22) basePay = 8034.90; else if (yearsService < 24) basePay = 8187.90; else if (yearsService < 26) basePay = 8340.90; else basePay = 8493.90; // E-9 caps at 26 years } else if (payGrade === "W-1") { if (yearsService < 2) basePay = 3826.20; else if (yearsService < 3) basePay = 4089.90; else if (yearsService < 4) basePay = 4242.90; else if (yearsService < 6) basePay = 4395.90; else if (yearsService < 8) basePay = 4548.90; else if (yearsService < 10) basePay = 4701.90; else if (yearsService < 12) basePay = 4854.90; else if (yearsService < 14) basePay = 5007.90; else if (yearsService < 16) basePay = 5160.90; else if (yearsService < 18) basePay = 5313.90; else if (yearsService < 20) basePay = 5466.90; else if (yearsService < 22) basePay = 5619.90; else basePay = 5619.90; // W-1 caps at 22 years } else if (payGrade === "W-2") { if (yearsService < 2) basePay = 4548.90; else if (yearsService < 3) basePay = 4701.90; else if (yearsService < 4) basePay = 4854.90; else if (yearsService < 6) basePay = 5007.90; else if (yearsService < 8) basePay = 5160.90; else if (yearsService < 10) basePay = 5313.90; else if (yearsService < 12) basePay = 5466.90; else if (yearsService < 14) basePay = 5619.90; else if (yearsService < 16) basePay = 5772.90; else if (yearsService < 18) basePay = 5925.90; else if (yearsService < 20) basePay = 6078.90; else if (yearsService < 22) basePay = 6231.90; else if (yearsService < 24) basePay = 6384.90; else if (yearsService < 26) basePay = 6537.90; else basePay = 6690.90; // W-2 caps at 26 years } else if (payGrade === "W-3") { if (yearsService < 2) basePay = 4920.30; else if (yearsService < 3) basePay = 5073.30; else if (yearsService < 4) basePay = 5226.30; else if (yearsService < 6) basePay = 5379.30; else if (yearsService < 8) basePay = 5532.30; else if (yearsService < 10) basePay = 5685.30; else if (yearsService < 12) basePay = 5838.30; else if (yearsService < 14) basePay = 5991.30; else if (yearsService < 16) basePay = 6144.30; else if (yearsService < 18) basePay = 6297.30; else if (yearsService < 20) basePay = 6450.30; else if (yearsService < 22) basePay = 6603.30; else if (yearsService < 24) basePay = 6756.30; else if (yearsService < 26) basePay = 6909.30; else basePay = 7062.30; // W-3 caps at 26 years } else if (payGrade === "W-4") { if (yearsService < 2) basePay = 5379.30; else if (yearsService < 3) basePay = 5532.30; else if (yearsService < 4) basePay = 5685.30; else if (yearsService < 6) basePay = 5838.30; else if (yearsService < 8) basePay = 5991.30; else if (yearsService < 10) basePay = 6144.30; else if (yearsService < 12) basePay = 6297.30; else if (yearsService < 14) basePay = 6450.30; else if (yearsService < 16) basePay = 6603.30; else if (yearsService < 18) basePay = 6756.30; else if (yearsService < 20) basePay = 6909.30; else if (yearsService < 22) basePay = 7062.30; else if (yearsService < 24) basePay = 7215.30; else if (yearsService < 26) basePay = 7368.30; else basePay = 7521.30; // W-4 caps at 26 years } else if (payGrade === "W-5") { if (yearsService < 10) basePay = 7650.30; else if (yearsService < 12) basePay = 7803.30; else if (yearsService < 14) basePay = 7956.30; else if (yearsService < 16) basePay = 8109.30; else if (yearsService < 18) basePay = 8262.30; else if (yearsService < 20) basePay = 8415.30; else if (yearsService < 22) basePay = 8568.30; else if (yearsService < 24) basePay = 8721.30; else if (yearsService < 26) basePay = 8874.30; else basePay = 9027.30; // W-5 caps at 26 years } else if (payGrade === "O-1") { if (yearsService < 2) basePay = 3826.20; else if (yearsService < 3) basePay = 4294.80; else if (yearsService < 4) basePay = 4840.20; else basePay = 4840.20; // O-1 caps at 4 years } else if (payGrade === "O-2") { if (yearsService < 2) basePay = 4404.60; else if (yearsService < 3) basePay = 4950.00; else if (yearsService < 4) basePay = 5379.30; else if (yearsService < 6) basePay = 5532.30; else basePay = 5532.30; // O-2 caps at 6 years } else if (payGrade === "O-3") { if (yearsService < 2) basePay = 5574.90; else if (yearsService < 3) basePay = 6043.50; else if (yearsService < 4) basePay = 6352.80; else if (yearsService < 6) basePay = 6661.80; else if (yearsService < 8) basePay = 6970.80; else if (yearsService < 10) basePay = 7279.80; else if (yearsService < 12) basePay = 7588.80; else if (yearsService < 14) basePay = 7897.80; else if (yearsService < 16) basePay = 8206.80; else basePay = 8206.80; // O-3 caps at 16 years } else if (payGrade === "O-4") { if (yearsService < 2) basePay = 6352.80; else if (yearsService < 3) basePay = 6661.80; else if (yearsService < 4) basePay = 6970.80; else if (yearsService < 6) basePay = 7279.80; else if (yearsService < 8) basePay = 7588.80; else if (yearsService < 10) basePay = 7897.80; else if (yearsService < 12) basePay = 8206.80; else if (yearsService < 14) basePay = 8515.80; else if (yearsService < 16) basePay = 8824.80; else if (yearsService < 18) basePay = 9133.80; else basePay = 9133.80; // O-4 caps at 18 years } else if (payGrade === "O-5") { if (yearsService < 2) basePay = 7279.80; else if (yearsService < 3) basePay = 7588.80; else if (yearsService < 4) basePay = 7897.80; else if (yearsService < 6) basePay = 8206.80; else if (yearsService < 8) basePay = 8515.80; else if (yearsService < 10) basePay = 8824.80; else if (yearsService < 12) basePay = 9133.80; else if (yearsService < 14) basePay = 9442.80; else if (yearsService < 16) basePay = 9751.80; else if (yearsService < 18) basePay = 10060.80; else if (yearsService < 20) basePay = 10369.80; else if (yearsService < 22) basePay = 10678.80; else basePay = 10678.80; // O-5 caps at 22 years } else if (payGrade === "O-6") { if (yearsService < 4) basePay = 8824.80; else if (yearsService < 6) basePay = 9133.80; else if (yearsService < 8) basePay = 9442.80; else if (yearsService < 10) basePay = 9751.80; else if (yearsService < 12) basePay = 10060.80; else if (yearsService < 14) basePay = 10369.80; else if (yearsService < 16) basePay = 10678.80; else if (yearsService < 18) basePay = 10987.80; else if (yearsService < 20) basePay = 11296.80; else if (yearsService < 22) basePay = 11605.80; else if (yearsService < 24) basePay = 11914.80; else if (yearsService < 26) basePay = 12223.80; else basePay = 12532.80; // O-6 caps at 26 years } else if (payGrade === "O-7") { if (yearsService < 22) basePay = 12981.90; else if (yearsService < 24) basePay = 13290.90; else if (yearsService < 26) basePay = 13599.90; else basePay = 13908.90; // O-7 caps at 26 years } else if (payGrade === "O-8") { if (yearsService < 22) basePay = 15000.00; // Simplified, actual pay varies more else if (yearsService < 24) basePay = 15300.00; else if (yearsService < 26) basePay = 15600.00; else basePay = 15900.00; } else if (payGrade === "O-9") { if (yearsService < 22) basePay = 16500.00; // Simplified else if (yearsService < 24) basePay = 16800.00; else if (yearsService < 26) basePay = 17100.00; else basePay = 17400.00; } else if (payGrade === "O-10") { basePay = 18491.70; // O-10 is fixed at 20+ years, simplified } return basePay; }

Leave a Comment