Washington is one of the few states in the U.S. that does not have a state personal income tax. While this means your take-home pay is generally higher than in neighboring states like Oregon, Washington employees are still subject to several specific state-mandated payroll deductions.
1. WA Paid Family & Medical Leave (PFML)
For 2024, the total premium rate for Paid Family and Medical Leave is 0.74% of your gross wages. This cost is shared between employers and employees. The employee portion is approximately 0.528% of gross wages, capped at the Social Security wage base ($168,600 for 2024).
2. WA Cares Fund
The WA Cares Fund is a long-term care insurance benefit for Washingtonians. Unless you have an approved exemption, your employer must withhold 0.58% of your total gross wages. Unlike Social Security, there is currently no wage cap on the WA Cares Fund premium.
3. Federal Obligations
Even though there is no state income tax, you are still responsible for:
Social Security: 6.2% on wages up to $168,600.
Medicare: 1.45% on all wages (plus 0.9% additional for high earners).
Federal Income Tax: Based on your IRS W-4 filing status and tax brackets.
Example Calculation
If you earn $5,000 per month as a single filer in WA:
Gross Pay: $5,000.00
Estimated Fed Income Tax: ~$540.00
FICA (7.65%): $382.50
WA PFML (0.528%): $26.40
WA Cares (0.58%): $29.00
Estimated Net Pay: ~$4,022.10
function calculateWAPaycheck() {
var grossInput = parseFloat(document.getElementById('wa_gross_pay').value);
var frequency = parseInt(document.getElementById('wa_pay_frequency').value);
var filingStatus = document.getElementById('wa_filing_status').value;
var pretax = parseFloat(document.getElementById('wa_pretax').value) || 0;
if (isNaN(grossInput) || grossInput <= 0) {
alert("Please enter a valid gross pay amount.");
return;
}
// Convert to Annual for calculations
var annualGross = (frequency === 1) ? grossInput : grossInput * frequency;
var taxableGross = annualGross – (pretax * (frequency === 1 ? 1 : frequency));
// 2024 Standard Deductions
var standardDeduction = 14600;
if (filingStatus === 'married') standardDeduction = 29200;
if (filingStatus === 'head') standardDeduction = 21900;
var federalTaxable = Math.max(0, taxableGross – standardDeduction);
// Simple 2024 Federal Tax Brackets (Simplified lookup)
var fedTax = 0;
var brackets = [];
if (filingStatus === 'married') {
brackets = [
{ cap: 23200, rate: 0.10 },
{ cap: 94300, rate: 0.12 },
{ cap: 201050, rate: 0.22 },
{ cap: 383900, rate: 0.24 },
{ cap: 487450, rate: 0.32 },
{ cap: 731200, rate: 0.35 },
{ cap: Infinity, rate: 0.37 }
];
} else {
brackets = [
{ cap: 11600, rate: 0.10 },
{ cap: 47150, rate: 0.12 },
{ cap: 100525, rate: 0.22 },
{ cap: 191950, rate: 0.24 },
{ cap: 243725, rate: 0.32 },
{ cap: 609350, rate: 0.35 },
{ cap: Infinity, rate: 0.37 }
];
}
var remainingTaxable = federalTaxable;
var prevCap = 0;
for (var i = 0; i prevCap) {
var chunk = Math.min(federalTaxable, brackets[i].cap) – prevCap;
fedTax += chunk * brackets[i].rate;
prevCap = brackets[i].cap;
}
}
// Social Security (6.2% up to 168600)
var ssTax = Math.min(annualGross, 168600) * 0.062;
// Medicare (1.45%)
var medTax = annualGross * 0.0145;
// Washington State Specifics
// WA PFML (approx 0.528582% employee share)
var waPFML = Math.min(annualGross, 168600) * 0.00528582;
// WA Cares (0.58% – no cap)
var waCares = annualGross * 0.0058;
// Period specific totals
var divisor = (frequency === 1) ? 1 : frequency;
var periodGross = annualGross / divisor;
var periodPretax = pretax; // already per period based on UI logic
if (frequency === 1) periodPretax = pretax; // treat as annual if freq is annual
var periodFedTax = fedTax / divisor;
var periodFica = (ssTax + medTax) / divisor;
var periodPFML = waPFML / divisor;
var periodCares = waCares / divisor;
var netPay = (periodGross – periodPretax) – periodFedTax – periodFica – periodPFML – periodCares;
// Display Results
document.getElementById('res_gross').innerText = "$" + (periodGross).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_fed_tax').innerText = "-$" + (periodFedTax).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_fica').innerText = "-$" + (periodFica).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_pfml').innerText = "-$" + (periodPFML).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_wa_cares').innerText = "-$" + (periodCares).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_net_pay').innerText = "$" + (Math.max(0, netPay)).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('wa_results').style.display = 'block';
}