Calculate your 2024 take-home pay after Kentucky state and local taxes
Weekly
Bi-Weekly
Semi-Monthly
Monthly
Single
Married Filing Jointly
e.g., Louisville is 2.2%, Lexington is 2.25%
Results per Pay Period
Gross Pay:$0.00
Federal Income Tax:-$0.00
FICA (Social Security + Medicare):-$0.00
Kentucky State Tax (4.0%):-$0.00
Local/Occupational Tax:-$0.00
Net Take-Home Pay:$0.00
Understanding Kentucky Payroll Taxes
Calculating your paycheck in the Bluegrass State requires understanding three distinct layers of taxation: federal, state, and local. Kentucky is one of the few states where local occupational license taxes play a significant role in your take-home pay.
1. Kentucky State Income Tax
As of 2024, Kentucky uses a flat income tax rate of 4.0%. This was reduced from 4.5% in previous years as part of a legislative plan to eventually phase out state income tax. This flat rate makes KY payroll calculations simpler than states with complex brackets.
2. Local Occupational License Taxes
Most cities and counties in Kentucky charge an "occupational tax" on wages earned within their jurisdiction. These rates vary significantly:
Louisville (Jefferson County): 2.2% (Resident)
Lexington (Fayette County): 2.25%
Bowling Green: 2.0%
Florence: 2.0%
3. Federal Taxes and FICA
Regardless of your state, you must pay federal taxes. This includes:
Social Security: 6.2% on wages up to the annual limit.
Medicare: 1.45% on all wages.
Federal Income Tax: Determined by your IRS filing status and income brackets.
Example Calculation
If you earn $60,000 per year living in a Kentucky city with a 1% local tax:
Gross Bi-Weekly Pay: $2,307.69
Federal Withholding (approx): $285.00
FICA (7.65%): $176.54
KY State Tax (4.0%): $92.31
Local Tax (1.0%): $23.08
Estimated Take-Home: ~$1,730.76
function calculateKYPayroll() {
// Inputs
var grossAnnual = parseFloat(document.getElementById("grossSalary").value);
var frequency = parseFloat(document.getElementById("payFrequency").value);
var filingStatus = document.getElementById("filingStatus").value;
var localTaxRate = parseFloat(document.getElementById("localTaxRate").value) / 100;
var preTaxDeductions = parseFloat(document.getElementById("preTaxDeductions").value);
if (isNaN(grossAnnual) || grossAnnual 609350) fedTax += (taxableGrossAnnual – 609350) * 0.37 + 183647;
else if (taxableGrossAnnual > 243725) fedTax += (taxableGrossAnnual – 243725) * 0.35 + 55678.5;
else if (taxableGrossAnnual > 191950) fedTax += (taxableGrossAnnual – 191950) * 0.32 + 39110.5;
else if (taxableGrossAnnual > 100525) fedTax += (taxableGrossAnnual – 100525) * 0.24 + 17168.5;
else if (taxableGrossAnnual > 47150) fedTax += (taxableGrossAnnual – 47150) * 0.22 + 5425.5;
else if (taxableGrossAnnual > 11600) fedTax += (taxableGrossAnnual – 11600) * 0.12 + 1160;
else fedTax += taxableGrossAnnual * 0.10;
} else {
if (taxableGrossAnnual > 731200) fedTax += (taxableGrossAnnual – 731200) * 0.37 + 186362;
else if (taxableGrossAnnual > 487450) fedTax += (taxableGrossAnnual – 487450) * 0.35 + 101050;
else if (taxableGrossAnnual > 383900) fedTax += (taxableGrossAnnual – 383900) * 0.32 + 67914;
else if (taxableGrossAnnual > 201050) fedTax += (taxableGrossAnnual – 201050) * 0.24 + 24030;
else if (taxableGrossAnnual > 94300) fedTax += (taxableGrossAnnual – 94300) * 0.22 + 10851;
else if (taxableGrossAnnual > 23200) fedTax += (taxableGrossAnnual – 23200) * 0.12 + 2320;
else fedTax += taxableGrossAnnual * 0.10;
}
// FICA
var socialSecurity = Math.min(grossAnnual, 168600) * 0.062;
var medicare = grossAnnual * 0.0145;
var fica = socialSecurity + medicare;
// KY State Tax (Flat 4.0% on taxable gross)
var stateTaxAnnual = (grossAnnual – preTaxDeductions) * 0.04;
// Local Tax
var localTaxAnnual = (grossAnnual – preTaxDeductions) * localTaxRate;
// Period Calculations
var periodGross = grossAnnual / frequency;
var periodFedTax = fedTax / frequency;
var periodFica = fica / frequency;
var periodStateTax = stateTaxAnnual / frequency;
var periodLocalTax = localTaxAnnual / frequency;
var periodNet = periodGross – (preTaxDeductions/frequency) – periodFedTax – periodFica – periodStateTax – periodLocalTax;
// Display
document.getElementById("resGross").innerText = "$" + (periodGross).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resFedTax").innerText = "-$" + (periodFedTax).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resFica").innerText = "-$" + (periodFica).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resStateTax").innerText = "-$" + (periodStateTax).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resLocalTax").innerText = "-$" + (periodLocalTax).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resNetPay").innerText = "$" + (periodNet).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("result-section").style.display = "block";
}