This tool estimates your take‑home (net) pay after federal and state income taxes in two different states. It is useful for professionals considering a relocation and wanting to understand the financial impact of differing state tax rates.
Step‑by‑Step Calculation
Gross Salary: Your total annual compensation before any taxes.
Federal Tax Rate: The percentage of your gross salary that goes to federal income tax. For simplicity, a single flat rate is used (you can adjust it to match your marginal bracket).
State Tax Rates: Each state imposes its own income tax. The calculator subtracts the current state's rate and the new state's rate separately.
Net Salary Formula: Net = Gross × (1 – (FederalRate + StateRate) / 100)
The calculator applies the formula twice – once with the current state rate and once with the new state rate – then shows the difference.
Example
Assume a gross salary of $85,000, a federal tax rate of 22 %, a current state tax of 5.5 %, and a new state tax of 3.2 %.
Net in current state: $85,000 × (1 – (22 + 5.5)/100) = $85,000 × 0.725 = $61,625
Net in new state: $85,000 × (1 – (22 + 3.2)/100) = $85,000 × 0.748 = $63,580
Annual difference: $63,580 – $61,625 = $1,955 more take‑home pay in the new state.
Limitations
This calculator uses a simplified tax model. It does not account for:
Progressive federal tax brackets (only a flat rate is applied).
Local city or county taxes.
Other deductions such as Social Security, Medicare, retirement contributions, or health insurance.
For a precise estimate, consult a tax professional or use a detailed tax software.
function calculateSalary(){
var gross = parseFloat(document.getElementById('grossSalary').value);
var currentTax = parseFloat(document.getElementById('currentStateTax').value);
var newTax = parseFloat(document.getElementById('newStateTax').value);
var federalTax = parseFloat(document.getElementById('federalTax').value);
var resultDiv = document.getElementById('result');
if(isNaN(gross) || isNaN(currentTax) || isNaN(newTax) || isNaN(federalTax)){
resultDiv.style.background = '#dc3545';
resultDiv.innerHTML = 'Please enter valid numbers for all fields.';
return;
}
if(gross < 0){
resultDiv.style.background = '#dc3545';
resultDiv.innerHTML = 'Gross salary cannot be negative.';
return;
}
var netCurrent = gross * (1 – (federalTax + currentTax) / 100);
var netNew = gross * (1 – (federalTax + newTax) / 100);
var diff = netNew – netCurrent;
// Format numbers as currency
function fmt(num){
return '$' + num.toLocaleString(undefined,{minimumFractionDigits:2,maximumFractionDigits:2});
}
var html = 'Net Salary in Current State: ' + fmt(netCurrent) + ";
html += 'Net Salary in New State: ' + fmt(netNew) + ";
html += 'Annual Difference: ' + fmt(diff);
resultDiv.style.background = '#28a745';
resultDiv.innerHTML = html;
}