.ok-calc-container { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; max-width: 800px; margin: 20px auto; padding: 25px; border: 1px solid #ddd; border-radius: 8px; background-color: #f9f9f9; color: #333; line-height: 1.6; }
.ok-calc-header { text-align: center; margin-bottom: 30px; }
.ok-calc-header h2 { color: #004a99; margin-bottom: 10px; }
.ok-calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.ok-calc-input-group { margin-bottom: 15px; }
.ok-calc-input-group label { display: block; font-weight: bold; margin-bottom: 5px; font-size: 14px; }
.ok-calc-input-group input, .ok-calc-input-group select { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; box-sizing: border-box; }
.ok-calc-button { width: 100%; padding: 15px; background-color: #004a99; color: white; border: none; border-radius: 4px; font-size: 18px; font-weight: bold; cursor: pointer; margin-top: 20px; transition: background-color 0.3s; }
.ok-calc-button:hover { background-color: #003366; }
.ok-calc-results { margin-top: 30px; padding: 20px; background-color: #fff; border: 2px solid #004a99; border-radius: 8px; display: none; }
.ok-calc-results h3 { margin-top: 0; color: #004a99; border-bottom: 2px solid #eee; padding-bottom: 10px; }
.ok-calc-result-row { display: flex; justify-content: space-between; margin-bottom: 10px; font-size: 16px; }
.ok-calc-result-row.total { font-weight: bold; font-size: 20px; color: #2e7d32; border-top: 2px solid #eee; pt: 10px; margin-top: 15px; }
.ok-calc-article { margin-top: 40px; border-top: 1px solid #ddd; padding-top: 20px; }
.ok-calc-article h2 { color: #004a99; font-size: 22px; }
.ok-calc-article h3 { color: #333; font-size: 18px; }
@media (max-width: 600px) { .ok-calc-grid { grid-template-columns: 1fr; } }
Gross Pay Per Period ($)
Pay Frequency
Weekly
Bi-weekly (Every 2 weeks)
Semi-monthly (Twice a month)
Monthly
Filing Status
Single
Married Filing Jointly
Pre-tax Deductions ($)
Calculate Net Pay
Paycheck Breakdown
Gross Pay:
$0.00
Federal Income Tax:
$0.00
Social Security (6.2%):
$0.00
Medicare (1.45%):
$0.00
Oklahoma State Tax:
$0.00
Pre-tax Deductions:
$0.00
Take-Home Pay:
$0.00
Understanding Your Oklahoma Paycheck
Working in the "Sooner State" means navigating specific state tax regulations alongside federal obligations. Unlike states with no income tax, Oklahoma utilizes a progressive tax system where earners with higher incomes pay a higher percentage.
How Oklahoma State Income Tax Works
Oklahoma's income tax structure consists of six brackets. For the 2024 tax year, the rates range from 0.25% to a top rate of 4.75%. The top rate kicks in at a relatively low threshold ($7,200 for single filers and $12,200 for married filers), meaning most full-time workers in Oklahoma will find a significant portion of their income taxed at the 4.75% rate.
Mandatory Federal Deductions
Regardless of your state, every legal employee in the U.S. is subject to FICA taxes and Federal Income Tax:
Social Security: 6.2% of your gross pay (up to the annual wage base limit).
Medicare: 1.45% of your gross pay.
Federal Income Tax: Calculated based on your IRS tax brackets, which range from 10% to 37% depending on your taxable income and filing status.
Typical Example: $50,000 Annual Salary
If you earn $50,000 annually in Oklahoma and file as Single:
Gross Bi-weekly Pay: Approximately $1,923.08
FICA (7.65%): ~$147.11
Oklahoma State Tax: ~$78.50
Federal Withholding: ~$165.00 (Standard deduction applied)
Estimated Take-Home: ~$1,532.47 per pay period
Local Taxes in Oklahoma
A notable benefit for Oklahoma residents is that cities and counties in Oklahoma do not levy local income taxes. Your tax burden is limited to the Federal and State levels, though sales taxes in Oklahoma can be among the highest in the nation.
function calculateOklahomaPay() {
var grossPay = parseFloat(document.getElementById('grossPay').value) || 0;
var frequency = parseFloat(document.getElementById('payFrequency').value) || 26;
var preTax = parseFloat(document.getElementById('preTax').value) || 0;
var status = document.getElementById('filingStatus').value;
var annualGross = grossPay * frequency;
var annualPreTax = preTax * frequency;
var annualTaxable = annualGross – annualPreTax;
// FICA (Social Security 6.2%, Medicare 1.45%)
var ssTax = grossPay * 0.062;
var medTax = grossPay * 0.0145;
// Federal Income Tax (Simplified 2024 Brackets)
var fedStandardDeduction = (status === 'single') ? 14600 : 29200;
var fedTaxableIncome = Math.max(0, annualTaxable – fedStandardDeduction);
var annualFedTax = 0;
if (status === 'single') {
if (fedTaxableIncome > 609350) annualFedTax += (fedTaxableIncome – 609350) * 0.37 + 183647;
else if (fedTaxableIncome > 243725) annualFedTax += (fedTaxableIncome – 243725) * 0.35 + 55678;
else if (fedTaxableIncome > 191950) annualFedTax += (fedTaxableIncome – 191950) * 0.32 + 39110;
else if (fedTaxableIncome > 100525) annualFedTax += (fedTaxableIncome – 100525) * 0.24 + 17168;
else if (fedTaxableIncome > 47150) annualFedTax += (fedTaxableIncome – 47150) * 0.22 + 5431;
else if (fedTaxableIncome > 11600) annualFedTax += (fedTaxableIncome – 11600) * 0.12 + 1160;
else annualFedTax += fedTaxableIncome * 0.10;
} else {
if (fedTaxableIncome > 731200) annualFedTax += (fedTaxableIncome – 731200) * 0.37 + 177597;
else if (fedTaxableIncome > 487450) annualFedTax += (fedTaxableIncome – 487450) * 0.35 + 92334;
else if (fedTaxableIncome > 383900) annualFedTax += (fedTaxableIncome – 383900) * 0.32 + 59209;
else if (fedTaxableIncome > 201050) annualFedTax += (fedTaxableIncome – 201050) * 0.24 + 34335;
else if (fedTaxableIncome > 94300) annualFedTax += (fedTaxableIncome – 94300) * 0.22 + 10862;
else if (fedTaxableIncome > 23200) annualFedTax += (fedTaxableIncome – 23200) * 0.12 + 2320;
else annualFedTax += fedTaxableIncome * 0.10;
}
var fedTaxPerPeriod = annualFedTax / frequency;
// Oklahoma State Tax (2024 Brackets)
var annualStateTax = 0;
var stTaxable = annualTaxable; // Simplified: ignoring state-specific standard deductions for core logic
if (status === 'single') {
if (stTaxable > 7200) annualStateTax += (stTaxable – 7200) * 0.0475 + 171.25;
else if (stTaxable > 4900) annualStateTax += (stTaxable – 4900) * 0.0375 + 85.00;
else if (stTaxable > 3750) annualStateTax += (stTaxable – 3750) * 0.0275 + 53.38;
else if (stTaxable > 2500) annualStateTax += (stTaxable – 2500) * 0.0175 + 31.50;
else if (stTaxable > 1000) annualStateTax += (stTaxable – 1000) * 0.0075 + 2.50;
else annualStateTax += stTaxable * 0.0025;
} else {
if (stTaxable > 12200) annualStateTax += (stTaxable – 12200) * 0.0475 + 242.50;
else if (stTaxable > 9600) annualStateTax += (stTaxable – 9600) * 0.0375 + 145.00;
else if (stTaxable > 7300) annualStateTax += (stTaxable – 7300) * 0.0275 + 81.75;
else if (stTaxable > 5000) annualStateTax += (stTaxable – 5000) * 0.0175 + 41.50;
else if (stTaxable > 2000) annualStateTax += (stTaxable – 2000) * 0.0075 + 5.00;
else annualStateTax += stTaxable * 0.0025;
}
var stateTaxPerPeriod = annualStateTax / frequency;
var netPay = grossPay – fedTaxPerPeriod – ssTax – medTax – stateTaxPerPeriod – preTax;
document.getElementById('resGross').innerText = '$' + grossPay.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resFedTax').innerText = '$' + fedTaxPerPeriod.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resSS').innerText = '$' + ssTax.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resMed').innerText = '$' + medTax.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resStateTax').innerText = '$' + stateTaxPerPeriod.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resDeductions').innerText = '$' + preTax.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resNetPay').innerText = '$' + Math.max(0, netPay).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resultsArea').style.display = 'block';
}