Oregon Pay Calculator

Oregon Take-Home Pay Calculator

Estimate your net pay after Oregon state taxes and federal withholdings.

Annually Monthly Semi-Monthly Bi-Weekly Weekly
Single Married / Joint

Results (Per Pay Period)

Gross Pay:
Federal Income Tax:
Social Security (6.2%):
Medicare (1.45%):
Oregon State Tax:
OR Transit Tax (0.1%):
Paid Leave Oregon (0.6%):
Net Take-Home Pay:

Understanding Oregon Payroll Taxes

Calculating your take-home pay in Oregon involves several unique state-level taxes in addition to standard federal withholdings. Oregon is known for having a progressive state income tax but no sales tax, which shifts the tax burden primarily toward income.

Statewide Transit Tax

Effective July 1, 2018, Oregon implemented a Statewide Transit Tax. This tax is 0.1% of the wages of Oregon residents, regardless of where the work is performed, and nonresidents who work in Oregon. It is a flat tax and is not affected by exemptions or filing status.

Paid Leave Oregon

Paid Leave Oregon provides employees with paid time off for family, medical, and safe leave. As of 2023/2024, the total contribution rate is 1% of gross wages up to a specific limit, with employees contributing 0.6% and employers contributing 0.4%.

Oregon State Income Tax Brackets

Oregon uses a progressive tax system with four brackets (based on 2024 figures for single filers):

  • • 4.75% on the first $4,100 of taxable income.
  • • 6.75% on income between $4,100 and $10,250.
  • • 8.75% on income between $10,250 and $125,000.
  • • 9.90% on income over $125,000.

Example Calculation

If an employee in Portland earns $60,000 annually and is single:

  1. Gross Monthly: $5,000
  2. FICA (SS + Medicare): $382.50
  3. OR Transit Tax (0.1%): $5.00
  4. Paid Leave Oregon (0.6%): $30.00
  5. State Income Tax (Approx): $385.00
  6. Federal Tax (Approx): $520.00
  7. Estimated Monthly Take-home: ~$3,677.50

Note: This calculator provides estimates based on standard 2024 tax tables and simplified deductions. Actual payroll checks may vary based on local taxes (like Multnomah County or TriMet), specific employer health insurance premiums, and 401(k) contributions.

function calculateOregonPay() { var gross = parseFloat(document.getElementById('grossPay').value); var freq = parseFloat(document.getElementById('payFrequency').value); var filingStatus = document.getElementById('filingStatus').value; var preTax = parseFloat(document.getElementById('preTaxDeductions').value) || 0; if (isNaN(gross) || gross 1) { annualGross = gross * freq; } else { // If they entered annual, calculate period gross for display gross = annualGross / 1; } var periodGross = annualGross / (freq === 1 ? 12 : freq); var annualPreTax = preTax * (freq === 1 ? 12 : freq); var taxableAnnual = annualGross – annualPreTax; // 1. Social Security (6.2% up to 168,600) var annualSocSec = Math.min(annualGross, 168600) * 0.062; // 2. Medicare (1.45%) var annualMedicare = annualGross * 0.0145; // 3. Oregon Transit Tax (0.1%) var annualTransit = annualGross * 0.001; // 4. Paid Leave Oregon (0.6%) var annualPaidLeave = annualGross * 0.006; // 5. Federal Income Tax (Simplified 2024 Single/Joint Brackets) var fedTax = 0; var fedTaxable = taxableAnnual – (filingStatus === 'single' ? 14600 : 29200); // Standard Deduction if (fedTaxable > 0) { if (filingStatus === 'single') { if (fedTaxable <= 11600) fedTax = fedTaxable * 0.10; else if (fedTaxable <= 47150) fedTax = 1160 + (fedTaxable – 11600) * 0.12; else if (fedTaxable <= 100525) fedTax = 5426 + (fedTaxable – 47150) * 0.22; else if (fedTaxable <= 191950) fedTax = 17168 + (fedTaxable – 100525) * 0.24; else fedTax = 39110 + (fedTaxable – 191950) * 0.32; } else { if (fedTaxable <= 23200) fedTax = fedTaxable * 0.10; else if (fedTaxable <= 94300) fedTax = 2320 + (fedTaxable – 23200) * 0.12; else if (fedTaxable 0) { if (stateTaxable <= 4100) stateTax = stateTaxable * 0.0475; else if (stateTaxable <= 10250) stateTax = 194.75 + (stateTaxable – 4100) * 0.0675; else if (stateTaxable <= 125000) stateTax = 610 + (stateTaxable – 10250) * 0.0875; else stateTax = 10653 + (stateTaxable – 125000) * 0.099; } // Division factor for display var divisor = freq === 1 ? 12 : freq; // Display results per period document.getElementById('resGross').innerText = "$" + (annualGross / divisor).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('resFedTax').innerText = "- $" + (fedTax / divisor).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('resSocSec').innerText = "- $" + (annualSocSec / divisor).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('resMed').innerText = "- $" + (annualMedicare / divisor).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('resStateTax').innerText = "- $" + (stateTax / divisor).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('resTransit').innerText = "- $" + (annualTransit / divisor).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('resPaidLeave').innerText = "- $" + (annualPaidLeave / divisor).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); var netPay = (annualGross / divisor) – (fedTax / divisor) – (annualSocSec / divisor) – (annualMedicare / divisor) – (stateTax / divisor) – (annualTransit / divisor) – (annualPaidLeave / divisor) – (preTax); document.getElementById('resNetPay').innerText = "$" + netPay.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('resultsArea').style.display = "block"; }

Leave a Comment