Calculate your time to Financial Independence & Early Retirement.
Net income available for spending or saving.
Total yearly spending.
Total value of current investment portfolio.
Expected investment growth (inflation-adjusted).
Usually 4% (The 4% Rule).
Current Savings Rate:0%
Annual Savings Amount:$0
FIRE Target Number:$0
Years to Retirement:0 Years
Understanding Your FIRE Savings Rate
The FIRE (Financial Independence, Retire Early) movement is built on a simple mathematical premise: your time to retirement is not defined by your income alone, but by your savings rate. This calculator helps you determine exactly when work becomes optional based on your current lifestyle and saving habits.
How the FIRE Calculation Works
To reach financial independence, you need to accumulate a nest egg large enough to support your annual expenses indefinitely. This target is often called your "FIRE Number."
Savings Rate: The percentage of your net income that you save and invest. (Income – Expenses) / Income.
FIRE Number: Calculated as Annual Expenses / Withdrawal Rate. Using the standard 4% rule, this is equivalent to 25 times your annual spending.
Compound Interest: The calculator assumes your investments grow annually, accelerating your progress over time.
The Impact of Savings Rate on Time to Retirement
Raising your savings rate is the most powerful lever you have. While investment returns are out of your control, the gap between what you earn and what you spend is determined by you. Consider these general benchmarks (assuming starting from zero):
10% Savings Rate: ~51 years to retire.
25% Savings Rate: ~32 years to retire.
50% Savings Rate: ~17 years to retire.
75% Savings Rate: ~7 years to retire.
What is the Safe Withdrawal Rate?
The "Safe Withdrawal Rate" (SWR) is the percentage of your portfolio you can withdraw annually without running out of money in retirement. The standard recommendation is 4%, based on the Trinity Study. If you are extremely conservative or planning a very long retirement (40+ years), you might choose a lower rate like 3.5% or 3%.
Tips to reach FIRE Faster
If you want to reduce the "Years to Retirement" number shown above, focus on increasing the gap between income and expenses. This can be achieved by "house hacking" to lower housing costs, driving used cars, optimizing tax-advantaged accounts (like 401ks and HSAs), and increasing your primary income through career advancement or side hustles.
function calculateFIRE() {
// Get Inputs
var incomeInput = document.getElementById("annualIncome").value;
var expensesInput = document.getElementById("annualExpenses").value;
var netWorthInput = document.getElementById("currentNetWorth").value;
var returnInput = document.getElementById("annualReturn").value;
var withdrawalInput = document.getElementById("withdrawalRate").value;
// Parse Floats
var income = parseFloat(incomeInput);
var expenses = parseFloat(expensesInput);
var currentNetWorth = parseFloat(netWorthInput);
var annualReturn = parseFloat(returnInput) / 100;
var withdrawalRate = parseFloat(withdrawalInput) / 100;
// Validation
if (isNaN(income) || isNaN(expenses) || isNaN(currentNetWorth) || isNaN(annualReturn) || isNaN(withdrawalRate)) {
alert("Please enter valid numbers for all fields.");
return;
}
if (expenses > income) {
document.getElementById("results").style.display = "block";
document.getElementById("resSavingsRate").innerHTML = "Negative Savings";
document.getElementById("resAnnualSavings").innerHTML = "-$" + Math.abs(income – expenses).toLocaleString();
document.getElementById("resTargetNumber").innerHTML = "N/A";
document.getElementById("resYears").innerHTML = "Never (Expenses exceed Income)";
return;
}
// Core Calculations
var annualSavings = income – expenses;
var savingsRate = (annualSavings / income) * 100;
// Calculate Target Number (FIRE Number)
// If expenses are 0, target is 0. Avoid divide by zero if withdrawal rate is 0.
var fireNumber = 0;
if (withdrawalRate > 0) {
fireNumber = expenses / withdrawalRate;
}
// Calculate Years to FIRE
var years = 0;
var simulatedNetWorth = currentNetWorth;
// Safety break for loop (max 100 years)
var maxYears = 100;
var reachedFire = false;
if (simulatedNetWorth >= fireNumber) {
years = 0;
reachedFire = true;
} else {
// Loop year by year simulating growth + contribution
while (years = fireNumber) {
reachedFire = true;
break;
}
}
}
// Formatting Results
var yearsDisplay = reachedFire ? years + " Years" : "> 100 Years";
if (years === 0 && reachedFire) {
yearsDisplay = "Financial Independence Achieved!";
}
// Update DOM
document.getElementById("results").style.display = "block";
document.getElementById("resSavingsRate").innerText = savingsRate.toFixed(1) + "%";
document.getElementById("resAnnualSavings").innerText = "$" + annualSavings.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0});
document.getElementById("resTargetNumber").innerText = "$" + fireNumber.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0});
document.getElementById("resYears").innerText = yearsDisplay;
}