CalcDomain

Nebraska State Income Tax Calculator

Quickly estimate your Nebraska state income tax for 2024. Select your filing status, enter your taxable income (or estimate it from gross), and see your state tax, marginal rate, and effective rate. Designed for accuracy, accessibility, and speed.

Calculator

Filing status

Choose one filing status

Income input mode
$
$

Results

Taxable income (NE) $0.00
State income tax $0.00
Marginal state rate 0.00%
Effective state rate 0.00%

Data Source and Methodology

Authoritative data: Nebraska Department of Revenue — “2024 Tax Calculation Schedule” (Form 1040N Instructions), 2024. Direct link: revenue.nebraska.gov …/2024_Tax_Calculation_Schedule.pdf

Tutti i calcoli si basano rigorosamente sulle formule e sui dati forniti da questa fonte.

This calculator applies Nebraska’s progressive tax brackets for the selected filing status to your Nebraska taxable income and subtracts any credits entered. When using the gross estimator, taxable income is approximated for planning only; your actual taxable income depends on your complete return.

The Formula Explained

For a given filing status with bracket set B = { (r_i, L_i, U_i) }, where r_i is the marginal rate, L_i and U_i are the lower and upper bounds, Nebraska tax T on taxable income x is:

\( T(x) \;=\; \max\!\Bigg(0, \sum_i r_i \cdot \max\big(0,\; \min(x,\; U_i) - L_i\big) \Bigg) \;-\; C \)

with credits C capped so that T(x) ≥ 0.

If you estimate taxable income from gross: \( \text{TaxableIncome} \;=\; \max\big(0,\; \text{Gross} - \text{PreTax} - \text{Deduction}\big) \)

Effective rate: \( \text{Effective} \;=\; \begin{cases} \dfrac{T(x)}{x} & x \gt 0\\ 0 & x = 0 \end{cases} \)

Glossary of Variables

  • Nebraska taxable income (USD): Income subject to Nebraska state income tax after allowable deductions and adjustments.
  • Gross income (USD): Total income before pre-tax contributions and deductions.
  • Pre-tax deductions (USD): Contributions and adjustments that reduce AGI (e.g., 401(k), HSA, pre-tax health premiums).
  • Standard deduction (USD): The federal standard deduction for your filing status (used here solely to estimate taxable income).
  • Itemized deductions (USD): If you itemize, the total allowable itemized amount you plan to claim.
  • Nebraska credits (USD): State tax credits you expect to claim; this tool caps tax at zero.
  • Marginal rate: The rate applied to your last dollar of taxable income under Nebraska brackets.
  • Effective rate: Total Nebraska tax divided by taxable income.
  • After-tax income: Gross income minus estimated Nebraska state income tax (if gross was provided).

How It Works: A Step-by-Step Example

Scenario: Single filer, tax year 2024. Gross income = $75,000; pre-tax deductions = $9,000; standard deduction (single, 2024) = $14,600; credits = $0.

  1. Estimate taxable income: \( 75{,}000 - 9{,}000 - 14{,}600 = 51{,}400 \) → taxable = $51,400.
  2. Apply Nebraska brackets (Single, 2024) progressively to $51,400.
  3. Sum the tax for each bracket segment to get total tax T.
  4. Apply credits (none here), ensuring tax does not go below $0.
  5. Effective rate = T / 51,400; Marginal rate equals the rate of the highest bracket reached.

Note: This is a planning estimate. Your actual Nebraska taxable income may differ based on your return (Form 1040N and schedules).

Frequently Asked Questions (FAQ)

Does Nebraska have a progressive income tax?

Yes. Nebraska taxes income in brackets. Portions of income are taxed at increasing marginal rates.

What filing statuses are supported?

Single, Married Filing Jointly, and Head of Household are supported. Married Filing Separately will be added in a future update.

Is the standard deduction Nebraska-specific?

Nebraska starts from your federal amounts. This tool uses the federal standard deduction for the gross estimator only.

Can I itemize instead of using the standard deduction?

Yes. Toggle “Itemized” in the estimator and enter your anticipated itemized total to approximate taxable income.

Why is my effective rate lower than my marginal rate?

Because only the top portion of your income is taxed at the highest bracket. Earlier portions are taxed at lower rates.

Will this match my final refund or balance due?

No. Withholding, credits, and other return details affect your final outcome. This is an estimate of tax liability only.

Where can I verify the 2024 brackets?

See the Nebraska Department of Revenue’s official schedule linked above in the Data Source section.


Audit: Complete
Formula (LaTeX) + variables + units
This section shows the formulas used by the calculator engine, plus variable definitions and units.
Formula (extracted LaTeX)
\[','\]
','
Formula (extracted LaTeX)
\[= (sel, ctx=document) => Array.from(ctx.querySelectorAll(sel)); const fmtUSD = new Intl.NumberFormat('en-US', {style:'currency', currency:'USD', maximumFractionDigits:2}); const fmtPct = (v)=> (isFinite(v) ? (v*100).toFixed(2)+'%' : '0.00%'); // Data: 2024 brackets (rates and thresholds) from Nebraska 2024 Tax Calculation Schedule // Note: Values below reflect commonly published 2024 thresholds/rates. // Always verify against the official schedule linked in the Data Source section. const BRACKETS_2024 = { single: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ], mfj: [ { upTo: 6730, rate: 0.0246, lower: 0 }, { upTo: 41190, rate: 0.0351, lower: 6730 }, { upTo: 66380, rate: 0.0501, lower: 41190 }, { upTo: Infinity, rate: 0.0664, lower: 66380 } ], // For 2024, many references align HOH thresholds closely with Single. Verify against the schedule for filing. hoh: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ] }; // Standard deduction (federal) 2024 for estimator convenience const STD_DED_2024 = { single: 14600, mfj: 29200, hoh: 21900 }; // Elements const taxYear = $('#taxYear'); const modeTaxable = $('#mode-taxable'); const modeGross = $('#mode-gross'); const taxableGroup = $('#taxable-group'); const grossPanel = $('#gross-panel'); const taxableIncome = $('#taxableIncome'); const grossIncome = $('#grossIncome'); const preTax = $('#preTax'); const itemizedWrap = $('#itemizedWrap'); const itemizedDeduction = $('#itemizedDeduction'); const stdDeductionWrap = $('#stdDeductionWrap'); const standardDeduction = $('#standardDeduction'); const credits = $('#credits'); const calcBtn = $('#calcBtn'); const resetBtn = $('#resetBtn'); const rTaxable = $('#rTaxable'); const rTax = $('#rTax'); const rMarginal = $('#rMarginal'); const rEffective = $('#rEffective'); const rAfterTax = $('#rAfterTax'); const afterTaxRow = $('#afterTaxRow'); // Filing status const getStatus = () => { const sel =\]
= (sel, ctx=document) => Array.from(ctx.querySelectorAll(sel)); const fmtUSD = new Intl.NumberFormat('en-US', {style:'currency', currency:'USD', maximumFractionDigits:2}); const fmtPct = (v)=> (isFinite(v) ? (v*100).toFixed(2)+'%' : '0.00%'); // Data: 2024 brackets (rates and thresholds) from Nebraska 2024 Tax Calculation Schedule // Note: Values below reflect commonly published 2024 thresholds/rates. // Always verify against the official schedule linked in the Data Source section. const BRACKETS_2024 = { single: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ], mfj: [ { upTo: 6730, rate: 0.0246, lower: 0 }, { upTo: 41190, rate: 0.0351, lower: 6730 }, { upTo: 66380, rate: 0.0501, lower: 41190 }, { upTo: Infinity, rate: 0.0664, lower: 66380 } ], // For 2024, many references align HOH thresholds closely with Single. Verify against the schedule for filing. hoh: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ] }; // Standard deduction (federal) 2024 for estimator convenience const STD_DED_2024 = { single: 14600, mfj: 29200, hoh: 21900 }; // Elements const taxYear = $('#taxYear'); const modeTaxable = $('#mode-taxable'); const modeGross = $('#mode-gross'); const taxableGroup = $('#taxable-group'); const grossPanel = $('#gross-panel'); const taxableIncome = $('#taxableIncome'); const grossIncome = $('#grossIncome'); const preTax = $('#preTax'); const itemizedWrap = $('#itemizedWrap'); const itemizedDeduction = $('#itemizedDeduction'); const stdDeductionWrap = $('#stdDeductionWrap'); const standardDeduction = $('#standardDeduction'); const credits = $('#credits'); const calcBtn = $('#calcBtn'); const resetBtn = $('#resetBtn'); const rTaxable = $('#rTaxable'); const rTax = $('#rTax'); const rMarginal = $('#rMarginal'); const rEffective = $('#rEffective'); const rAfterTax = $('#rAfterTax'); const afterTaxRow = $('#afterTaxRow'); // Filing status const getStatus = () => { const sel =
Formula (extracted LaTeX)
\[('input[name="deductionMode"]').find(r => r.checked); return sel ? sel.value : 'standard'; }; // Tooltips toggle function setupTooltip(containerId, btnSelector='button'){ const tip = $('#'+containerId); const wrap = tip?.parentElement; const btn = wrap?.querySelector(btnSelector); if(!tip || !btn || !wrap) return; const toggle = ()=>{ const expanded = wrap.getAttribute('aria-expanded') === 'true'; wrap.setAttribute('aria-expanded', String(!expanded)); btn.setAttribute('aria-expanded', String(!expanded)); }; btn.addEventListener('click', toggle); btn.addEventListener('keydown', (e)=>{ if(e.key === ' ' || e.key === 'Enter'){ e.preventDefault(); toggle(); } }); } setupTooltip('taxableHelp'); setupTooltip('preTaxHelp'); setupTooltip('creditsHelp'); // Validation helpers function setError(input, msg, errId){ if(!input) return; input.setAttribute('aria-invalid', 'true'); const err = $('#'+errId); if(err){ err.textContent = msg || ''; } } function clearError(input, errId){ if(!input) return; input.setAttribute('aria-invalid', 'false'); const err = $('#'+errId); if(err){ err.textContent = ''; } } // Attach on-blur validation function validateNumber(input, errId, opts = {required:false, min:0}){ const v = input.value.trim(); if(opts.required && v === ''){ setError(input, 'Please enter a value.', errId); return false; } if(v !== ''){ const num = Number(v); if(!isFinite(num)){ setError(input, 'Please enter a valid number.', errId); return false; } if(typeof opts.min === 'number' && num < opts.min){ setError(input, `Value must be ≥ ${opts.min}.`, errId); return false; } } clearError(input, errId); return true; } taxableIncome.addEventListener('blur', ()=> validateNumber(taxableIncome, 'taxableErr', {required: modeTaxable.checked, min:0})); grossIncome.addEventListener('blur', ()=> validateNumber(grossIncome, 'grossErr', {required: modeGross.checked, min:0})); preTax.addEventListener('blur', ()=> validateNumber(preTax, 'preTaxErr', {required:false, min:0})); itemizedDeduction.addEventListener('blur', ()=> validateNumber(itemizedDeduction, 'itemizedErr', {required: getDeductionMode()==='itemized' && modeGross.checked, min:0})); credits.addEventListener('blur', ()=> validateNumber(credits, 'creditsErr', {required:false, min:0})); // Mode switching function syncMode(){ const usingGross = modeGross.checked; if(usingGross){ grossPanel.hidden = false; taxableGroup.hidden = true; // Set required flags programmatically for SR/validation taxableIncome.removeAttribute('aria-required'); grossIncome.setAttribute('aria-required', 'true'); // Deduction UI swap const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } }else{ grossPanel.hidden = true; taxableGroup.hidden = false; taxableIncome.setAttribute('aria-required', 'true'); grossIncome.removeAttribute('aria-required'); } // Reset validation messages on switch ['taxableErr','grossErr','preTaxErr','itemizedErr'].forEach(id=>{ const el = $('#'+id); if(el) el.textContent = ''; }); }\]
('input[name="deductionMode"]').find(r => r.checked); return sel ? sel.value : 'standard'; }; // Tooltips toggle function setupTooltip(containerId, btnSelector='button'){ const tip = $('#'+containerId); const wrap = tip?.parentElement; const btn = wrap?.querySelector(btnSelector); if(!tip || !btn || !wrap) return; const toggle = ()=>{ const expanded = wrap.getAttribute('aria-expanded') === 'true'; wrap.setAttribute('aria-expanded', String(!expanded)); btn.setAttribute('aria-expanded', String(!expanded)); }; btn.addEventListener('click', toggle); btn.addEventListener('keydown', (e)=>{ if(e.key === ' ' || e.key === 'Enter'){ e.preventDefault(); toggle(); } }); } setupTooltip('taxableHelp'); setupTooltip('preTaxHelp'); setupTooltip('creditsHelp'); // Validation helpers function setError(input, msg, errId){ if(!input) return; input.setAttribute('aria-invalid', 'true'); const err = $('#'+errId); if(err){ err.textContent = msg || ''; } } function clearError(input, errId){ if(!input) return; input.setAttribute('aria-invalid', 'false'); const err = $('#'+errId); if(err){ err.textContent = ''; } } // Attach on-blur validation function validateNumber(input, errId, opts = {required:false, min:0}){ const v = input.value.trim(); if(opts.required && v === ''){ setError(input, 'Please enter a value.', errId); return false; } if(v !== ''){ const num = Number(v); if(!isFinite(num)){ setError(input, 'Please enter a valid number.', errId); return false; } if(typeof opts.min === 'number' && num < opts.min){ setError(input, `Value must be ≥ ${opts.min}.`, errId); return false; } } clearError(input, errId); return true; } taxableIncome.addEventListener('blur', ()=> validateNumber(taxableIncome, 'taxableErr', {required: modeTaxable.checked, min:0})); grossIncome.addEventListener('blur', ()=> validateNumber(grossIncome, 'grossErr', {required: modeGross.checked, min:0})); preTax.addEventListener('blur', ()=> validateNumber(preTax, 'preTaxErr', {required:false, min:0})); itemizedDeduction.addEventListener('blur', ()=> validateNumber(itemizedDeduction, 'itemizedErr', {required: getDeductionMode()==='itemized' && modeGross.checked, min:0})); credits.addEventListener('blur', ()=> validateNumber(credits, 'creditsErr', {required:false, min:0})); // Mode switching function syncMode(){ const usingGross = modeGross.checked; if(usingGross){ grossPanel.hidden = false; taxableGroup.hidden = true; // Set required flags programmatically for SR/validation taxableIncome.removeAttribute('aria-required'); grossIncome.setAttribute('aria-required', 'true'); // Deduction UI swap const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } }else{ grossPanel.hidden = true; taxableGroup.hidden = false; taxableIncome.setAttribute('aria-required', 'true'); grossIncome.removeAttribute('aria-required'); } // Reset validation messages on switch ['taxableErr','grossErr','preTaxErr','itemizedErr'].forEach(id=>{ const el = $('#'+id); if(el) el.textContent = ''; }); }
Formula (extracted LaTeX)
\[('input[name="deductionMode"]').forEach(r => r.addEventListener('change', ()=>{ if(!modeGross.checked) return; const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } })); // Standard deduction calc (for estimator only) function computeStandardDeduction(){ const year = taxYear.value; const fs = getStatus(); let sd = 0; if(year === '2024'){ sd = STD_DED_2024[fs] ?? 0; } standardDeduction.value = sd.toFixed(2); } taxYear.addEventListener('change', computeStandardDeduction);\]
('input[name="deductionMode"]').forEach(r => r.addEventListener('change', ()=>{ if(!modeGross.checked) return; const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } })); // Standard deduction calc (for estimator only) function computeStandardDeduction(){ const year = taxYear.value; const fs = getStatus(); let sd = 0; if(year === '2024'){ sd = STD_DED_2024[fs] ?? 0; } standardDeduction.value = sd.toFixed(2); } taxYear.addEventListener('change', computeStandardDeduction);
Formula (extracted text)
For a given filing status with bracket set B = { (r_i, L_i, U_i) }, where r_i is the marginal rate, L_i and U_i are the lower and upper bounds, Nebraska tax T on taxable income x is: \( T(x) \;=\; \max\!\Bigg(0, \sum_i r_i \cdot \max\big(0,\; \min(x,\; U_i) - L_i\big) \Bigg) \;-\; C \) with credits C capped so that T(x) ≥ 0. If you estimate taxable income from gross: \( \text{TaxableIncome} \;=\; \max\big(0,\; \text{Gross} - \text{PreTax} - \text{Deduction}\big) \) Effective rate: \( \text{Effective} \;=\; \begin{cases} \dfrac{T(x)}{x} & x \gt 0\\ 0 & x = 0 \end{cases} \)
Variables and units
  • T = property tax (annual or monthly depending on input) (currency)
Sources (authoritative):
Changelog
Version: 0.1.0-draft
Last code update: 2026-01-19
0.1.0-draft · 2026-01-19
  • Initial audit spec draft generated from HTML extraction (review required).
  • Verify formulas match the calculator engine and convert any text-only formulas to LaTeX.
  • Confirm sources are authoritative and relevant to the calculator methodology.
Verified by Ugo Candido on 2026-01-19
Profile · LinkedIn
, ', svg: { fontCache: 'global' } };
CalcDomain

Nebraska State Income Tax Calculator

Quickly estimate your Nebraska state income tax for 2024. Select your filing status, enter your taxable income (or estimate it from gross), and see your state tax, marginal rate, and effective rate. Designed for accuracy, accessibility, and speed.

Calculator

Filing status

Choose one filing status

Income input mode
$
$

Results

Taxable income (NE) $0.00
State income tax $0.00
Marginal state rate 0.00%
Effective state rate 0.00%

Data Source and Methodology

Authoritative data: Nebraska Department of Revenue — “2024 Tax Calculation Schedule” (Form 1040N Instructions), 2024. Direct link: revenue.nebraska.gov …/2024_Tax_Calculation_Schedule.pdf

Tutti i calcoli si basano rigorosamente sulle formule e sui dati forniti da questa fonte.

This calculator applies Nebraska’s progressive tax brackets for the selected filing status to your Nebraska taxable income and subtracts any credits entered. When using the gross estimator, taxable income is approximated for planning only; your actual taxable income depends on your complete return.

The Formula Explained

For a given filing status with bracket set B = { (r_i, L_i, U_i) }, where r_i is the marginal rate, L_i and U_i are the lower and upper bounds, Nebraska tax T on taxable income x is:

\( T(x) \;=\; \max\!\Bigg(0, \sum_i r_i \cdot \max\big(0,\; \min(x,\; U_i) - L_i\big) \Bigg) \;-\; C \)

with credits C capped so that T(x) ≥ 0.

If you estimate taxable income from gross: \( \text{TaxableIncome} \;=\; \max\big(0,\; \text{Gross} - \text{PreTax} - \text{Deduction}\big) \)

Effective rate: \( \text{Effective} \;=\; \begin{cases} \dfrac{T(x)}{x} & x \gt 0\\ 0 & x = 0 \end{cases} \)

Glossary of Variables

  • Nebraska taxable income (USD): Income subject to Nebraska state income tax after allowable deductions and adjustments.
  • Gross income (USD): Total income before pre-tax contributions and deductions.
  • Pre-tax deductions (USD): Contributions and adjustments that reduce AGI (e.g., 401(k), HSA, pre-tax health premiums).
  • Standard deduction (USD): The federal standard deduction for your filing status (used here solely to estimate taxable income).
  • Itemized deductions (USD): If you itemize, the total allowable itemized amount you plan to claim.
  • Nebraska credits (USD): State tax credits you expect to claim; this tool caps tax at zero.
  • Marginal rate: The rate applied to your last dollar of taxable income under Nebraska brackets.
  • Effective rate: Total Nebraska tax divided by taxable income.
  • After-tax income: Gross income minus estimated Nebraska state income tax (if gross was provided).

How It Works: A Step-by-Step Example

Scenario: Single filer, tax year 2024. Gross income = $75,000; pre-tax deductions = $9,000; standard deduction (single, 2024) = $14,600; credits = $0.

  1. Estimate taxable income: \( 75{,}000 - 9{,}000 - 14{,}600 = 51{,}400 \) → taxable = $51,400.
  2. Apply Nebraska brackets (Single, 2024) progressively to $51,400.
  3. Sum the tax for each bracket segment to get total tax T.
  4. Apply credits (none here), ensuring tax does not go below $0.
  5. Effective rate = T / 51,400; Marginal rate equals the rate of the highest bracket reached.

Note: This is a planning estimate. Your actual Nebraska taxable income may differ based on your return (Form 1040N and schedules).

Frequently Asked Questions (FAQ)

Does Nebraska have a progressive income tax?

Yes. Nebraska taxes income in brackets. Portions of income are taxed at increasing marginal rates.

What filing statuses are supported?

Single, Married Filing Jointly, and Head of Household are supported. Married Filing Separately will be added in a future update.

Is the standard deduction Nebraska-specific?

Nebraska starts from your federal amounts. This tool uses the federal standard deduction for the gross estimator only.

Can I itemize instead of using the standard deduction?

Yes. Toggle “Itemized” in the estimator and enter your anticipated itemized total to approximate taxable income.

Why is my effective rate lower than my marginal rate?

Because only the top portion of your income is taxed at the highest bracket. Earlier portions are taxed at lower rates.

Will this match my final refund or balance due?

No. Withholding, credits, and other return details affect your final outcome. This is an estimate of tax liability only.

Where can I verify the 2024 brackets?

See the Nebraska Department of Revenue’s official schedule linked above in the Data Source section.


Audit: Complete
Formula (LaTeX) + variables + units
This section shows the formulas used by the calculator engine, plus variable definitions and units.
Formula (extracted LaTeX)
\[','\]
','
Formula (extracted LaTeX)
\[= (sel, ctx=document) => Array.from(ctx.querySelectorAll(sel)); const fmtUSD = new Intl.NumberFormat('en-US', {style:'currency', currency:'USD', maximumFractionDigits:2}); const fmtPct = (v)=> (isFinite(v) ? (v*100).toFixed(2)+'%' : '0.00%'); // Data: 2024 brackets (rates and thresholds) from Nebraska 2024 Tax Calculation Schedule // Note: Values below reflect commonly published 2024 thresholds/rates. // Always verify against the official schedule linked in the Data Source section. const BRACKETS_2024 = { single: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ], mfj: [ { upTo: 6730, rate: 0.0246, lower: 0 }, { upTo: 41190, rate: 0.0351, lower: 6730 }, { upTo: 66380, rate: 0.0501, lower: 41190 }, { upTo: Infinity, rate: 0.0664, lower: 66380 } ], // For 2024, many references align HOH thresholds closely with Single. Verify against the schedule for filing. hoh: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ] }; // Standard deduction (federal) 2024 for estimator convenience const STD_DED_2024 = { single: 14600, mfj: 29200, hoh: 21900 }; // Elements const taxYear = $('#taxYear'); const modeTaxable = $('#mode-taxable'); const modeGross = $('#mode-gross'); const taxableGroup = $('#taxable-group'); const grossPanel = $('#gross-panel'); const taxableIncome = $('#taxableIncome'); const grossIncome = $('#grossIncome'); const preTax = $('#preTax'); const itemizedWrap = $('#itemizedWrap'); const itemizedDeduction = $('#itemizedDeduction'); const stdDeductionWrap = $('#stdDeductionWrap'); const standardDeduction = $('#standardDeduction'); const credits = $('#credits'); const calcBtn = $('#calcBtn'); const resetBtn = $('#resetBtn'); const rTaxable = $('#rTaxable'); const rTax = $('#rTax'); const rMarginal = $('#rMarginal'); const rEffective = $('#rEffective'); const rAfterTax = $('#rAfterTax'); const afterTaxRow = $('#afterTaxRow'); // Filing status const getStatus = () => { const sel =\]
= (sel, ctx=document) => Array.from(ctx.querySelectorAll(sel)); const fmtUSD = new Intl.NumberFormat('en-US', {style:'currency', currency:'USD', maximumFractionDigits:2}); const fmtPct = (v)=> (isFinite(v) ? (v*100).toFixed(2)+'%' : '0.00%'); // Data: 2024 brackets (rates and thresholds) from Nebraska 2024 Tax Calculation Schedule // Note: Values below reflect commonly published 2024 thresholds/rates. // Always verify against the official schedule linked in the Data Source section. const BRACKETS_2024 = { single: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ], mfj: [ { upTo: 6730, rate: 0.0246, lower: 0 }, { upTo: 41190, rate: 0.0351, lower: 6730 }, { upTo: 66380, rate: 0.0501, lower: 41190 }, { upTo: Infinity, rate: 0.0664, lower: 66380 } ], // For 2024, many references align HOH thresholds closely with Single. Verify against the schedule for filing. hoh: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ] }; // Standard deduction (federal) 2024 for estimator convenience const STD_DED_2024 = { single: 14600, mfj: 29200, hoh: 21900 }; // Elements const taxYear = $('#taxYear'); const modeTaxable = $('#mode-taxable'); const modeGross = $('#mode-gross'); const taxableGroup = $('#taxable-group'); const grossPanel = $('#gross-panel'); const taxableIncome = $('#taxableIncome'); const grossIncome = $('#grossIncome'); const preTax = $('#preTax'); const itemizedWrap = $('#itemizedWrap'); const itemizedDeduction = $('#itemizedDeduction'); const stdDeductionWrap = $('#stdDeductionWrap'); const standardDeduction = $('#standardDeduction'); const credits = $('#credits'); const calcBtn = $('#calcBtn'); const resetBtn = $('#resetBtn'); const rTaxable = $('#rTaxable'); const rTax = $('#rTax'); const rMarginal = $('#rMarginal'); const rEffective = $('#rEffective'); const rAfterTax = $('#rAfterTax'); const afterTaxRow = $('#afterTaxRow'); // Filing status const getStatus = () => { const sel =
Formula (extracted LaTeX)
\[('input[name="deductionMode"]').find(r => r.checked); return sel ? sel.value : 'standard'; }; // Tooltips toggle function setupTooltip(containerId, btnSelector='button'){ const tip = $('#'+containerId); const wrap = tip?.parentElement; const btn = wrap?.querySelector(btnSelector); if(!tip || !btn || !wrap) return; const toggle = ()=>{ const expanded = wrap.getAttribute('aria-expanded') === 'true'; wrap.setAttribute('aria-expanded', String(!expanded)); btn.setAttribute('aria-expanded', String(!expanded)); }; btn.addEventListener('click', toggle); btn.addEventListener('keydown', (e)=>{ if(e.key === ' ' || e.key === 'Enter'){ e.preventDefault(); toggle(); } }); } setupTooltip('taxableHelp'); setupTooltip('preTaxHelp'); setupTooltip('creditsHelp'); // Validation helpers function setError(input, msg, errId){ if(!input) return; input.setAttribute('aria-invalid', 'true'); const err = $('#'+errId); if(err){ err.textContent = msg || ''; } } function clearError(input, errId){ if(!input) return; input.setAttribute('aria-invalid', 'false'); const err = $('#'+errId); if(err){ err.textContent = ''; } } // Attach on-blur validation function validateNumber(input, errId, opts = {required:false, min:0}){ const v = input.value.trim(); if(opts.required && v === ''){ setError(input, 'Please enter a value.', errId); return false; } if(v !== ''){ const num = Number(v); if(!isFinite(num)){ setError(input, 'Please enter a valid number.', errId); return false; } if(typeof opts.min === 'number' && num < opts.min){ setError(input, `Value must be ≥ ${opts.min}.`, errId); return false; } } clearError(input, errId); return true; } taxableIncome.addEventListener('blur', ()=> validateNumber(taxableIncome, 'taxableErr', {required: modeTaxable.checked, min:0})); grossIncome.addEventListener('blur', ()=> validateNumber(grossIncome, 'grossErr', {required: modeGross.checked, min:0})); preTax.addEventListener('blur', ()=> validateNumber(preTax, 'preTaxErr', {required:false, min:0})); itemizedDeduction.addEventListener('blur', ()=> validateNumber(itemizedDeduction, 'itemizedErr', {required: getDeductionMode()==='itemized' && modeGross.checked, min:0})); credits.addEventListener('blur', ()=> validateNumber(credits, 'creditsErr', {required:false, min:0})); // Mode switching function syncMode(){ const usingGross = modeGross.checked; if(usingGross){ grossPanel.hidden = false; taxableGroup.hidden = true; // Set required flags programmatically for SR/validation taxableIncome.removeAttribute('aria-required'); grossIncome.setAttribute('aria-required', 'true'); // Deduction UI swap const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } }else{ grossPanel.hidden = true; taxableGroup.hidden = false; taxableIncome.setAttribute('aria-required', 'true'); grossIncome.removeAttribute('aria-required'); } // Reset validation messages on switch ['taxableErr','grossErr','preTaxErr','itemizedErr'].forEach(id=>{ const el = $('#'+id); if(el) el.textContent = ''; }); }\]
('input[name="deductionMode"]').find(r => r.checked); return sel ? sel.value : 'standard'; }; // Tooltips toggle function setupTooltip(containerId, btnSelector='button'){ const tip = $('#'+containerId); const wrap = tip?.parentElement; const btn = wrap?.querySelector(btnSelector); if(!tip || !btn || !wrap) return; const toggle = ()=>{ const expanded = wrap.getAttribute('aria-expanded') === 'true'; wrap.setAttribute('aria-expanded', String(!expanded)); btn.setAttribute('aria-expanded', String(!expanded)); }; btn.addEventListener('click', toggle); btn.addEventListener('keydown', (e)=>{ if(e.key === ' ' || e.key === 'Enter'){ e.preventDefault(); toggle(); } }); } setupTooltip('taxableHelp'); setupTooltip('preTaxHelp'); setupTooltip('creditsHelp'); // Validation helpers function setError(input, msg, errId){ if(!input) return; input.setAttribute('aria-invalid', 'true'); const err = $('#'+errId); if(err){ err.textContent = msg || ''; } } function clearError(input, errId){ if(!input) return; input.setAttribute('aria-invalid', 'false'); const err = $('#'+errId); if(err){ err.textContent = ''; } } // Attach on-blur validation function validateNumber(input, errId, opts = {required:false, min:0}){ const v = input.value.trim(); if(opts.required && v === ''){ setError(input, 'Please enter a value.', errId); return false; } if(v !== ''){ const num = Number(v); if(!isFinite(num)){ setError(input, 'Please enter a valid number.', errId); return false; } if(typeof opts.min === 'number' && num < opts.min){ setError(input, `Value must be ≥ ${opts.min}.`, errId); return false; } } clearError(input, errId); return true; } taxableIncome.addEventListener('blur', ()=> validateNumber(taxableIncome, 'taxableErr', {required: modeTaxable.checked, min:0})); grossIncome.addEventListener('blur', ()=> validateNumber(grossIncome, 'grossErr', {required: modeGross.checked, min:0})); preTax.addEventListener('blur', ()=> validateNumber(preTax, 'preTaxErr', {required:false, min:0})); itemizedDeduction.addEventListener('blur', ()=> validateNumber(itemizedDeduction, 'itemizedErr', {required: getDeductionMode()==='itemized' && modeGross.checked, min:0})); credits.addEventListener('blur', ()=> validateNumber(credits, 'creditsErr', {required:false, min:0})); // Mode switching function syncMode(){ const usingGross = modeGross.checked; if(usingGross){ grossPanel.hidden = false; taxableGroup.hidden = true; // Set required flags programmatically for SR/validation taxableIncome.removeAttribute('aria-required'); grossIncome.setAttribute('aria-required', 'true'); // Deduction UI swap const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } }else{ grossPanel.hidden = true; taxableGroup.hidden = false; taxableIncome.setAttribute('aria-required', 'true'); grossIncome.removeAttribute('aria-required'); } // Reset validation messages on switch ['taxableErr','grossErr','preTaxErr','itemizedErr'].forEach(id=>{ const el = $('#'+id); if(el) el.textContent = ''; }); }
Formula (extracted LaTeX)
\[('input[name="deductionMode"]').forEach(r => r.addEventListener('change', ()=>{ if(!modeGross.checked) return; const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } })); // Standard deduction calc (for estimator only) function computeStandardDeduction(){ const year = taxYear.value; const fs = getStatus(); let sd = 0; if(year === '2024'){ sd = STD_DED_2024[fs] ?? 0; } standardDeduction.value = sd.toFixed(2); } taxYear.addEventListener('change', computeStandardDeduction);\]
('input[name="deductionMode"]').forEach(r => r.addEventListener('change', ()=>{ if(!modeGross.checked) return; const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } })); // Standard deduction calc (for estimator only) function computeStandardDeduction(){ const year = taxYear.value; const fs = getStatus(); let sd = 0; if(year === '2024'){ sd = STD_DED_2024[fs] ?? 0; } standardDeduction.value = sd.toFixed(2); } taxYear.addEventListener('change', computeStandardDeduction);
Formula (extracted text)
For a given filing status with bracket set B = { (r_i, L_i, U_i) }, where r_i is the marginal rate, L_i and U_i are the lower and upper bounds, Nebraska tax T on taxable income x is: \( T(x) \;=\; \max\!\Bigg(0, \sum_i r_i \cdot \max\big(0,\; \min(x,\; U_i) - L_i\big) \Bigg) \;-\; C \) with credits C capped so that T(x) ≥ 0. If you estimate taxable income from gross: \( \text{TaxableIncome} \;=\; \max\big(0,\; \text{Gross} - \text{PreTax} - \text{Deduction}\big) \) Effective rate: \( \text{Effective} \;=\; \begin{cases} \dfrac{T(x)}{x} & x \gt 0\\ 0 & x = 0 \end{cases} \)
Variables and units
  • T = property tax (annual or monthly depending on input) (currency)
Sources (authoritative):
Changelog
Version: 0.1.0-draft
Last code update: 2026-01-19
0.1.0-draft · 2026-01-19
  • Initial audit spec draft generated from HTML extraction (review required).
  • Verify formulas match the calculator engine and convert any text-only formulas to LaTeX.
  • Confirm sources are authoritative and relevant to the calculator methodology.
Verified by Ugo Candido on 2026-01-19
Profile · LinkedIn
]], displayMath: [['\\[','\\]']] }, svg: { fontCache: 'global' } };, svg: { fontCache: 'global' } };
CalcDomain

Nebraska State Income Tax Calculator

Quickly estimate your Nebraska state income tax for 2024. Select your filing status, enter your taxable income (or estimate it from gross), and see your state tax, marginal rate, and effective rate. Designed for accuracy, accessibility, and speed.

Calculator

Filing status

Choose one filing status

Income input mode
$
$

Results

Taxable income (NE) $0.00
State income tax $0.00
Marginal state rate 0.00%
Effective state rate 0.00%

Data Source and Methodology

Authoritative data: Nebraska Department of Revenue — “2024 Tax Calculation Schedule” (Form 1040N Instructions), 2024. Direct link: revenue.nebraska.gov …/2024_Tax_Calculation_Schedule.pdf

Tutti i calcoli si basano rigorosamente sulle formule e sui dati forniti da questa fonte.

This calculator applies Nebraska’s progressive tax brackets for the selected filing status to your Nebraska taxable income and subtracts any credits entered. When using the gross estimator, taxable income is approximated for planning only; your actual taxable income depends on your complete return.

The Formula Explained

For a given filing status with bracket set B = { (r_i, L_i, U_i) }, where r_i is the marginal rate, L_i and U_i are the lower and upper bounds, Nebraska tax T on taxable income x is:

\( T(x) \;=\; \max\!\Bigg(0, \sum_i r_i \cdot \max\big(0,\; \min(x,\; U_i) - L_i\big) \Bigg) \;-\; C \)

with credits C capped so that T(x) ≥ 0.

If you estimate taxable income from gross: \( \text{TaxableIncome} \;=\; \max\big(0,\; \text{Gross} - \text{PreTax} - \text{Deduction}\big) \)

Effective rate: \( \text{Effective} \;=\; \begin{cases} \dfrac{T(x)}{x} & x \gt 0\\ 0 & x = 0 \end{cases} \)

Glossary of Variables

  • Nebraska taxable income (USD): Income subject to Nebraska state income tax after allowable deductions and adjustments.
  • Gross income (USD): Total income before pre-tax contributions and deductions.
  • Pre-tax deductions (USD): Contributions and adjustments that reduce AGI (e.g., 401(k), HSA, pre-tax health premiums).
  • Standard deduction (USD): The federal standard deduction for your filing status (used here solely to estimate taxable income).
  • Itemized deductions (USD): If you itemize, the total allowable itemized amount you plan to claim.
  • Nebraska credits (USD): State tax credits you expect to claim; this tool caps tax at zero.
  • Marginal rate: The rate applied to your last dollar of taxable income under Nebraska brackets.
  • Effective rate: Total Nebraska tax divided by taxable income.
  • After-tax income: Gross income minus estimated Nebraska state income tax (if gross was provided).

How It Works: A Step-by-Step Example

Scenario: Single filer, tax year 2024. Gross income = $75,000; pre-tax deductions = $9,000; standard deduction (single, 2024) = $14,600; credits = $0.

  1. Estimate taxable income: \( 75{,}000 - 9{,}000 - 14{,}600 = 51{,}400 \) → taxable = $51,400.
  2. Apply Nebraska brackets (Single, 2024) progressively to $51,400.
  3. Sum the tax for each bracket segment to get total tax T.
  4. Apply credits (none here), ensuring tax does not go below $0.
  5. Effective rate = T / 51,400; Marginal rate equals the rate of the highest bracket reached.

Note: This is a planning estimate. Your actual Nebraska taxable income may differ based on your return (Form 1040N and schedules).

Frequently Asked Questions (FAQ)

Does Nebraska have a progressive income tax?

Yes. Nebraska taxes income in brackets. Portions of income are taxed at increasing marginal rates.

What filing statuses are supported?

Single, Married Filing Jointly, and Head of Household are supported. Married Filing Separately will be added in a future update.

Is the standard deduction Nebraska-specific?

Nebraska starts from your federal amounts. This tool uses the federal standard deduction for the gross estimator only.

Can I itemize instead of using the standard deduction?

Yes. Toggle “Itemized” in the estimator and enter your anticipated itemized total to approximate taxable income.

Why is my effective rate lower than my marginal rate?

Because only the top portion of your income is taxed at the highest bracket. Earlier portions are taxed at lower rates.

Will this match my final refund or balance due?

No. Withholding, credits, and other return details affect your final outcome. This is an estimate of tax liability only.

Where can I verify the 2024 brackets?

See the Nebraska Department of Revenue’s official schedule linked above in the Data Source section.


Audit: Complete
Formula (LaTeX) + variables + units
This section shows the formulas used by the calculator engine, plus variable definitions and units.
Formula (extracted LaTeX)
\[','\]
','
Formula (extracted LaTeX)
\[= (sel, ctx=document) => Array.from(ctx.querySelectorAll(sel)); const fmtUSD = new Intl.NumberFormat('en-US', {style:'currency', currency:'USD', maximumFractionDigits:2}); const fmtPct = (v)=> (isFinite(v) ? (v*100).toFixed(2)+'%' : '0.00%'); // Data: 2024 brackets (rates and thresholds) from Nebraska 2024 Tax Calculation Schedule // Note: Values below reflect commonly published 2024 thresholds/rates. // Always verify against the official schedule linked in the Data Source section. const BRACKETS_2024 = { single: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ], mfj: [ { upTo: 6730, rate: 0.0246, lower: 0 }, { upTo: 41190, rate: 0.0351, lower: 6730 }, { upTo: 66380, rate: 0.0501, lower: 41190 }, { upTo: Infinity, rate: 0.0664, lower: 66380 } ], // For 2024, many references align HOH thresholds closely with Single. Verify against the schedule for filing. hoh: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ] }; // Standard deduction (federal) 2024 for estimator convenience const STD_DED_2024 = { single: 14600, mfj: 29200, hoh: 21900 }; // Elements const taxYear = $('#taxYear'); const modeTaxable = $('#mode-taxable'); const modeGross = $('#mode-gross'); const taxableGroup = $('#taxable-group'); const grossPanel = $('#gross-panel'); const taxableIncome = $('#taxableIncome'); const grossIncome = $('#grossIncome'); const preTax = $('#preTax'); const itemizedWrap = $('#itemizedWrap'); const itemizedDeduction = $('#itemizedDeduction'); const stdDeductionWrap = $('#stdDeductionWrap'); const standardDeduction = $('#standardDeduction'); const credits = $('#credits'); const calcBtn = $('#calcBtn'); const resetBtn = $('#resetBtn'); const rTaxable = $('#rTaxable'); const rTax = $('#rTax'); const rMarginal = $('#rMarginal'); const rEffective = $('#rEffective'); const rAfterTax = $('#rAfterTax'); const afterTaxRow = $('#afterTaxRow'); // Filing status const getStatus = () => { const sel =\]
= (sel, ctx=document) => Array.from(ctx.querySelectorAll(sel)); const fmtUSD = new Intl.NumberFormat('en-US', {style:'currency', currency:'USD', maximumFractionDigits:2}); const fmtPct = (v)=> (isFinite(v) ? (v*100).toFixed(2)+'%' : '0.00%'); // Data: 2024 brackets (rates and thresholds) from Nebraska 2024 Tax Calculation Schedule // Note: Values below reflect commonly published 2024 thresholds/rates. // Always verify against the official schedule linked in the Data Source section. const BRACKETS_2024 = { single: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ], mfj: [ { upTo: 6730, rate: 0.0246, lower: 0 }, { upTo: 41190, rate: 0.0351, lower: 6730 }, { upTo: 66380, rate: 0.0501, lower: 41190 }, { upTo: Infinity, rate: 0.0664, lower: 66380 } ], // For 2024, many references align HOH thresholds closely with Single. Verify against the schedule for filing. hoh: [ { upTo: 3370, rate: 0.0246, lower: 0 }, { upTo: 20590, rate: 0.0351, lower: 3370 }, { upTo: 33180, rate: 0.0501, lower: 20590 }, { upTo: Infinity, rate: 0.0664, lower: 33180 } ] }; // Standard deduction (federal) 2024 for estimator convenience const STD_DED_2024 = { single: 14600, mfj: 29200, hoh: 21900 }; // Elements const taxYear = $('#taxYear'); const modeTaxable = $('#mode-taxable'); const modeGross = $('#mode-gross'); const taxableGroup = $('#taxable-group'); const grossPanel = $('#gross-panel'); const taxableIncome = $('#taxableIncome'); const grossIncome = $('#grossIncome'); const preTax = $('#preTax'); const itemizedWrap = $('#itemizedWrap'); const itemizedDeduction = $('#itemizedDeduction'); const stdDeductionWrap = $('#stdDeductionWrap'); const standardDeduction = $('#standardDeduction'); const credits = $('#credits'); const calcBtn = $('#calcBtn'); const resetBtn = $('#resetBtn'); const rTaxable = $('#rTaxable'); const rTax = $('#rTax'); const rMarginal = $('#rMarginal'); const rEffective = $('#rEffective'); const rAfterTax = $('#rAfterTax'); const afterTaxRow = $('#afterTaxRow'); // Filing status const getStatus = () => { const sel =
Formula (extracted LaTeX)
\[('input[name="deductionMode"]').find(r => r.checked); return sel ? sel.value : 'standard'; }; // Tooltips toggle function setupTooltip(containerId, btnSelector='button'){ const tip = $('#'+containerId); const wrap = tip?.parentElement; const btn = wrap?.querySelector(btnSelector); if(!tip || !btn || !wrap) return; const toggle = ()=>{ const expanded = wrap.getAttribute('aria-expanded') === 'true'; wrap.setAttribute('aria-expanded', String(!expanded)); btn.setAttribute('aria-expanded', String(!expanded)); }; btn.addEventListener('click', toggle); btn.addEventListener('keydown', (e)=>{ if(e.key === ' ' || e.key === 'Enter'){ e.preventDefault(); toggle(); } }); } setupTooltip('taxableHelp'); setupTooltip('preTaxHelp'); setupTooltip('creditsHelp'); // Validation helpers function setError(input, msg, errId){ if(!input) return; input.setAttribute('aria-invalid', 'true'); const err = $('#'+errId); if(err){ err.textContent = msg || ''; } } function clearError(input, errId){ if(!input) return; input.setAttribute('aria-invalid', 'false'); const err = $('#'+errId); if(err){ err.textContent = ''; } } // Attach on-blur validation function validateNumber(input, errId, opts = {required:false, min:0}){ const v = input.value.trim(); if(opts.required && v === ''){ setError(input, 'Please enter a value.', errId); return false; } if(v !== ''){ const num = Number(v); if(!isFinite(num)){ setError(input, 'Please enter a valid number.', errId); return false; } if(typeof opts.min === 'number' && num < opts.min){ setError(input, `Value must be ≥ ${opts.min}.`, errId); return false; } } clearError(input, errId); return true; } taxableIncome.addEventListener('blur', ()=> validateNumber(taxableIncome, 'taxableErr', {required: modeTaxable.checked, min:0})); grossIncome.addEventListener('blur', ()=> validateNumber(grossIncome, 'grossErr', {required: modeGross.checked, min:0})); preTax.addEventListener('blur', ()=> validateNumber(preTax, 'preTaxErr', {required:false, min:0})); itemizedDeduction.addEventListener('blur', ()=> validateNumber(itemizedDeduction, 'itemizedErr', {required: getDeductionMode()==='itemized' && modeGross.checked, min:0})); credits.addEventListener('blur', ()=> validateNumber(credits, 'creditsErr', {required:false, min:0})); // Mode switching function syncMode(){ const usingGross = modeGross.checked; if(usingGross){ grossPanel.hidden = false; taxableGroup.hidden = true; // Set required flags programmatically for SR/validation taxableIncome.removeAttribute('aria-required'); grossIncome.setAttribute('aria-required', 'true'); // Deduction UI swap const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } }else{ grossPanel.hidden = true; taxableGroup.hidden = false; taxableIncome.setAttribute('aria-required', 'true'); grossIncome.removeAttribute('aria-required'); } // Reset validation messages on switch ['taxableErr','grossErr','preTaxErr','itemizedErr'].forEach(id=>{ const el = $('#'+id); if(el) el.textContent = ''; }); }\]
('input[name="deductionMode"]').find(r => r.checked); return sel ? sel.value : 'standard'; }; // Tooltips toggle function setupTooltip(containerId, btnSelector='button'){ const tip = $('#'+containerId); const wrap = tip?.parentElement; const btn = wrap?.querySelector(btnSelector); if(!tip || !btn || !wrap) return; const toggle = ()=>{ const expanded = wrap.getAttribute('aria-expanded') === 'true'; wrap.setAttribute('aria-expanded', String(!expanded)); btn.setAttribute('aria-expanded', String(!expanded)); }; btn.addEventListener('click', toggle); btn.addEventListener('keydown', (e)=>{ if(e.key === ' ' || e.key === 'Enter'){ e.preventDefault(); toggle(); } }); } setupTooltip('taxableHelp'); setupTooltip('preTaxHelp'); setupTooltip('creditsHelp'); // Validation helpers function setError(input, msg, errId){ if(!input) return; input.setAttribute('aria-invalid', 'true'); const err = $('#'+errId); if(err){ err.textContent = msg || ''; } } function clearError(input, errId){ if(!input) return; input.setAttribute('aria-invalid', 'false'); const err = $('#'+errId); if(err){ err.textContent = ''; } } // Attach on-blur validation function validateNumber(input, errId, opts = {required:false, min:0}){ const v = input.value.trim(); if(opts.required && v === ''){ setError(input, 'Please enter a value.', errId); return false; } if(v !== ''){ const num = Number(v); if(!isFinite(num)){ setError(input, 'Please enter a valid number.', errId); return false; } if(typeof opts.min === 'number' && num < opts.min){ setError(input, `Value must be ≥ ${opts.min}.`, errId); return false; } } clearError(input, errId); return true; } taxableIncome.addEventListener('blur', ()=> validateNumber(taxableIncome, 'taxableErr', {required: modeTaxable.checked, min:0})); grossIncome.addEventListener('blur', ()=> validateNumber(grossIncome, 'grossErr', {required: modeGross.checked, min:0})); preTax.addEventListener('blur', ()=> validateNumber(preTax, 'preTaxErr', {required:false, min:0})); itemizedDeduction.addEventListener('blur', ()=> validateNumber(itemizedDeduction, 'itemizedErr', {required: getDeductionMode()==='itemized' && modeGross.checked, min:0})); credits.addEventListener('blur', ()=> validateNumber(credits, 'creditsErr', {required:false, min:0})); // Mode switching function syncMode(){ const usingGross = modeGross.checked; if(usingGross){ grossPanel.hidden = false; taxableGroup.hidden = true; // Set required flags programmatically for SR/validation taxableIncome.removeAttribute('aria-required'); grossIncome.setAttribute('aria-required', 'true'); // Deduction UI swap const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } }else{ grossPanel.hidden = true; taxableGroup.hidden = false; taxableIncome.setAttribute('aria-required', 'true'); grossIncome.removeAttribute('aria-required'); } // Reset validation messages on switch ['taxableErr','grossErr','preTaxErr','itemizedErr'].forEach(id=>{ const el = $('#'+id); if(el) el.textContent = ''; }); }
Formula (extracted LaTeX)
\[('input[name="deductionMode"]').forEach(r => r.addEventListener('change', ()=>{ if(!modeGross.checked) return; const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } })); // Standard deduction calc (for estimator only) function computeStandardDeduction(){ const year = taxYear.value; const fs = getStatus(); let sd = 0; if(year === '2024'){ sd = STD_DED_2024[fs] ?? 0; } standardDeduction.value = sd.toFixed(2); } taxYear.addEventListener('change', computeStandardDeduction);\]
('input[name="deductionMode"]').forEach(r => r.addEventListener('change', ()=>{ if(!modeGross.checked) return; const dm = getDeductionMode(); if(dm === 'standard'){ itemizedWrap.hidden = true; stdDeductionWrap.hidden = false; }else{ itemizedWrap.hidden = false; stdDeductionWrap.hidden = true; } })); // Standard deduction calc (for estimator only) function computeStandardDeduction(){ const year = taxYear.value; const fs = getStatus(); let sd = 0; if(year === '2024'){ sd = STD_DED_2024[fs] ?? 0; } standardDeduction.value = sd.toFixed(2); } taxYear.addEventListener('change', computeStandardDeduction);
Formula (extracted text)
For a given filing status with bracket set B = { (r_i, L_i, U_i) }, where r_i is the marginal rate, L_i and U_i are the lower and upper bounds, Nebraska tax T on taxable income x is: \( T(x) \;=\; \max\!\Bigg(0, \sum_i r_i \cdot \max\big(0,\; \min(x,\; U_i) - L_i\big) \Bigg) \;-\; C \) with credits C capped so that T(x) ≥ 0. If you estimate taxable income from gross: \( \text{TaxableIncome} \;=\; \max\big(0,\; \text{Gross} - \text{PreTax} - \text{Deduction}\big) \) Effective rate: \( \text{Effective} \;=\; \begin{cases} \dfrac{T(x)}{x} & x \gt 0\\ 0 & x = 0 \end{cases} \)
Variables and units
  • T = property tax (annual or monthly depending on input) (currency)
Sources (authoritative):
Changelog
Version: 0.1.0-draft
Last code update: 2026-01-19
0.1.0-draft · 2026-01-19
  • Initial audit spec draft generated from HTML extraction (review required).
  • Verify formulas match the calculator engine and convert any text-only formulas to LaTeX.
  • Confirm sources are authoritative and relevant to the calculator methodology.
Verified by Ugo Candido on 2026-01-19
Profile · LinkedIn
, ', svg: { fontCache: 'none' } }; ]], displayMath: [['\\[','\\]']] }, svg: { fontCache: 'global' } };, svg: { fontCache: 'none' } };