California Take-Home Pay Calculator
Gross Annual Salary ($)
Filing Status
Single
Married Filing Jointly
Pay Frequency
Monthly (12)
Semi-Monthly (24)
Bi-Weekly (26)
Weekly (52)
Pre-Tax Deductions (Annual $)
Calculate Take-Home Pay
Results Breakdown
Gross Annual Income:
Federal Income Tax:
California State Tax:
FICA (Social Security + Medicare):
CA SDI (State Disability Insurance):
Net Annual Take-Home:
Estimated Paycheck:
Understanding California Income Taxes
Calculating your take-home pay in California involves more than just looking at federal tax brackets. California has one of the most progressive state income tax systems in the United States, meaning higher earners pay a significantly higher percentage of their income in state taxes.
Key Components of the California Income Calculator
Federal Income Tax: Progressive rates ranging from 10% to 37% depending on your taxable income after the standard deduction.
California State Tax: Ranges from 1% to 13.3% (including the Mental Health Services Act tax for income over $1 million).
FICA Taxes: This consists of Social Security (6.2% on income up to $168,600) and Medicare (1.45% on all income).
CA SDI: California State Disability Insurance. As of 2024, the contribution rate is 1.1% of wages, with no wage limit.
How to Use This Calculator
To get the most accurate estimate, follow these steps:
Enter your total gross annual salary before any taxes or insurance are taken out.
Select your filing status: "Single" or "Married Filing Jointly".
Add any annual pre-tax deductions like 401(k) contributions or health insurance premiums to refine the taxable income calculation.
Click calculate to see your net pay breakdown per pay period.
Note: This calculator uses 2024 tax brackets and the standard deduction ($14,600 for Single / $29,200 for Married). It provides a high-level estimate and does not account for itemized deductions, local taxes, or specific tax credits.
function calculateCaliforniaTax() {
var gross = parseFloat(document.getElementById('grossSalary').value);
var filingStatus = document.getElementById('filingStatus').value;
var frequency = parseFloat(document.getElementById('payFrequency').value);
var preTax = parseFloat(document.getElementById('preTaxDeductions').value) || 0;
if (isNaN(gross) || gross 609350) federalTax = 174238 + (fedTaxable – 609350) * 0.37;
else if (fedTaxable > 243725) federalTax = 47747 + (fedTaxable – 243725) * 0.35;
else if (fedTaxable > 191950) federalTax = 35293 + (fedTaxable – 191950) * 0.32;
else if (fedTaxable > 100525) federalTax = 16290 + (fedTaxable – 100525) * 0.24;
else if (fedTaxable > 47150) federalTax = 5454 + (fedTaxable – 47150) * 0.22;
else if (fedTaxable > 11600) federalTax = 1160 + (fedTaxable – 11600) * 0.12;
else federalTax = fedTaxable * 0.10;
} else {
if (fedTaxable > 731200) federalTax = 186362 + (fedTaxable – 731200) * 0.37;
else if (fedTaxable > 487450) federalTax = 101050 + (fedTaxable – 487450) * 0.35;
else if (fedTaxable > 383900) federalTax = 67914 + (fedTaxable – 383900) * 0.32;
else if (fedTaxable > 201050) federalTax = 23906 + (fedTaxable – 201050) * 0.24;
else if (fedTaxable > 94300) federalTax = 10908 + (fedTaxable – 94300) * 0.22;
else if (fedTaxable > 23200) federalTax = 2320 + (fedTaxable – 23200) * 0.12;
else federalTax = fedTaxable * 0.10;
}
// California State Tax Calculation (2024 Approx Brackets)
var caTax = 0;
var caTaxable = Math.max(0, taxableIncome – caStdDeduction);
if (filingStatus === 'single') {
if (caTaxable > 698271) caTax = 65445 + (caTaxable – 698271) * 0.123;
else if (caTaxable > 418961) caTax = 36628 + (caTaxable – 418961) * 0.113;
else if (caTaxable > 349137) caTax = 29434 + (caTaxable – 349137) * 0.103;
else if (caTaxable > 68350) caTax = 3321 + (caTaxable – 68350) * 0.093;
else if (caTaxable > 54081) caTax = 2179 + (caTaxable – 54081) * 0.08;
else if (caTaxable > 38959) caTax = 1272 + (caTaxable – 38959) * 0.06;
else if (caTaxable > 24684) caTax = 701 + (caTaxable – 24684) * 0.04;
else if (caTaxable > 10412) caTax = 104 + (caTaxable – 10412) * 0.02;
else caTax = caTaxable * 0.01;
} else {
if (caTaxable > 1396542) caTax = 130890 + (caTaxable – 1396542) * 0.123;
else if (caTaxable > 837922) caTax = 73256 + (caTaxable – 837922) * 0.113;
else if (caTaxable > 698274) caTax = 58869 + (caTaxable – 698274) * 0.103;
else if (caTaxable > 136700) caTax = 6642 + (caTaxable – 136700) * 0.093;
else if (caTaxable > 108162) caTax = 4359 + (caTaxable – 108162) * 0.08;
else if (caTaxable > 77918) caTax = 2544 + (caTaxable – 77918) * 0.06;
else if (caTaxable > 49368) caTax = 1402 + (caTaxable – 49368) * 0.04;
else if (caTaxable > 20824) caTax = 208 + (caTaxable – 20824) * 0.02;
else caTax = caTaxable * 0.01;
}
// Mental Health Tax (CA)
if (taxableIncome > 1000000) {
caTax += (taxableIncome – 1000000) * 0.01;
}
// FICA
var ssTax = Math.min(gross, 168600) * 0.062;
var medicareTax = gross * 0.0145;
var fica = ssTax + medicareTax;
// CA SDI (1.1% in 2024, no cap)
var sdi = gross * 0.011;
var totalTax = federalTax + caTax + fica + sdi;
var netAnnual = gross – totalTax – preTax;
var netPaycheck = netAnnual / frequency;
// Display Results
document.getElementById('resGross').innerText = '$' + gross.toLocaleString(undefined, {minimumFractionDigits: 2});
document.getElementById('resFederal').innerText = '-$' + federalTax.toLocaleString(undefined, {minimumFractionDigits: 2});
document.getElementById('resState').innerText = '-$' + caTax.toLocaleString(undefined, {minimumFractionDigits: 2});
document.getElementById('resFica').innerText = '-$' + fica.toLocaleString(undefined, {minimumFractionDigits: 2});
document.getElementById('resSdi').innerText = '-$' + sdi.toLocaleString(undefined, {minimumFractionDigits: 2});
document.getElementById('resNetAnnual').innerText = '$' + netAnnual.toLocaleString(undefined, {minimumFractionDigits: 2});
document.getElementById('resNetPaycheck').innerText = '$' + netPaycheck.toLocaleString(undefined, {minimumFractionDigits: 2});
var freqText = document.getElementById('payFrequency').options[document.getElementById('payFrequency').selectedIndex].text.split(' ')[0];
document.getElementById('resFreqLabel').innerText = 'Estimated ' + freqText + ' Paycheck:';
document.getElementById('resultsArea').style.display = 'block';
}