Understanding your Debt-to-Income (DTI) ratio is one of the most critical steps in financial planning, especially if you are considering applying for a mortgage, auto loan, or personal credit line. Lenders use this metric to assess your ability to repay borrowed funds by comparing your gross monthly income to your total monthly debt payments.
Use the calculator below to determine your current DTI ratio. Simply enter your annual income and your recurring monthly debt obligations to see where you stand.
$
Enter your total salary/wages before tax deductions.
$
$
$
$
$
Your Debt-to-Income Ratio is:
0.00%
Gross Monthly Income$0.00
Total Monthly Debt$0.00
How to Interpret Your DTI Result
Lenders generally have specific thresholds for DTI ratios when approving loans. Here is a general breakdown of what your score means:
35% or less: Considered excellent. You have a manageable level of debt relative to your income, and lenders view you as a low-risk borrower.
36% to 49%: Considered adequate, but there is room for improvement. Lenders may ask for additional conditions or offer slightly higher interest rates. Qualified mortgages typically cap at 43%.
50% or higher: Considered high risk. You may have difficulty making payments if an emergency arises. Lenders are likely to decline loan applications until you reduce your debt load.
Why Your DTI Matters for SEO and Financial Health
Unlike your credit score, which measures your history of paying debts, your DTI measures your capacity to pay new debts. Mortgage lenders specifically look at two types of ratios:
Front-End Ratio: The percentage of income that goes toward housing costs (Rent/Mortgage, HOA, Insurance).
Back-End Ratio: The percentage of income that goes toward all recurring debt (Housing + Cards + Loans). This calculator provides your Back-End Ratio, which is the most commonly cited metric for overall financial health.
To improve your ratio, focus on paying off high-interest credit cards first, or look for ways to increase your gross annual income through side hustles or salary negotiations.
function calculateDTI() {
// 1. Get Inputs using var as requested
var annualIncome = parseFloat(document.getElementById('dti_annual_income').value);
var housing = parseFloat(document.getElementById('dti_housing').value) || 0;
var auto = parseFloat(document.getElementById('dti_auto').value) || 0;
var student = parseFloat(document.getElementById('dti_student').value) || 0;
var cards = parseFloat(document.getElementById('dti_cards').value) || 0;
var other = parseFloat(document.getElementById('dti_other').value) || 0;
// 2. Validate Income
if (isNaN(annualIncome) || annualIncome <= 0) {
alert("Please enter a valid Annual Gross Income greater than zero.");
return;
}
// 3. Perform Calculations
var grossMonthlyIncome = annualIncome / 12;
var totalMonthlyDebt = housing + auto + student + cards + other;
var dtiRatio = (totalMonthlyDebt / grossMonthlyIncome) * 100;
// 4. Update UI Elements
var resultContainer = document.getElementById('dti-results');
var percentDisplay = document.getElementById('dti-final-percent');
var incomeDisplay = document.getElementById('dti-monthly-income-display');
var debtDisplay = document.getElementById('dti-total-debt-display');
var barFill = document.getElementById('dti-bar-fill');
var statusMsg = document.getElementById('dti-status-message');
// Show result box
resultContainer.style.display = "block";
// Format numbers
percentDisplay.innerHTML = dtiRatio.toFixed(2) + "%";
incomeDisplay.innerHTML = "$" + grossMonthlyIncome.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
debtDisplay.innerHTML = "$" + totalMonthlyDebt.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Determine Status Color and Message
var color = "";
var message = "";
if (dtiRatio <= 35) {
color = "#27ae60"; // Green
message = "Excellent: Your debt load is manageable.";
} else if (dtiRatio <= 43) {
color = "#f39c12"; // Orange
message = "Good: You are within the acceptable range for most lenders.";
} else if (dtiRatio 100 ? 100 : dtiRatio;
barFill.style.width = fillWidth + "%";
}