Single
Married Filing Jointly
Married Filing Separately
Head of Household
Estimated New York State Income Tax
$0.00
Understanding New York State Income Tax
New York State imposes a progressive income tax on its residents and non-residents who earn income within the state. This means that as your income increases, the tax rate applied to higher portions of your income also increases. Understanding these rates and how they apply to your personal financial situation is crucial for accurate tax planning and filing.
How New York Income Tax Works
New York State income tax is calculated based on your New York adjusted gross income (NYAGI). Your NYAGI is your federal adjusted gross income modified by certain additions and subtractions required by New York State. From your NYAGI, you can subtract either the standard deduction or your itemized deductions, whichever is greater, to arrive at your New York taxable income. The tax is then calculated using a series of tax brackets.
New York Tax Brackets (2023 Tax Year – subject to change)
The following are the general tax brackets for New York State income tax. It's important to note that these rates and brackets can be updated annually by the New York State Department of Taxation and Finance.
Single Filer & Married Filing Separately
Up to $8,500: 4.00%
$8,501 to $11,700: 4.50%
$11,701 to $13,900: 5.25%
$13,901 to $16,100: 5.50%
$16,101 to $18,400: 6.00%
$18,401 to $20,650: 6.25%
$20,651 to $22,950: 6.55%
$22,951 to $25,200: 6.85%
$25,201 to $30,250: 7.25%
$30,251 to $35,300: 7.50%
$35,301 to $41,050: 7.70%
$41,051 to $46,350: 7.85%
$46,351 to $150,000: 8.82%
$150,001 to $215,000: 9.32%
$215,001 to $1,077,550: 10.32%
Over $1,077,550: 10.90%
Married Filing Jointly & Head of Household
Up to $17,000: 4.00%
$17,001 to $23,400: 4.50%
$23,401 to $27,800: 5.25%
$27,801 to $32,200: 5.50%
$32,201 to $36,800: 6.00%
$36,801 to $41,300: 6.25%
$41,301 to $45,900: 6.55%
$45,901 to $50,400: 6.85%
$50,401 to $60,500: 7.25%
$60,501 to $70,600: 7.50%
$70,601 to $82,100: 7.70%
$82,101 to $92,700: 7.85%
$92,701 to $300,000: 8.82%
$300,001 to $430,000: 9.32%
$430,001 to $2,155,150: 10.32%
Over $2,155,150: 10.90%
Note: The standard deduction amounts for 2023 are $8,500 for single/married filing separately, $17,000 for married filing jointly, and $12,950 for head of household. These are approximations for 2023 and may differ slightly for other tax years. Consult official NYS tax documents for precise figures.
How the Calculator Works
Our calculator simplifies the process of estimating your New York State income tax. It takes your reported annual income and subtracts your deductions (standard or itemized) to determine your taxable income. Based on your filing status, it then applies the relevant progressive tax rates to your taxable income, segment by segment, to arrive at your total estimated tax liability.
Important Disclaimer: This calculator provides an estimation for New York State income tax only and does not include federal taxes, local taxes (like NYC or Yonkers), or any special taxes or credits. Tax laws are complex and subject to change. For precise tax advice and filing, please consult a qualified tax professional or refer to official New York State Department of Taxation and Finance resources.
function calculateNYTax() {
var income = parseFloat(document.getElementById("income").value);
var deductions = parseFloat(document.getElementById("deductions").value);
var filingStatus = document.getElementById("filingStatus").value;
var resultValueElement = document.getElementById("result-value");
// Clear previous results and error messages
resultValueElement.textContent = "$0.00";
var errorMessageElement = document.getElementById("errorMessage");
if (errorMessageElement) {
errorMessageElement.remove();
}
// Input validation
if (isNaN(income) || income <= 0) {
displayError("Please enter a valid annual income greater than $0.");
return;
}
if (isNaN(deductions) || deductions < 0) {
displayError("Please enter a valid deduction amount greater than or equal to $0.");
return;
}
var taxableIncome = income – deductions;
if (taxableIncome < 0) {
taxableIncome = 0; // Taxable income cannot be negative
}
var tax = 0;
// Define tax brackets and rates based on filing status
var brackets;
if (filingStatus === "single" || filingStatus === "married_filing_separately") {
brackets = [
{ limit: 8500, rate: 0.0400 },
{ limit: 11700, rate: 0.0450 },
{ limit: 13900, rate: 0.0525 },
{ limit: 16100, rate: 0.0550 },
{ limit: 18400, rate: 0.0600 },
{ limit: 20650, rate: 0.0625 },
{ limit: 22950, rate: 0.0655 },
{ limit: 25200, rate: 0.0685 },
{ limit: 30250, rate: 0.0725 },
{ limit: 35300, rate: 0.0750 },
{ limit: 41050, rate: 0.0770 },
{ limit: 46350, rate: 0.0785 },
{ limit: 150000, rate: 0.0882 },
{ limit: 215000, rate: 0.0932 },
{ limit: 1077550, rate: 0.1032 },
{ limit: Infinity, rate: 0.1090 }
];
} else { // Married Filing Jointly or Head of Household
brackets = [
{ limit: 17000, rate: 0.0400 },
{ limit: 23400, rate: 0.0450 },
{ limit: 27800, rate: 0.0525 },
{ limit: 32200, rate: 0.0550 },
{ limit: 36800, rate: 0.0600 },
{ limit: 41300, rate: 0.0625 },
{ limit: 45900, rate: 0.0655 },
{ limit: 50400, rate: 0.0685 },
{ limit: 60500, rate: 0.0725 },
{ limit: 70600, rate: 0.0750 },
{ limit: 82100, rate: 0.0770 },
{ limit: 92700, rate: 0.0785 },
{ limit: 300000, rate: 0.0882 },
{ limit: 430000, rate: 0.0932 },
{ limit: 2155150, rate: 0.1032 },
{ limit: Infinity, rate: 0.1090 }
];
}
var previousLimit = 0;
for (var i = 0; i previousLimit) {
var taxableAmountInBracket = Math.min(taxableIncome, currentLimit) – previousLimit;
tax += taxableAmountInBracket * rate;
} else {
break; // Taxable income is fully accounted for
}
previousLimit = currentLimit;
}
// Format the result
resultValueElement.textContent = "$" + tax.toFixed(2);
}
function displayError(message) {
var resultDiv = document.getElementById("result");
var errorMessageElement = document.getElementById("errorMessage");
if (!errorMessageElement) {
errorMessageElement = document.createElement("div");
errorMessageElement.id = "errorMessage";
errorMessageElement.style.color = "red";
errorMessageElement.style.marginTop = "10px";
errorMessageElement.style.fontWeight = "bold";
resultDiv.parentNode.insertBefore(errorMessageElement, resultDiv);
}
errorMessageElement.textContent = message;
document.getElementById("result-value").textContent = "$0.00";
}