New York Payroll Calculator
Use this calculator to estimate your net pay after federal, New York State, and local (NYC/Yonkers) taxes, as well as FICA deductions. This tool provides an approximation and should not be considered tax advice.
Understanding Your New York Paycheck
Navigating your paycheck can be complex, especially with various federal, state, and local taxes. This New York Payroll Calculator helps you estimate your take-home pay by factoring in common deductions. Here's a breakdown of what typically comes out of your gross earnings:
1. Gross Pay
This is your total earnings before any deductions. It's calculated based on your hourly wage or annual salary and the number of hours or periods worked.
2. Pre-Tax Deductions
These are deductions taken from your gross pay before taxes are calculated, effectively reducing your taxable income. Common examples include contributions to a 401(k) or 403(b) retirement plan, health insurance premiums, and Flexible Spending Accounts (FSAs).
3. Federal Income Tax
The U.S. federal government levies income tax based on a progressive tax system, meaning higher earners pay a larger percentage of their income in taxes. Your federal income tax withholding is influenced by your filing status (Single, Married Filing Jointly, Head of Household), the number of dependents you claim, and any additional withholding you request on your W-4 form. The calculator uses simplified 2024 tax brackets and standard deductions for estimation.
4. FICA Taxes (Social Security & Medicare)
FICA stands for Federal Insurance Contributions Act. These are mandatory contributions that fund Social Security and Medicare programs:
- Social Security: As of 2024, employees contribute 6.2% of their gross wages up to an annual wage base limit of $168,600.
- Medicare: Employees contribute 1.45% of all gross wages, with no wage base limit. An additional Medicare tax of 0.9% applies to wages exceeding $200,000 for single filers or $250,000 for married filing jointly.
5. New York State Income Tax
New York State also has a progressive income tax system. Your state tax withholding depends on your NYS filing status and the number of allowances you claim on your IT-2104 form. The calculator uses simplified 2024 NYS tax brackets for estimation.
6. Local Income Taxes (NYC and Yonkers)
If you live in certain areas of New York, you may be subject to additional local income taxes:
- New York City (NYC) Resident Tax: Residents of New York City pay a separate city income tax, which is also progressive.
- Yonkers Resident Income Tax Surcharge: Residents of Yonkers pay a surcharge that is a percentage of their net New York State tax.
7. Net Pay
After all these deductions are subtracted from your gross pay, the remaining amount is your net pay, or take-home pay. This is the amount that will be deposited into your bank account or issued as a check.
Important Considerations
This calculator provides an estimate. Actual withholding can vary based on specific tax laws, changes in your income, additional deductions, and how accurately your W-4 and IT-2104 forms are filled out. For precise tax advice, consult a qualified tax professional.
.calculator-container {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #f9f9f9;
padding: 25px;
border-radius: 10px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
max-width: 800px;
margin: 30px auto;
border: 1px solid #e0e0e0;
}
.calculator-container h2 {
color: #2c3e50;
text-align: center;
margin-bottom: 20px;
font-size: 2em;
}
.calculator-container h3 {
color: #34495e;
margin-top: 25px;
margin-bottom: 15px;
font-size: 1.4em;
border-bottom: 1px solid #eee;
padding-bottom: 5px;
}
.calculator-container p {
color: #555;
line-height: 1.6;
margin-bottom: 15px;
}
.calc-form .form-group {
margin-bottom: 15px;
display: flex;
flex-direction: column;
}
.calc-form label {
margin-bottom: 7px;
color: #333;
font-weight: bold;
font-size: 0.95em;
}
.calc-form input[type="number"],
.calc-form select {
padding: 10px 12px;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 1em;
width: 100%;
box-sizing: border-box;
transition: border-color 0.3s ease;
}
.calc-form input[type="number"]:focus,
.calc-form select:focus {
border-color: #007bff;
outline: none;
box-shadow: 0 0 5px rgba(0, 123, 255, 0.2);
}
.calc-form input[type="radio"] {
margin-right: 5px;
}
.calc-form input[type="radio"] + label {
font-weight: normal;
margin-right: 15px;
display: inline-block;
}
.calc-form button {
background-color: #28a745;
color: white;
padding: 12px 25px;
border: none;
border-radius: 5px;
font-size: 1.1em;
cursor: pointer;
transition: background-color 0.3s ease, transform 0.2s ease;
width: auto;
display: block;
margin: 20px auto 0;
}
.calc-form button:hover {
background-color: #218838;
transform: translateY(-2px);
}
.calc-result {
background-color: #e9f7ef;
border: 1px solid #d4edda;
border-radius: 8px;
padding: 20px;
margin-top: 30px;
font-size: 1.1em;
color: #155724;
text-align: center;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.calc-result h4 {
color: #155724;
margin-top: 0;
font-size: 1.5em;
}
.calc-result p {
margin: 8px 0;
color: #155724;
}
.calc-result strong {
color: #0a3622;
}
.calculator-article {
margin-top: 40px;
padding-top: 20px;
border-top: 1px solid #eee;
}
.calculator-article h3 {
color: #2c3e50;
font-size: 1.8em;
margin-bottom: 15px;
}
.calculator-article h4 {
color: #34495e;
font-size: 1.3em;
margin-top: 20px;
margin-bottom: 10px;
}
.calculator-article ul {
list-style-type: disc;
margin-left: 20px;
color: #555;
}
.calculator-article ul li {
margin-bottom: 5px;
}
function calculatePayroll() {
var grossPay = parseFloat(document.getElementById("grossPay").value);
var payFrequency = document.getElementById("payFrequency").value;
var federalFilingStatus = document.getElementById("federalFilingStatus").value;
var federalDependents = parseInt(document.getElementById("federalDependents").value);
var federalOtherIncome = parseFloat(document.getElementById("federalOtherIncome").value);
var federalDeductions = parseFloat(document.getElementById("federalDeductions").value);
var federalExtraWithholding = parseFloat(document.getElementById("federalExtraWithholding").value);
var nyFilingStatus = document.getElementById("nyFilingStatus").value;
var nyAllowances = parseInt(document.getElementById("nyAllowances").value);
var nyExtraWithholding = parseFloat(document.getElementById("nyExtraWithholding").value);
var nycResident = document.querySelector('input[name="nycResident"]:checked').value === 'yes';
var yonkersResident = document.querySelector('input[name="yonkersResident"]:checked').value === 'yes';
var preTaxDeductions = parseFloat(document.getElementById("preTaxDeductions").value);
// Input validation
if (isNaN(grossPay) || grossPay < 0 ||
isNaN(federalDependents) || federalDependents < 0 ||
isNaN(federalOtherIncome) || federalOtherIncome < 0 ||
isNaN(federalDeductions) || federalDeductions < 0 ||
isNaN(federalExtraWithholding) || federalExtraWithholding < 0 ||
isNaN(nyAllowances) || nyAllowances < 0 ||
isNaN(nyExtraWithholding) || nyExtraWithholding < 0 ||
isNaN(preTaxDeductions) || preTaxDeductions additionalMedicareThresholdSingle) {
annualAdditionalMedicareTax = (annualGrossPay – additionalMedicareThresholdSingle) * additionalMedicareRate;
} else if (federalFilingStatus === 'married' && annualGrossPay > additionalMedicareThresholdMarried) {
annualAdditionalMedicareTax = (annualGrossPay – additionalMedicareThresholdMarried) * additionalMedicareRate;
} else if (federalFilingStatus === 'hoh' && annualGrossPay > additionalMedicareThresholdSingle) { // HOH often follows single thresholds for this
annualAdditionalMedicareTax = (annualGrossPay – additionalMedicareThresholdSingle) * additionalMedicareRate;
}
var annualFicaTax = annualSocialSecurityTax + annualMedicareTax + annualAdditionalMedicareTax;
// — Federal Income Tax —
var annualTaxableFederalIncome = annualGrossPay – (preTaxDeductions * payPeriodsPerYear);
var federalStandardDeduction;
if (federalFilingStatus === 'single') {
federalStandardDeduction = 14600; // 2024
} else if (federalFilingStatus === 'married') {
federalStandardDeduction = 29200; // 2024
} else if (federalFilingStatus === 'hoh') {
federalStandardDeduction = 21900; // 2024
}
var effectiveFederalDeduction = Math.max(federalStandardDeduction, federalDeductions);
annualTaxableFederalIncome = Math.max(0, annualTaxableFederalIncome – effectiveFederalDeduction);
// Federal Tax Brackets (2024, simplified for calculation)
var federalBrackets;
if (federalFilingStatus === 'single') {
federalBrackets = [
{ limit: 11600, rate: 0.10 },
{ limit: 47150, rate: 0.12 },
{ limit: 100525, rate: 0.22 },
{ limit: 191950, rate: 0.24 },
{ limit: 243725, rate: 0.32 },
{ limit: 609350, rate: 0.35 },
{ limit: Infinity, rate: 0.37 }
];
} else if (federalFilingStatus === 'married') {
federalBrackets = [
{ limit: 23200, rate: 0.10 },
{ limit: 94300, rate: 0.12 },
{ limit: 201050, rate: 0.22 },
{ limit: 383900, rate: 0.24 },
{ limit: 487450, rate: 0.32 },
{ limit: 731200, rate: 0.35 },
{ limit: Infinity, rate: 0.37 }
];
} else if (federalFilingStatus === 'hoh') {
federalBrackets = [
{ limit: 16550, rate: 0.10 },
{ limit: 63100, rate: 0.12 },
{ limit: 100500, rate: 0.22 },
{ limit: 191950, rate: 0.24 },
{ limit: 243700, rate: 0.32 },
{ limit: 609350, rate: 0.35 },
{ limit: Infinity, rate: 0.37 }
];
}
var annualFederalTax = 0;
var remainingTaxable = annualTaxableFederalIncome;
var prevLimit = 0;
for (var i = 0; i < federalBrackets.length; i++) {
var bracket = federalBrackets[i];
var taxableInBracket = Math.min(remainingTaxable, bracket.limit – prevLimit);
annualFederalTax += taxableInBracket * bracket.rate;
remainingTaxable -= taxableInBracket;
prevLimit = bracket.limit;
if (remainingTaxable 0) {
// This is a very rough approximation for withholding purposes.
// Actual W-4 calculations are more complex.
totalDependentCredit = federalDependents * childTaxCreditPerDependent;
}
annualFederalTax = Math.max(0, annualFederalTax – totalDependentCredit);
annualFederalTax += federalOtherIncome * 0.15; // Very rough estimate for other income tax
annualFederalTax += federalExtraWithholding * payPeriodsPerYear;
annualFederalTax = Math.max(0, annualFederalTax); // Ensure tax isn't negative
// — New York State Income Tax —
var annualTaxableNYIncome = annualGrossPay – (preTaxDeductions * payPeriodsPerYear);
// NY Standard Deduction (simplified 2024)
var nyStandardDeduction;
if (nyFilingStatus === 'single' || nyFilingStatus === 'hoh') {
nyStandardDeduction = 8500;
} else if (nyFilingStatus === 'married') {
nyStandardDeduction = 17000;
}
annualTaxableNYIncome = Math.max(0, annualTaxableNYIncome – nyStandardDeduction);
// NY State Tax Brackets (2024, simplified)
var nyBrackets;
if (nyFilingStatus === 'single' || nyFilingStatus === 'hoh') {
nyBrackets = [
{ limit: 8500, rate: 0.04 },
{ limit: 11900, rate: 0.045 },
{ limit: 16150, rate: 0.0525 },
{ limit: 21300, rate: 0.059 },
{ limit: 80650, rate: 0.0633 },
{ limit: 215400, rate: 0.0685 },
{ limit: 1077550, rate: 0.0965 },
{ limit: 5387900, rate: 0.103 },
{ limit: Infinity, rate: 0.109 }
];
} else if (nyFilingStatus === 'married') {
nyBrackets = [
{ limit: 17150, rate: 0.04 },
{ limit: 23900, rate: 0.045 },
{ limit: 32300, rate: 0.0525 },
{ limit: 42700, rate: 0.059 },
{ limit: 161550, rate: 0.0633 },
{ limit: 323200, rate: 0.0685 },
{ limit: 2155350, rate: 0.0965 },
{ limit: 5387900, rate: 0.103 },
{ limit: Infinity, rate: 0.109 }
];
}
var annualNYStateTax = 0;
remainingTaxable = annualTaxableNYIncome;
prevLimit = 0;
for (var i = 0; i < nyBrackets.length; i++) {
var bracket = nyBrackets[i];
var taxableInBracket = Math.min(remainingTaxable, bracket.limit – prevLimit);
annualNYStateTax += taxableInBracket * bracket.rate;
remainingTaxable -= taxableInBracket;
prevLimit = bracket.limit;
if (remainingTaxable <= 0) break;
}
// NY Allowances (simplified: each allowance reduces taxable income by a fixed amount)
var nyAllowanceValue = 1000; // Approximate value per allowance
annualNYStateTax = Math.max(0, annualNYStateTax – (nyAllowances * nyAllowanceValue * 0.06)); // Rough reduction based on average bracket
annualNYStateTax += nyExtraWithholding * payPeriodsPerYear;
annualNYStateTax = Math.max(0, annualNYStateTax);
// — NYC Local Tax —
var annualNYCCityTax = 0;
if (nycResident) {
// NYC Tax Brackets (2024, simplified)
var nycBrackets = [
{ limit: 12000, rate: 0.03078 },
{ limit: 25000, rate: 0.03762 },
{ limit: 50000, rate: 0.03920 },
{ limit: 500000, rate: 0.04321 },
{ limit: Infinity, rate: 0.04500 }
];
var taxableNYCCityIncome = annualTaxableNYIncome; // NYC tax is on NY taxable income
remainingTaxable = taxableNYCCityIncome;
prevLimit = 0;
for (var i = 0; i < nycBrackets.length; i++) {
var bracket = nycBrackets[i];
var taxableInBracket = Math.min(remainingTaxable, bracket.limit – prevLimit);
annualNYCCityTax += taxableInBracket * bracket.rate;
remainingTaxable -= taxableInBracket;
prevLimit = bracket.limit;
if (remainingTaxable <= 0) break;
}
annualNYCCityTax = Math.max(0, annualNYCCityTax);
}
// — Yonkers Local Tax —
var annualYonkersTax = 0;
if (yonkersResident) {
// Yonkers tax is 16.75% of net NY State tax
annualYonkersTax = annualNYStateTax * 0.1675;
annualYonkersTax = Math.max(0, annualYonkersTax);
}
// — Calculate Per Period Values —
var perPeriodGrossPay = grossPay;
var perPeriodPreTaxDeductions = preTaxDeductions;
var perPeriodSocialSecurityTax = annualSocialSecurityTax / payPeriodsPerYear;
var perPeriodMedicareTax = annualMedicareTax / payPeriodsPerYear;
var perPeriodAdditionalMedicareTax = annualAdditionalMedicareTax / payPeriodsPerYear;
var perPeriodFederalTax = annualFederalTax / payPeriodsPerYear;
var perPeriodNYStateTax = annualNYStateTax / payPeriodsPerYear;
var perPeriodNYCCityTax = annualNYCCityTax / payPeriodsPerYear;
var perPeriodYonkersTax = annualYonkersTax / payPeriodsPerYear;
var totalDeductionsPerPeriod = perPeriodPreTaxDeductions +
perPeriodSocialSecurityTax +
perPeriodMedicareTax +
perPeriodAdditionalMedicareTax +
perPeriodFederalTax +
perPeriodNYStateTax +
perPeriodNYCCityTax +
perPeriodYonkersTax;
var netPayPerPeriod = perPeriodGrossPay – totalDeductionsPerPeriod;
// Display Results
var resultDiv = document.getElementById("result");
resultDiv.innerHTML = "
Estimated Net Pay per Period
" +
"
Gross Pay: $" + perPeriodGrossPay.toFixed(2) + "" +
"
Pre-Tax Deductions: $" + perPeriodPreTaxDeductions.toFixed(2) + "" +
"
Federal Income Tax: $" + perPeriodFederalTax.toFixed(2) + "" +
"
Social Security Tax: $" + perPeriodSocialSecurityTax.toFixed(2) + "" +
"
Medicare Tax: $" + (perPeriodMedicareTax + perPeriodAdditionalMedicareTax).toFixed(2) + "" +
"
NY State Income Tax: $" + perPeriodNYStateTax.toFixed(2) + "";
if (nycResident) {
resultDiv.innerHTML += "
NYC City Income Tax: $" + perPeriodNYCCityTax.toFixed(2) + "";
}
if (yonkersResident) {
resultDiv.innerHTML += "
Yonkers Income Tax: $" + perPeriodYonkersTax.toFixed(2) + "";
}
resultDiv.innerHTML += "
Total Deductions: $" + totalDeductionsPerPeriod.toFixed(2) + "" +
"
Net Pay: $" + netPayPerPeriod.toFixed(2) + "";
}
// Calculate on load with default values
window.onload = calculatePayroll;