Income-Driven Repayment Calculator
:root {
–primary-blue: #004a99;
–success-green: #28a745;
–light-background: #f8f9fa;
–white: #ffffff;
–gray: #6c757d;
–border-color: #dee2e6;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: var(–light-background);
color: #333;
line-height: 1.6;
margin: 0;
padding: 20px;
}
.loan-calc-container {
max-width: 800px;
margin: 40px auto;
background-color: var(–white);
padding: 30px;
border-radius: 8px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
border: 1px solid var(–border-color);
}
h1, h2 {
color: var(–primary-blue);
text-align: center;
margin-bottom: 20px;
}
.input-group {
margin-bottom: 20px;
padding: 15px;
border: 1px solid var(–border-color);
border-radius: 5px;
background-color: var(–white);
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 15px;
}
.input-group label {
flex: 1 1 150px; /* Grow, shrink, basis */
font-weight: bold;
color: var(–primary-blue);
margin-bottom: 5px;
display: block;
}
.input-group input[type="number"],
.input-group select {
flex: 2 1 200px; /* Grow, shrink, basis */
padding: 10px;
border: 1px solid var(–border-color);
border-radius: 4px;
box-sizing: border-box;
font-size: 1rem;
}
.input-group input[type="number"]:focus,
.input-group select:focus {
border-color: var(–primary-blue);
outline: none;
box-shadow: 0 0 0 2px rgba(0, 74, 153, 0.2);
}
button {
display: block;
width: 100%;
padding: 12px 20px;
background-color: var(–primary-blue);
color: var(–white);
border: none;
border-radius: 5px;
font-size: 1.1rem;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s ease, transform 0.2s ease;
margin-top: 20px;
}
button:hover {
background-color: #003366;
transform: translateY(-2px);
}
#result {
margin-top: 30px;
padding: 25px;
background-color: var(–success-green);
color: var(–white);
text-align: center;
border-radius: 8px;
font-size: 1.5rem;
font-weight: bold;
box-shadow: 0 2px 10px rgba(40, 167, 69, 0.3);
}
#result span {
font-size: 1.2rem;
display: block;
margin-top: 8px;
font-weight: normal;
}
.article-section {
margin-top: 50px;
padding: 30px;
background-color: var(–white);
border: 1px solid var(–border-color);
border-radius: 8px;
}
.article-section h2 {
color: var(–primary-blue);
text-align: left;
border-bottom: 2px solid var(–primary-blue);
padding-bottom: 10px;
margin-bottom: 20px;
}
.article-section p,
.article-section ul {
margin-bottom: 15px;
}
.article-section ul {
padding-left: 20px;
}
.article-section li {
margin-bottom: 8px;
}
.article-section strong {
color: var(–primary-blue);
}
/* Responsive adjustments */
@media (max-width: 600px) {
.loan-calc-container {
padding: 20px;
}
.input-group {
flex-direction: column;
align-items: stretch;
}
.input-group label,
.input-group input[type="number"],
.input-group select {
flex: none;
width: 100%;
}
h1 {
font-size: 1.8rem;
}
#result {
font-size: 1.2rem;
}
}
Income-Driven Repayment Calculator
Estimate your monthly federal student loan payments under various Income-Driven Repayment (IDR) plans.
Your estimated monthly payment will appear here.
Understanding Income-Driven Repayment (IDR) Plans
Income-Driven Repayment (IDR) plans are a set of federal student loan repayment options that base your monthly payment on your income and family size. These plans are designed to make loan repayment more manageable, especially for borrowers who have lower incomes relative to their debt. The U.S. Department of Education offers several IDR plans, each with slightly different calculation methods and benefits.
How IDR Payments Are Calculated
The core principle of IDR plans is to cap your monthly payment at a percentage of your "discretionary income." Discretionary income is generally calculated as the difference between your Adjusted Gross Income (AGI) and 150% of the federal poverty guideline for your family size. The specific percentage used varies by plan.
Key terms:
- Adjusted Gross Income (AGI): Your gross income after certain deductions. This is typically found on your federal income tax return.
- Federal Poverty Guideline: Annual income thresholds set by the federal government based on family size and state. These guidelines are updated annually.
- Discretionary Income: The amount of your income that is above the poverty guideline threshold. The calculation for this threshold can vary slightly by plan. For REPAYE, SAVE, and PAYE, it's typically 150% of the poverty guideline. For ICR, it's 100% of the poverty guideline.
Common IDR Plans and Their Formulas (Simplified)
The calculator above uses simplified formulas. Specific calculations can be complex and may involve loan consolidation or other factors.
1. Saving on A Valuable Education (SAVE) Plan
This is the newest IDR plan, replacing the former REPAYE plan for most new borrowers. It generally offers the lowest monthly payments and a shorter path to forgiveness for many.
- Payment Cap: 5% to 10% of discretionary income (depending on the mix of graduate and undergraduate loans). For simplicity in this calculator, we'll use 10% for all loans.
- Discretionary Income Calculation: Annual Gross Income – (150% * Federal Poverty Guideline for Family Size)
- Monthly Payment Formula: MAX(0, (Annual Gross Income – (1.5 * Poverty Guideline)) / 12 * 0.10)
- Interest Benefit: Unpaid interest is waived if your payment doesn't cover the monthly interest accrual.
2. Revised Pay As You Earn (REPAYE) Plan (No longer available for new borrowers after July 1, 2024, but still applies to existing borrowers)
REPAYE was similar to SAVE but generally had higher payments.
- Payment Cap: 10% of discretionary income.
- Discretionary Income Calculation: Annual Gross Income – (150% * Federal Poverty Guideline for Family Size)
- Monthly Payment Formula: MAX(0, (Annual Gross Income – (1.5 * Poverty Guideline)) / 12 * 0.10)
- Interest Benefit: Partial interest subsidy was available.
3. Pay As You Earn (PAYE) Plan
This plan caps payments at 10% of discretionary income but has a 20-year forgiveness period for all loans.
- Payment Cap: 10% of discretionary income.
- Discretionary Income Calculation: Annual Gross Income – (150% * Federal Poverty Guideline for Family Size)
- Monthly Payment Formula: MAX(0, (Annual Gross Income – (1.5 * Poverty Guideline)) / 12 * 0.10)
- Note: Certain loan types may not be eligible.
4. Income-Contingent Repayment (ICR) Plan
This is the oldest IDR plan and is the only one available for Parent PLUS loans that have been consolidated into a Direct Consolidation Loan.
- Payment Cap: The lesser of 20% of discretionary income OR what you'd pay on a 12-year fixed payment plan, adjusted for income.
- Discretionary Income Calculation: Annual Gross Income – (100% * Federal Poverty Guideline for Family Size)
- Monthly Payment Formula: MAX(0, (Annual Gross Income – (1.0 * Poverty Guideline)) / 12 * 0.20)
- Note: Payments are generally higher than SAVE or REPAYE.
5. Graduated Repayment Plan
While not strictly an IDR plan based on income percentage, it's often grouped with them as it adjusts payments over time. Payments start lower and increase every two years.
- Payment Structure: Payments increase every two years.
- Duration: Up to 10 years for Direct Subsidized Loans, Direct Unsubsidized Loans, and Direct Consolidation Loans (where all underlying loans are Direct Subsidized, Direct Unsubsidized, or Direct PLUS loans). Up to 25 years for Direct PLUS Loans and Direct Consolidation Loans (where at least one underlying loan is a Direct PLUS loan).
- Note: This plan does not typically lead to loan forgiveness and may result in paying more interest over time.
Important Considerations
- Poverty Guidelines: The poverty guideline figures used in the calculation are based on the U.S. Department of Health and Human Services guidelines for the 48 contiguous states and the District of Columbia. Alaska and Hawaii have separate, higher poverty guidelines. These figures are updated annually.
- Loan Forgiveness: Most IDR plans offer forgiveness of the remaining loan balance after 20 or 25 years of qualifying payments. However, forgiven amounts may be considered taxable income in the future (taxability rules have changed, but it's crucial to stay informed).
- Interest Accrual: Without an interest subsidy (like SAVE offers), unpaid interest can capitalize and increase your loan balance, even under an IDR plan.
- Annual Recertification: You must recertify your income and family size annually to remain on an IDR plan. Failure to do so can result in higher payments and interest capitalization.
- Loan Types: Not all federal loans are eligible for all IDR plans. Parent PLUS loans generally require consolidation and can only be repaid under ICR.
- This Calculator is an Estimate: This calculator provides an estimate based on the information you enter. Actual payment amounts may vary due to specific loan details, exact AGI, and the most current poverty guidelines. Always consult official U.S. Department of Education resources or a financial aid advisor for precise figures.
Using an IDR calculator can help you understand which repayment plan might be most beneficial for your financial situation, potentially lowering your monthly payments and helping you manage your federal student loan debt more effectively.
// Placeholder for Poverty Guideline data. In a real-world scenario, this data would be updated annually and could be fetched from an external API or a more robust data structure.
// These are example values for demonstration.
var povertyGuidelines = {
"2023": { // Example year
"1": 14580,
"2": 19720,
"3": 24860,
"4": 30000,
"5": 35140,
"6": 40280,
"7": 45420,
"8": 50560
}
};
function getPovertyGuideline(familySize) {
var year = "2023"; // Using the example year for demonstration
var guidelineForSize = povertyGuidelines[year][familySize];
if (guidelineForSize) {
return guidelineForSize;
}
// Fallback for family sizes larger than 8 (extend the line or use a default)
var baseGuideline = povertyGuidelines[year][8];
var increment = baseGuideline – povertyGuidelines[year][7]; // Approximate increment
return baseGuideline + (familySize – 8) * increment;
}
function calculateIDR() {
var balance = parseFloat(document.getElementById("totalLoanBalance").value);
var income = parseFloat(document.getElementById("annualGrossIncome").value);
var familySize = parseInt(document.getElementById("familySize").value);
var plan = document.getElementById("repaymentPlan").value;
var interestRate = parseFloat(document.getElementById("interestRate").value);
var resultDiv = document.getElementById("result");
if (isNaN(balance) || isNaN(income) || isNaN(familySize) || isNaN(interestRate) || familySize <= 0) {
resultDiv.innerHTML = "Please enter valid numbers for all fields.";
return;
}
var povertyGuidelineAmount = getPovertyGuideline(familySize);
var discretionaryIncome = income – (1.5 * povertyGuidelineAmount); // Standard 150% for REPAYE, PAYE, SAVE
var monthlyPayment = 0;
var planDescription = "";
if (plan === "REPAYE" || plan === "SAVE" || plan === "PAYE") {
// For SAVE and REPAYE/PAYE, payments are generally 10% of discretionary income
// Note: SAVE can be 5-10% depending on loan mix. Using 10% for simplicity.
planDescription = "REPAYE/SAVE/PAYE (approx. 10% of Discretionary Income)";
if (discretionaryIncome < 0) {
discretionaryIncome = 0;
}
monthlyPayment = (discretionaryIncome / 12) * 0.10;
// SAVE has an interest benefit that makes payments effectively lower if interest accrual exceeds payment
if (plan === "SAVE") {
var annualInterestAccrual = balance * (interestRate / 100);
var monthlyInterestAccrual = annualInterestAccrual / 12;
if (monthlyPayment < monthlyInterestAccrual) {
// The effective payment cannot be less than 0, and the interest benefit covers the difference
monthlyPayment = 0; // This reflects the interest subsidy benefit
planDescription += " (with interest subsidy)";
}
}
} else if (plan === "ICR") {
// ICR uses 100% of poverty guideline and a higher percentage (20% or 12-year fixed)
discretionaryIncome = income – (1.0 * povertyGuidelineAmount); // 100% for ICR
if (discretionaryIncome < 0) {
discretionaryIncome = 0;
}
// The 20% of discretionary income calculation
var paymentBasedOnIncome = (discretionaryIncome / 12) * 0.20;
// Calculate what a 12-year fixed payment would be (simplified – actual calculation can be more complex)
// Using a simplified loan term for comparison. Actual ICR calculation is complex.
// For this calculator, we'll primarily show the 20% of discretionary income.
// A true ICR calculation involves amortizing the loan over 12 years and finding the payment.
// Given the complexity and focus on IDR *monthly payment estimation*, using the 20% calculation is common.
monthlyPayment = paymentBasedOnIncome;
planDescription = "ICR (approx. 20% of Discretionary Income)";
} else if (plan === "GGR") {
// Graduated repayment has fixed increases every 2 years.
// This calculator focuses on the *initial* payment.
// A simplified approach is to estimate the initial payment assuming a 10-year repayment for Direct Loans.
// The actual calculation involves a formula based on the loan balance and term.
// For a basic estimation, we can approximate it.
// Formula: Balance * (Interest Rate / 12) / (1 – (1 + Interest Rate / 12)^(-NumberOfPayments))
// Simplified for GGR – we can use a standard 10 year term for estimation.
var numberOfPayments = 10 * 12; // 10 years
var monthlyInterestRate = interestRate / 100 / 12;
if (monthlyInterestRate <= 0) {
monthlyPayment = balance / numberOfPayments;
} else {
monthlyPayment = balance * (monthlyInterestRate) / (1 – Math.pow(1 + monthlyInterestRate, -numberOfPayments));
}
// GGR payments are typically lower than standard but higher than most IDR.
// It's tricky to assign a simple percentage. We will calculate a standard payment and note it.
planDescription = "Graduated Repayment (Initial Payment Estimate)";
// Cap it at a reasonable level, or ensure it doesn't exceed standard repayment significantly.
// For simplicity, we'll just use the calculated value, but a more robust calculator might compare.
if (isNaN(monthlyPayment) || monthlyPayment < 0) {
monthlyPayment = 0;
}
}
// Ensure payment is not negative
if (monthlyPayment < 0) {
monthlyPayment = 0;
}
// Format the output
var formattedPayment = monthlyPayment.toLocaleString(undefined, {
style: 'currency',
currency: 'USD'
});
resultDiv.innerHTML = `Estimated Monthly Payment:
${formattedPayment} (Based on the ${planDescription} plan)`;
}