DEV Community

Z S
Z S

Posted on

Building a Student Loan Calculator: What I Learned About the $1.7T Debt Crisis

Building a Student Loan Calculator: What I Learned About the $1.7T Debt Crisis

Last month I decided to build a student loan repayment calculator as a side project. What started as a weekend coding exercise turned into a deep dive into the $1.77 trillion student debt crisis — and the math is genuinely alarming.

Why I Built This

I have $34,000 in student loans from my CS degree. When I tried to figure out whether to switch repayment plans, I found that:

  • The federal StudentAid.gov calculator is basic and often broken
  • Most "calculators" online are lead-gen forms from refinancing companies
  • None of them compare all federal plans side by side with real math

So I built one.

The Data That Shocked Me

Before writing any code, I researched the landscape. Here are the numbers from the Federal Reserve and Department of Education:

  • 44.7 million Americans carry student loan debt
  • Average balance: $37,574 per borrower
  • Total outstanding: $1.77 trillion (yes, trillion with a T)
  • Average monthly payment: $393
  • Default rate: 10.8% of borrowers within 3 years of entering repayment
  • Median time to repay: 20 years (not the 10 years in the "Standard" plan name)

That last stat hit me hardest. The "10-Year Standard Repayment Plan" takes 20 years on average because most borrowers switch to income-driven plans, enter forbearance, or defer.

The Tech Stack

I built the calculator as a vanilla JavaScript SPA — no frameworks needed for this:

// Core amortization function
function calculateAmortization(principal, annualRate, months) {
  const monthlyRate = annualRate / 12;
  const payment = principal * 
    (monthlyRate * Math.pow(1 + monthlyRate, months)) / 
    (Math.pow(1 + monthlyRate, months) - 1);

  let balance = principal;
  let totalInterest = 0;
  const schedule = [];

  for (let month = 1; month <= months; month++) {
    const interest = balance * monthlyRate;
    const principalPaid = payment - interest;
    balance -= principalPaid;
    totalInterest += interest;

    schedule.push({
      month,
      payment: payment.toFixed(2),
      principal: principalPaid.toFixed(2),
      interest: interest.toFixed(2),
      balance: Math.max(0, balance).toFixed(2),
      totalInterest: totalInterest.toFixed(2)
    });
  }

  return { payment, totalInterest, schedule };
}
Enter fullscreen mode Exit fullscreen mode

The Five Federal Repayment Plans (Compared)

The tricky part was implementing income-driven repayment formulas. Each plan calculates your payment differently:

Plan Payment Formula Forgiveness Timeline
Standard Fixed over 10 years No forgiveness
SAVE 5-10% of discretionary income 20-25 years
IBR 10-15% of discretionary income 20-25 years
PAYE 10% of discretionary income 20 years
ICR 20% of discretionary income 25 years

The SAVE Plan Deep Dive

The SAVE plan (which replaced REPAYE) has a unique calculation:

function calculateSAVE(agi, familySize, loanBalance, isUndergrad) {
  // 2024 poverty guideline for continental US
  const povertyLine = 15060 + (familySize - 1) * 5380;

  // SAVE protects 225% of poverty line (vs 150% for older plans)
  const discretionaryIncome = Math.max(0, agi - povertyLine * 2.25);

  // 5% for undergrad, 10% for grad, weighted blend for both
  const rate = isUndergrad ? 0.05 : 0.10;
  const annualPayment = discretionaryIncome * rate;

  return Math.max(0, annualPayment / 12);
}
Enter fullscreen mode Exit fullscreen mode

Key finding: For a single borrower earning $55,000 with $35,000 in undergrad loans, the monthly payment difference between plans is dramatic:

  • Standard: $393/month ($47,160 total)
  • SAVE: $114/month — but $47,800 total over 20 years due to extended timeline
  • IBR: $228/month ($54,700 total over 20 years)

The SAVE plan has the lowest monthly payment but can cost more in total interest. This is the counterintuitive insight most borrowers miss.

What I Learned About Forgiveness

The Public Service Loan Forgiveness (PSLF) program data tells an interesting story:

  • Before 2021: Only 2.04% of applications were approved
  • After reforms in 2022-2024: Approval rate jumped to approximately 56%
  • Total forgiven through PSLF: Over $69.2 billion for 946,000+ borrowers
  • Average forgiveness amount: Around $73,000 per borrower

The low initial approval rate was largely due to servicer errors and confusing eligibility rules, not because the program did not work.

The Interest Capitalization Problem

The most eye-opening code I wrote was modeling interest capitalization — when unpaid interest gets added to your principal:

function modelCapitalization(principal, rate, monthsInForbearance) {
  let accruedInterest = 0;
  const monthlyRate = rate / 12;

  for (let m = 0; m < monthsInForbearance; m++) {
    accruedInterest += (principal + accruedInterest) * monthlyRate;
  }

  return {
    newPrincipal: principal + accruedInterest,
    interestCapitalized: accruedInterest,
    percentIncrease: ((accruedInterest / principal) * 100).toFixed(1)
  };
}

// Example: $35,000 at 6.53% in forbearance for 12 months
// New principal: $37,359 (+6.7%)
Enter fullscreen mode Exit fullscreen mode

Twelve months of forbearance on a $35,000 loan at 6.53% adds $2,359 to your principal. That extra principal then generates its own interest — the compound interest working against you.

Tools That Already Exist

After building my own calculator, I discovered that studloans.com already has a comprehensive repayment comparison tool that handles all five federal plans, PSLF eligibility checking, and refinancing analysis. It would have saved me a weekend of work, but I learned a lot building my own.

Takeaways for Developer-Borrowers

  1. Run your own numbers — generic advice like "just pay extra" ignores the complexity of IDR plans and forgiveness
  2. PSLF is real now — if you work at a non-profit, government, or qualifying organization, it is worth pursuing
  3. Forbearance is expensive — even a few months can cost thousands in capitalized interest
  4. The SAVE plan is not always cheapest — lower monthly payments can mean higher total cost
  5. Automate your payments — most servicers offer a 0.25% rate reduction for autopay

The student loan system is unnecessarily complex, which is exactly why it needs better tools built by people who understand both the math and the UX.


Are you dealing with student loans? What repayment plan are you on? I am curious what strategies other developers are using.

Top comments (0)