How we test the calculators
Last updated
Can I trust these numbers?
Use them to plan, and check anything that matters against the official form or a professional. Here is what stands behind them:
- Every rate, bracket and threshold comes from a primary source, and the data files link to it.
- 322 automated tests in 34 files run on every change, and 240 of them check the tax rules directly. A change that fails any test cannot go live.
- 27 of those tests reproduce worked examples and printed amounts from IRS and state instructions.
- State rates and deductions are compared with an independent open-source tax model.
- Every correction is dated and listed publicly, with its source.
What this does not cover: rules we do not model (each calculator lists them, and so does our methodology), and your own situation. TaxWren is an independent site, not a tax firm, and no tax professional reviews the results. The tests prove that the code does what the official documents say; they cannot prove we read every document correctly, which is why the cross-check and your error reports matter.
Everything on this page is generated from the site's code each time it is built, so the counts below are the real ones.
The automated tests, by area
A table of cases counts one test per row. Tests that repeat automatically for every tax year or every post count once here, so the test runner reports a higher number.
Calculators
The tax rules behind each calculator.
Federal income tax, self-employment tax, QBI, child tax credit, overtime and senior deductions: what the 36 tests check
- bracket tax matches the fixed amounts printed in Rev. Proc. 2025-32: single at 105700
- bracket tax matches the fixed amounts printed in Rev. Proc. 2025-32: single at 640600
- bracket tax matches the fixed amounts printed in Rev. Proc. 2025-32: mfj at 403550
- bracket tax matches the fixed amounts printed in Rev. Proc. 2025-32: mfj at 768700
- bracket tax matches the fixed amounts printed in Rev. Proc. 2025-32: hoh at 201750
- bracket tax matches the fixed amounts printed in Rev. Proc. 2025-32: hoh at 640600
- bracket tax matches the fixed amounts printed in Rev. Proc. 2025-32: is zero for zero income
- self-employment tax: applies 15.3% to 92.35% of profit
- self-employment tax: caps Social Security at the wage base
- self-employment tax: lets W-2 wages use up the wage base first
- self-employment tax: is zero under $400 of net SE earnings
- self-employment tax: adds 0.9% Medicare over the threshold
- QBI deduction: is limited to 20% of taxable income
- QBI deduction: phases out halfway at the middle of the phase-in range
- QBI deduction: falls to the $400 OBBBA minimum (§ 199A(i)) above the phase-in range
- QBI deduction: has no minimum under $1,000 of QBI
- federal income tax: single freelancer with $85k profit (hand-checked)
- federal income tax: refundable child tax credit can produce a refund
- federal income tax: never returns NaN for valid inputs
- 2025 data matches the fixed amounts printed in Rev. Proc. 2024-40: single at 103350
- 2025 data matches the fixed amounts printed in Rev. Proc. 2024-40: single at 626350
- 2025 data matches the fixed amounts printed in Rev. Proc. 2024-40: mfj at 394600
- 2025 data matches the fixed amounts printed in Rev. Proc. 2024-40: hoh at 197300
- 2025 data matches the fixed amounts printed in Rev. Proc. 2024-40: has no QBI minimum deduction before 2026
- 2025 data matches the fixed amounts printed in Rev. Proc. 2024-40: computes a full 2025 return
- overtime deduction (Schedule 1-A Part III, IRS FS-2026-13): counts only the FLSA premium: 10 hours at $20 -> $100 (FS-2026-13 Q16)
- overtime deduction (Schedule 1-A Part III, IRS FS-2026-13): is capped at $12,500, $25,000 joint (FS-2026-13 Q10: $30,000 reported)
- overtime deduction (Schedule 1-A Part III, IRS FS-2026-13): loses $100 per full $1,000 of MAGI over $150,000
- audit 2026-10: CTC loses $50 per $1,000 or fraction of AGI over $400,000 joint (IRC 24(b)): $1,001 over -> $100
- audit 2026-10: ignores fractional children
- audit 2026-10: employer Additional Medicare withholding starts at $200,000 for every status (Topic 560)
- age 65+ deductions (Rev. Proc. 2025-32 4.14(3); Schedule 1-A Part V): single 65+: standard deduction + $2,050 and the $6,000 senior deduction below $75,000 MAGI
- age 65+ deductions (Rev. Proc. 2025-32 4.14(3); Schedule 1-A Part V): married filing jointly, both 65+: $1,650 each and $6,000 each
- age 65+ deductions (Rev. Proc. 2025-32 4.14(3); Schedule 1-A Part V): phases out by 6% of MAGI over $75,000: $100,000 single -> $4,500; gone at $175,000
- age 65+ deductions (Rev. Proc. 2025-32 4.14(3); Schedule 1-A Part V): not before 2025 or after 2028; at most one senior unless filing jointly
- age 65+ deductions (Rev. Proc. 2025-32 4.14(3); Schedule 1-A Part V): 2025 uses $2,000 unmarried
State income tax (brackets, deductions, special rules): what the 60 tests check
- state data: covers 50 states + DC with agency links
- state data: has the nine states without a wage income tax
- state data: has ascending brackets starting at 0
- state income tax (hand-computed from the 2026 tables): Texas: zero
- state income tax (hand-computed from the 2026 tables): Pennsylvania: flat 3.07% of AGI, no deductions
- state income tax (hand-computed from the 2026 tables): Illinois: 4.95% after the $2,925 exemption
- state income tax (hand-computed from the 2026 tables): Illinois: no exemption above $250k
- state income tax (hand-computed from the 2026 tables): North Carolina: 3.99% after the $12,750 standard deduction
- state income tax (hand-computed from the 2026 tables): California: brackets minus the $153 exemption credit
- state income tax (hand-computed from the 2026 tables): Georgia 2026 follows HB 463: 4.99%, $15,000 standard deduction, $5,000 per dependent
- state income tax (hand-computed from the 2026 tables): Georgia 2025 keeps the pre-HB 463 rules
- state income tax (hand-computed from the 2026 tables): never negative or NaN
- helpers: top rates
- helpers: lists NY tax benefit recapture as a simplification
- 2026 law changes (sourced overrides, hand-computed): Arkansas: net income up to $94,700 uses the low-income table (HB 1001 of 2026)
- 2026 law changes (sourced overrides, hand-computed): Utah: 4.45% (SB 60) less the taxpayer credit: 6% x $16,100 = $966, phased out by 1.3% over $18,213 (TC-40)
- 2026 law changes (sourced overrides, hand-computed): West Virginia: SB 392 brackets after the $2,000 exemption
- 2026 law changes (sourced overrides, hand-computed): South Carolina: 1.99% to $30,000, 5.21% above, after the $15,000 deduction (H.4216)
- 2026 law changes (sourced overrides, hand-computed): Ohio 2026: $332 plus 2.75% above $26,050
- 2026 law changes (sourced overrides, hand-computed): Ohio 2025 matches the IT 1040 booklet example ($68,050 -> $1,497)
- 2026 law changes (sourced overrides, hand-computed): Arizona and Hawaii 2026 standard deductions
- federal income tax deduction (AL, MO, OR): Alabama deducts federal tax in full (Form 40 worksheet)
- federal income tax deduction (AL, MO, OR): Missouri deducts 15% of federal tax at $50k-$100k AGI
- federal income tax deduction (AL, MO, OR): Missouri allows nothing above $125,000 AGI
- federal income tax deduction (AL, MO, OR): Oregon caps the subtraction at $8,750 in 2026
- federal income tax deduction (AL, MO, OR): Oregon phases the cap out by federal AGI ($145,000+ single: none)
- federal income tax deduction (AL, MO, OR): states without the rule ignore federal tax
- head of household state schedules: New York HoH uses its own brackets (wider than single)
- head of household state schedules: states without a HoH schedule fall back to single
- head of household standard deductions: federally tied states use the federal HoH deduction ($24,150 in 2026)
- head of household standard deductions: South Carolina HoH deduction is $22,500 (H.4216)
- head of household standard deductions: California HoH deduction is $11,412 (FTB Form 540)
- Arkansas two tables (HB 1001, 2026): net income up to $94,700 uses the low-income table
- Arkansas two tables (HB 1001, 2026): above $94,700 uses 2% / 3.7% less the bracket adjustment ($290 falling $10 per $100)
- Arkansas two tables (HB 1001, 2026): the two tables meet almost exactly at the line
- Maine matches the fixed amounts in the MRS rate schedules (audit 2026-10): 2026 single at the top bracket threshold
- Maine matches the fixed amounts in the MRS rate schedules (audit 2026-10): 2026 mfj at the top bracket threshold
- Maine matches the fixed amounts in the MRS rate schedules (audit 2026-10): 2026 hoh at the top bracket threshold
- Maine matches the fixed amounts in the MRS rate schedules (audit 2026-10): 2026 adds the 2% surcharge over $1,000,000 of taxable income (single)
- Maine matches the fixed amounts in the MRS rate schedules (audit 2026-10): 2025 single at the top bracket threshold
- Maine matches the fixed amounts in the MRS rate schedules (audit 2026-10): 2025 mfj at the top bracket threshold
- Maine matches the fixed amounts in the MRS rate schedules (audit 2026-10): 2025 hoh at the top bracket threshold
- Maine matches the fixed amounts in the MRS rate schedules (audit 2026-10): rounds fractional dependents down
- Connecticut (CT-1040 instructions, Tables A-E): single $75,000: no exemption, Table B $3,375 + $100 phase-out add-back, no credit = $3,475
- Connecticut (CT-1040 instructions, Tables A-E): Table A: exemption falls $1,000 per $1,000 (or part) of AGI over $30,000 single
- Connecticut (CT-1040 instructions, Tables A-E): Table E: personal credit 15% at $30,000 single
- Connecticut (CT-1040 instructions, Tables A-E): Table D recapture: single $210,000 -> $430; MFJ $1,100,000 -> $6,800
- Wisconsin sliding-scale standard deduction (2025 Form 1 table): matches table rows
- Alabama standard deduction chart (2025 Form 40, page 9): full deduction up to $25,999
- Alabama standard deduction chart (2025 Form 40, page 9): steps down per $500
- Alabama standard deduction chart (2025 Form 40, page 9): minimum from $35,500
- Maine phase-outs (2025 Form 1040ME worksheets): standard deduction: single $130,000 keeps 60% ((130,000 - 100,000) / 75,000 = 0.4 removed)
- Maine phase-outs (2025 Form 1040ME worksheets): standard deduction gone at $175,000 single; exemption cut above $333,450
- Utah taxpayer tax credit (2025 Form TC-40, lines 10-22): single $50,000: 4.5% x 50,000 = 2,250, credit 6% x 15,750 = 945 less 1.3% x (50,000 - 18,213) = 413.23
- Utah taxpayer tax credit (2025 Form TC-40, lines 10-22): credit is gone at higher income; dependents add $2,111 each to the base
- South Carolina 2026 SCIAD phase-out (H.4216, Section 3): single $75,000 keeps 15,000 x (1 - 35,000 / 55,000)
- South Carolina 2026 SCIAD phase-out (H.4216, Section 3): full deduction up to $40,000 single; none from $95,000
- Maryland exemption chart 10A and standard deduction (2025 Resident Booklet): single: $3,200 up to $100,000, then $1,600, $800, $0
- Maryland exemption chart 10A and standard deduction (2025 Resident Booklet): joint with two dependents at $180,000: 4 exemptions x $800
- Maryland exemption chart 10A and standard deduction (2025 Resident Booklet): head of household standard deduction is $6,700
City income tax (New York City, Yonkers): what the 4 tests check
- NYC and Yonkers (IT-201-I 2025): lists New York localities only for NY
- NYC and Yonkers (IT-201-I 2025): NYC schedule matches the fixed amounts in the instructions
- NYC and Yonkers (IT-201-I 2025): Yonkers is 16.75% of New York State tax
- NYC and Yonkers (IT-201-I 2025): flows into both calculators
Take-home pay and state payroll taxes: what the 9 tests check
- take home pay: single, $80,000, Texas (hand-checked)
- take home pay: 401(k) lowers income tax but not FICA
- take home pay: Social Security stops at the wage base, extra Medicare above $200k
- take home pay: California adds SDI at 1.3%
- take home pay: per-period pay
- take home pay: never NaN
- state payroll taxes (audit 2026-10): MA PFML stops at the Social Security wage base (458 CMR 2.05(1)(c)): 0.46% x $184,500
- state payroll taxes (audit 2026-10): CA SDI is 1.2% for 2025 (EDD), 1.3% for 2026, on all wages
- state payroll taxes (audit 2026-10): Maine uses its own $15,700 standard deduction (MRS 2026 rate schedule)
Hourly to salary: what the 9 tests check
- hourly conversions: uses 2,080 hours a year (40 x 52)
- hourly conversions: $25 an hour is $52,000 a year, $4,333.33 a month, $2,000 every two weeks, $1,000 a week, $200 a day
- hourly conversions: part time: $20 an hour at 20 hours a week is $20,800 a year
- hourly conversions: $60,000 a year is $28.85 an hour
- hourly conversions: round trips
- hourly conversions: zero hours does not divide by zero
- hourly conversions: neighbours skip the value itself
- hourly amounts data: lists are sorted and unique
- hourly amounts data: indexed amounts are built
Minimum wage figures: what the 4 tests check
- state minimum wage data (US DOL): covers every state and DC
- state minimum wage data (US DOL): matches the DOL table
- state minimum wage data (US DOL): is sourced
- state minimum wage data (US DOL): compares a rate with every state
Income tax calculator (federal plus state, refund or amount owed): what the 8 tests check
- income tax estimate: W-2 $80,000 single in Texas: federal $8,770, no state
- income tax estimate: refund when withholding exceeds tax, balance due otherwise
- income tax estimate: other income is taxed at ordinary rates
- income tax estimate: self-employment income adds SE tax
- income tax estimate: bracket breakdown sums to the bracket tax
- income tax estimate: includes NYC tax for NYC residents
- Additional Medicare withholding (audit 2026-10): credits the 0.9% employers withhold over $200,000 (Form 1040 line 25c, Topic 560)
- Additional Medicare withholding (audit 2026-10): withholds over $200,000 even when the joint threshold ($250,000) is not reached
Tax refund: what the 6 tests check
- refund tax year: January to April: the return being filed (last year)
- refund tax year: May to December: this year, estimated ahead
- refund tax year: never a year that is not published
- refund tax year: filing deadline comes from the calendar data
- refund from W-2 withholding: refund = federal withholding minus the tax on the return
- refund from W-2 withholding: refundable child tax credit can produce a refund with no withholding
Estimated tax and 1099 quarterly payments: what the 10 tests check
- estimated tax safe harbor (Form 1040-ES): matches the 1099 calculator for this year's federal tax
- estimated tax safe harbor (Form 1040-ES): uses 100% of last year's tax when it is smaller than 90% of this year's
- estimated tax safe harbor (Form 1040-ES): uses 110% when last year's AGI was over the threshold
- estimated tax safe harbor (Form 1040-ES): uses 90% of this year's tax when last year is unknown or larger
- estimated tax safe harbor (Form 1040-ES): withholding counts toward the safe amount
- estimated tax safe harbor (Form 1040-ES): no estimated tax when you will owe under $1,000 or had no liability last year
- estimated tax safe harbor (Form 1040-ES): payments already made reduce what is still needed
- audit 2026-10: counts Additional Medicare withholding as withholding (Form 1040-ES worksheet line 13)
- audit 2026-10: 1099 quarterly payments exclude the tax already withheld from W-2 wages
- audit 2026-10: 1099 quarterly (Form 1040-ES) is federal only; state estimated tax is separate
Self-employment tax: what the 4 tests check
- self-employment tax (Schedule SE): $50,000 profit: 92.35% x 15.3%
- self-employment tax (Schedule SE): no SE tax when net earnings are under $400
- self-employment tax (Schedule SE): W-2 wages use up the Social Security wage base first
- self-employment tax (Schedule SE): Additional Medicare tax on SE earnings above the threshold
Capital gains and dividends: what the 12 tests check
- capital gains (2026 thresholds: 0% to $49,450, 15% to $545,500 single): long-term gain fully in the 0% band
- capital gains (2026 thresholds: 0% to $49,450, 15% to $545,500 single): gain straddling the 0%/15% line
- capital gains (2026 thresholds: 0% to $49,450, 15% to $545,500 single): 20% above $545,500 and the 3.8% NIIT above $200,000
- capital gains (2026 thresholds: 0% to $49,450, 15% to $545,500 single): short-term gains are ordinary income
- capital gains (2026 thresholds: 0% to $49,450, 15% to $545,500 single): state tax is the extra state tax the gain causes (PA flat 3.07%)
- capital gains (2026 thresholds: 0% to $49,450, 15% to $545,500 single): worksheet with no ordinary income
- main home exclusion (IRS Topic 701): excludes up to $250,000 single
- main home exclusion (IRS Topic 701): excludes up to $500,000 married jointly
- dividends (IRS Topic 404, Form 1099-DIV): qualified dividends are taxed like long-term gains
- dividends (IRS Topic 404, Form 1099-DIV): non-qualified dividends are ordinary income
- dividends (IRS Topic 404, Form 1099-DIV): qualified cannot exceed total dividends; dividends count for NIIT
- state federal-tax deduction on gains (audit 2026-10): Alabama deducts the federal tax the gain adds: 5% x (20,000 - 3,000) = 850
Bonus tax: what the 7 tests check
- bonus tax (IRS Pub. 15 supplemental wages): withholds a flat 22% federal plus FICA
- bonus tax (IRS Pub. 15 supplemental wages): real federal cost uses the marginal bracket (22% at $80k)
- bonus tax (IRS Pub. 15 supplemental wages): low earner: 22% withheld but less owed -> refund at tax time
- bonus tax (IRS Pub. 15 supplemental wages): 37% on supplemental wages above $1M
- bonus tax (IRS Pub. 15 supplemental wages): no Social Security once salary is above the wage base
- bonus tax (IRS Pub. 15 supplemental wages): state tax on the bonus (California)
- bonus labels (audit 2026-10): names the higher rate once supplemental wages pass $1 million (Pub. 15)
No tax on overtime: what the 8 tests check
- overtime tax: deducts only the premium and saves it at the 12% bracket
- overtime tax: double time pays more but qualifies the same premium (FS-2026-13 Q16)
- overtime tax: caps and phases out
- overtime tax: Social Security and Medicare still apply to overtime
- overtime tax: is zero outside the years the law covers
- income tax and take-home use the overtime deduction: lowers federal income tax only
- income tax and take-home use the overtime deduction: cannot deduct more overtime than wages
- overtime inputs (audit 2026-10): falls back to time-and-a-half when the multiplier is missing
Required minimum distributions (RMD): what the 8 tests check
- Uniform Lifetime Table (IRS Pub. 590-B, Table III): has every age from 72 to 120
- Uniform Lifetime Table (IRS Pub. 590-B, Table III): divisors fall with age
- Uniform Lifetime Table (IRS Pub. 590-B, Table III): matches printed values
- Uniform Lifetime Table (IRS Pub. 590-B, Table III): is sourced
- required minimum distribution: Pub. 590-B example: $100,000 at age 75 -> $4,065 (100,000 / 24.6)
- required minimum distribution: nothing required before the start age
- required minimum distribution: flags the first RMD year
- required minimum distribution: projection withdraws each RMD and grows the rest
Roth conversions (tax cost, bracket room, break-even): what the 17 tests check
- bracket room (Rev. Proc. 2025-32 single brackets): taxable $33,900 is in the 12% bracket with $16,500 left before 22%
- bracket room (Rev. Proc. 2025-32 single brackets): income exactly on a threshold is still in the lower bracket
- bracket room (Rev. Proc. 2025-32 single brackets): zero taxable income has the whole 10% bracket ahead
- bracket room (Rev. Proc. 2025-32 single brackets): the top bracket has no ceiling
- conversion cost: $20,000 on $50,000 single in Texas: federal $3,820 -> $6,570, so $2,750
- conversion cost: adds state tax in a state with an income tax
- conversion cost: age 65+: the senior deduction falls 6% of MAGI over $75,000 ($6,000 -> $5,100)
- conversion cost: bracket room accounts for the senior deduction phase-out
- conversion cost: flags when the conversion lifts MAGI over the NIIT threshold
- conversion cost: no conversion costs nothing
- conversion up to and fill bracket table: with no other income the standard deduction and the 10% bracket take $28,500
- conversion up to and fill bracket table: fills each bracket from where income already is
- roth vs traditional (illustration): breaks even when the future rate equals the rate paid now
- roth vs traditional (illustration): Roth ahead by growth x (future tax - tax now) when the future rate is higher
- roth vs traditional (illustration): traditional ahead when the future rate is lower
- Roth rules data (IRS Pubs 590-A and 590-B): is sourced
- Roth rules data (IRS Pubs 590-A and 590-B): matches the publications
Sales tax: what the 5 tests check
- sales tax: adds tax to a price
- sales tax: backs tax out of a total
- sales tax: zero-rate states
- sales tax: data: California state rate 7.25% includes the statewide 1.25% local add-on
- sales tax: combined = state + average local
Substantial presence test (tax residency): what the 8 tests check
- substantial presence test (IRS): counts all current days, 1/3 of last year and 1/6 of the year before
- substantial presence test (IRS): needs at least 31 days in the current year
- substantial presence test (IRS): 183 weighted days with 31+ this year = resident; closer connection possible under 183 this year
- substantial presence test (IRS): green card holders are residents
- exempt individuals: F-1 students do not count days in their first 5 calendar years
- exempt individuals: in the 6th calendar year an F-1 student counts days and becomes a resident
- exempt individuals: J-1 researchers are exempt for 2 calendar years (not exempt if exempt in 2 of the prior 6)
- exempt individuals: H-1B and other visas have no exempt days and no FICA exemption
Tax treaties (IRS treaty tables import): what the 3 tests check
- treaty table import (IRS Table 2): has the main student countries with sane rows
- treaty table import (IRS Table 2): every footnote reference resolves and rows are complete
- treaty table import (IRS Table 2): slugs are unique
Likely ranges when details are left blank: what the 6 tests check
- result range scenarios: offers 401(k), child and the highest local tax when those inputs are empty
- result range scenarios: each scenario equals a real run of the calculator
- result range scenarios: drops scenarios for inputs already given, and local tax in states without modelled localities
- result range scenarios: works for the income tax calculator
- 1099 and estimated tax ranges: 1099 offers a SEP/Solo 401(k) scenario on profit and the child credit
- 1099 and estimated tax ranges: estimated tax: one child lowers the quarterly payment
Tax brackets (marginal rate, distance to the next bracket): what the 13 tests check
- next bracket gap (Rev. Proc. 2025-32 thresholds): measures the room left in the current bracket
- next bracket gap (Rev. Proc. 2025-32 thresholds): treats income equal to a threshold as still in the lower bracket
- next bracket gap (Rev. Proc. 2025-32 thresholds): starts at the first threshold for zero income
- next bracket gap (Rev. Proc. 2025-32 thresholds): is null in the top bracket
- tax bracket result: taxable income: matches the fixed amount printed in Rev. Proc. 2025-32 at a threshold
- tax bracket result: taxable income: breakdown sums to the tax and the rates
- tax bracket result: gross income: subtracts the standard deduction
- tax bracket result: gross income: adds the age 65 amount and the senior deduction
- tax bracket result: ignores seniors for taxable income
- tax bracket result: uses the selected year
- tax bracket result: adds the state marginal rate when a state is chosen
- tax bracket result: omits state for federal only
- bracket table: has open-ended top bracket
US wage percentiles: what the 3 tests check
- US wage percentiles (BLS OEWS): percentiles rise and the annual median matches 2,080 hours
- US wage percentiles (BLS OEWS): places rates in bands
- US wage percentiles (BLS OEWS): is sourced
Tax data
The data files every calculator reads.
| Area | Tests |
|---|---|
| Tax data files: every year complete and the same shape | 15 |
| Provenance guard: every figure has a primary source | 5 |
| Retirement, HSA, SALT and other limits used in guides | 11 |
Tax data files: every year complete and the same shape: what the 15 tests check
- tax year … (for every published tax year): federal file has the same structure as the current year
- tax year … (for every published tax year): federal brackets ascend and start at 0 for every status
- tax year … (for every published tax year): every source is an https URL and every revision cites one
- tax year … (for every published tax year): estimated payment dates fall in the tax year (Q4 in January of the next)
- tax year … (for every published tax year): state file covers every state and DC
- tax year … (for every published tax year): state rules file exists and only names known states
- tax year … (for every published tax year): local income tax file exists and every locality cites a source
- tax year … (for every published tax year): bracket math is continuous at every threshold
- per-year files: … has the files it needs and no unknown ones (for every year of data)
- per-year files: … (drafts too) has the same keys as the current year (for every year of data)
- calendar: the next tax year exists (at least as a draft, with every per-year file) from December 1
- calendar: the current year is published
- calendar: tax calendar exists for the current year with ISO dates in order
- calendar: sales tax data exists for the current year and covers every state
- draft years stay out of the bundle: the data registry holds published years only
Provenance guard: every figure has a primary source: what the 5 tests check
- provenance … (for every year of data): every block maps to a source URL and a source name
- provenance … (for every year of data): state-rules entries, overrides and other income taxes cite a source
- provenance … (for every year of data): compiled files cite their source
- provenance … (for every year of data): every revision has a date, a summary and a source
- provenance … (for every year of data): published: verified, has revisions, no draft status left in any file
Retirement, HSA, SALT and other limits used in guides: what the 11 tests check
- retirement_limits: 2025 matches IRS Notice 2024-80
- retirement_limits: 2026 matches IRS Notice 2025-67
- hsa_limits: 2025 matches Rev. Proc. 2024-25 and Pub. 969
- hsa_limits: 2026 matches Rev. Proc. 2025-19
- Schedule 1-A %i: tips deduction matches Part II
- Schedule 1-A %i: car loan interest deduction matches Part IV
- salt_cap: 2025 matches the Schedule A instructions worksheet
- salt_cap: 2026 matches the 2026 draft Schedule A and P.L. 119-21 section 70120
- %i statutory amounts: Form 1099-K threshold matches IRS FS-2025-08 / Form 1099-K instructions
- %i statutory amounts: Social Security benefit taxation matches Pub. 915
- %i statutory amounts: early distribution tax matches Topic 558 and Pub. 590-B
Site and articles
Pages, posts and publishing rules.
| Area | Tests |
|---|---|
| Blog and news editorial rules | 4 |
| Salary pages | 3 |
| Privacy-friendly analytics | 5 |
| This page: reading the tests and the audit report | 11 |
| Downloadable tax data files | 9 |
| Take-home pay by state study | 10 |
| News feeds and news sitemap | 3 |
| Links between related calculators | 2 |
| Release checks on the source files | 1 |
| Automatic merge of content-only changes | 3 |
Blog and news editorial rules: what the 4 tests check
- blog registry: … follows the editorial rules (for every post)
- blog registry: slugs are unique
- blog registry: category pages cannot collide with posts, and recommend existing tools
- Google News article guidelines (Publisher Center: best practices for article pages): …: headline 10-110 characters, 2-22 words, no date, no leading number (for every post)
Salary pages: what the 3 tests check
- salary pages: indexed amounts are a subset of the generated amounts
- salary pages: amounts are unique and ascending
- salary pages: builds paths and short labels
Privacy-friendly analytics: what the 5 tests check
- consent region: asks EU/EEA, UK and Swiss visitors first
- consent region: does not ask US visitors
- consent region: asks when the country is unknown
- stored consent: reads the categories from the consent cookie
- stored consent: null without a choice or with a broken cookie
This page: reading the tests and the audit report: what the 11 tests check
- test inventory (/how-we-test): parses plain tests, describe blocks and literal tables
- outer (Pub. 1): one
- outer (Pub. 1): single at 100
- outer (Pub. 1): mfj at 1000
- test inventory (/how-we-test): year … is complete (for every published tax year)
- test inventory (/how-we-test): two, with 'quotes'
- test inventory (/how-we-test): finds every test file and at least one test in each
- test inventory (/how-we-test): every official-example definition still finds its tests and a source link
- test inventory (/how-we-test): reads the audit report
- test inventory (/how-we-test): collects source links only under source keys
- every test file has a plain-language area (no file names on /how-we-test): maps each
Downloadable tax data files: what the 9 tests check
- dataset endpoints: build a file for the current year of every yearly dataset
- dataset endpoints: ….csv renders with its header and rows (for every item)
- dataset endpoints: has the same rows, sources and license (for every item)
- dataset endpoints: state income tax file: one row per state with 51 rows
- dataset values (spot checks against the official tables): 2026 federal brackets: single 10% up to $12,400, 37% over $640,600; $16,100 standard deduction (Rev. Proc. 2025-32)
- dataset values (spot checks against the official tables): states without a wage income tax have model none and a 0 top rate
- dataset values (spot checks against the official tables): states whose standard deduction follows the federal one show the federal amount
- dataset values (spot checks against the official tables): take-home rows add up
- dataset values (spot checks against the official tables): quotes fields that contain commas
Take-home pay by state study: what the 10 tests check
- take-home pay study: covers all 50 states and DC for every reference salary
- take-home pay study: a no-income-tax state keeps salary minus federal income tax and FICA only
- take-home pay study: best, worst, gap and median match a direct scan of the engine
- take-home pay study: ranks: 1 = keeps the most, ties share a rank, the worst state ranks last
- take-home pay study: every state with a wage income tax leaves less take-home than the best state
- take-home pay study: the gap grows with salary; biggest and smallest gaps are the extremes
- take-home pay study: cheapest income-tax state and payroll-only states are consistent
- rank by net: uses competition ranking
- rank by net: lists names in prose
- year over year: compares the same states between two years
News feeds and news sitemap: what the 3 tests check
- feeds: RSS has an item per post with a link and a date
- feeds: news sitemap lists only posts from the last two days
- feeds: escapes XML
Links between related calculators: what the 2 tests check
- related calculators map: only points to live calculators, never to itself
- related calculators map: every live calculator links to at least two others
Release checks on the source files: what the test checks
- no merge conflict markers: in source, data and docs
Automatic merge of content-only changes: what the 3 tests check
- content auto-merge guard: allows posts and content logs
- content auto-merge guard: blocks tax data, calculator code, layouts and config
- content auto-merge guard: blocks an empty change list
Cases taken from official examples
Where an IRS or state document prints a worked example or a fixed amount (for instance "tax at the start of this bracket is exactly this much"), we copy it into a test. If our code drifts from the document by more than rounding, the test fails.
| Test cases | Official source | What we check |
|---|---|---|
| single at 105700; single at 640600; mfj at 403550; mfj at 768700; hoh at 201750; hoh at 640600 | IRS Rev. Proc. 2025-32 | Federal tax at the start of the top brackets equals the fixed dollar amount printed in the IRS tax rate tables, for each filing status. |
| single at 103350; single at 626350; mfj at 394600; hoh at 197300 | IRS Rev. Proc. 2024-40 | The previous year's brackets reproduce the fixed amounts in that year's IRS rate tables. |
| counts only the FLSA premium: 10 hours at $20 -> $100 (FS-2026-13 Q16); is capped at $12,500, $25,000 joint (FS-2026-13 Q10: $30,000 reported) | IRS Fact Sheet FS-2026-13, questions and answers on the deduction for qualified overtime compensation | The overtime deduction counts only the half-time premium and stops at the cap, as in the answers of the IRS fact sheet. |
| matches printed values | IRS Publication 590-B (2025), Distributions from Individual Retirement Arrangements | Divisors from the Uniform Lifetime Table equal the printed table at several ages. |
| Pub. 590-B example: $100,000 at age 75 -> $4,065 (100,000 / 24.6) | IRS Publication 590-B (2025), Distributions from Individual Retirement Arrangements | The worked example in Publication 590-B: account balance divided by the table divisor. |
| Ohio 2025 matches the IT 1040 booklet example ($68,050 -> $1,497) | Ohio IT 1040 instructions booklet | The tax computed in the Ohio IT 1040 booklet's worked example. |
| 2026 single at the top bracket threshold; 2026 mfj at the top bracket threshold; 2026 hoh at the top bracket threshold; 2026 adds the 2% surcharge over $1,000,000 of taxable income (single); 2025 single at the top bracket threshold; 2025 mfj at the top bracket threshold; 2025 hoh at the top bracket threshold | Maine Revenue Services rate schedules | Maine tax at the start of the top bracket equals the fixed amount printed in Maine Revenue Services' rate schedules, for each filing status. |
| single $75,000: no exemption, Table B $3,375 + $100 phase-out add-back, no credit = $3,475; Table A: exemption falls $1,000 per $1,000 (or part) of AGI over $30,000 single; Table E: personal credit 15% at $30,000 single; Table D recapture: single $210,000 -> $430; MFJ $1,100,000 -> $6,800 | Connecticut Form CT-1040 instructions | Connecticut's exemption phase-out, personal credit, phase-out add-back and recapture tables (Tables A to E) and the instructions' worked amounts. |
| NYC schedule matches the fixed amounts in the instructions | NY Form IT-201 instructions (2025), NYC tax rate schedule p.40 | New York City tax at the start of each bracket equals the fixed amount printed in the city rate schedule. |
Cross-check with an independent tax model
A script compares our state income tax rates, bracket thresholds and standard deductions with PolicyEngine US, an open-source model maintained by a separate team. It runs on every proposed change for the current tax year, and every month for every published year. We use it only as a check, never as a source: when the two disagree, we go back to the state's own documents and either fix our data or record why the difference is expected.
There are 4 accepted differences right now, each re-reviewed after a year:
- Iowa: Iowa starts from federal taxable income, so the federal standard deduction applies (state-income.json footnote o). PolicyEngine's ia/.../standard/amount.yaml is the pre-2023 Iowa deduction, kept for history. (reviewed Oct 10, 2026)
- Ohio: PolicyEngine encodes Ohio's fixed $332 on the first $26,050 as a 1.27448% band (26,050 x 1.27448% = $332); we model it as state-rules bracket_base. Same tax. (reviewed Oct 10, 2026)
- California: The compiled table folds the 1% Mental Health Services Tax (over $1,000,000 for every filer) into the joint schedule as 12.3% over $1,000,000 and 13.3% over $1,485,906; PolicyEngine keeps the surtax separate. Same tax. (reviewed Oct 10, 2026)
- Maine: Maine's 2% surcharge on taxable income over $1,000,000 ($1,500,000 joint or head of household) from 2026 is modelled as a 9.15% top bracket; PolicyEngine keeps it separately in me/tax/income/surcharge/rate.yaml (2%). Same tax. Source: MRS 2026 Individual Income Tax Rates. (reviewed Oct 11, 2026)
Every number has a source
A provenance test fails if any block of federal data, any state rule, any override of the imported state table or any correction lacks a link to its source. The tax data used on this site currently cites 88 distinct documents; 80 of them are on government websites (IRS, Social Security Administration, state revenue departments and legislatures). The rest are compiled tables, legal text databases, archived copies of official pages that were unreachable, and a few news and accounting-firm reports.
Other data tests check that every tax year has the same files and structure, that brackets rise and join without gaps, that estimated payment dates fall in the right year and that every state and DC is covered.
Freshness checks
A freshness report flags data that may be out of date: federal figures not verified within a year, a state table compiled from an earlier year, sales tax rates older than the latest published table, a tax calendar running out of deadlines, the next year's data not started in time, and accepted cross-check differences due for review. A test also fails from December 1 if the next tax year's data has not been started. The federal figures for 2026 were last verified on Oct 10, 2026.
Once a month an automated check, limited to official sources, runs the tests, the freshness report and the cross-check, scans IRS and state news for law changes, and proposes sourced corrections. Nothing it finds goes live without passing the same tests.
The October 2026 audit
In October 2026 we reread every calculator against its sources, recomputed cases by hand from the official tables, ran every calculator for every state, filing status and a range of amounts, and read each page's code. Of the 40 rules and behaviours checked, 16 had a problem, and all 16 were fixed. The calculation errors also got regression tests:
- Federal (all): CTC $2,200, refundable $1,700, 15% over $2,500, $50 per $1,000 or fraction over 200k/400k. OK (ceil); fractional children now floored (fixed)
- Income tax: Refund counts Additional Medicare withheld by the employer (0.9% over $200k regardless of status). Fixed ($900 understated refund at $300k single)
- Income tax: "Self-employment tax" row included Additional Medicare; with W-2 only it was in the total but in no row. Fixed (own row)
- Estimated: Additional Medicare withholding counts as withholding. Fixed
- 1099: With W-2 wages, set-aside and quarterly payments included the tax on the wages (already withheld). Fixed ($1,255/quarter too much at $85k 1099 + $60k W-2, TX)
- 1099: "Quarterly payments (Form 1040-ES)" included state and city tax. Fixed (state shown separately)
- 1099: Take-home ignored Social Security and Medicare on W-2 wages. Fixed ($4,590 on $60k wages)
- Overtime: Missing multiplier → NaN; "removes it completely" income assumed the full cap. Fixed
- Capital gains: AL/MO/OR federal tax deduction not applied to the gain. Fixed (AL $20k gain: $850, not $1,000)
- Take-home: MA PFML charged on all wages. Fixed ($531 at $300k)
- Take-home: CA SDI 2025 at 1.1%. Fixed (2025); 2026 OK
- States: ME 2026 standard deduction 8,350 / 16,700 (pre-OBBBA federal, footnote vv). Fixed to 15,700 / 31,400 / 23,550 (~$500 less tax on $75k single)
- States: ME 2026 2% surcharge over $1M ($1.5M joint/HoH), HoH schedule, exact thresholds. Fixed (added)
- States: ME 2025 brackets carried the 2026 thresholds. Fixed
- All forms: ?locality= lost when the page's default state differs from ?state=. Fixed (salary, income, 1099, bonus)
- 1099 page: FAQ hardcoded "January 15, 2027". Fixed (from federal.json)
The report also left 6 questions open, either because the official answer was unclear or because the effect is a disclosed simplification. They stay on our list until the official answer is clear, and any change they lead to appears in the corrections log.
- Disclosed state simplifications with large typical-case impact
- DC standard deduction
- QBI $400 minimum vs the 20%-of-taxable-income limit
- 2025 history small differences
- Additional Medicare withholding assumes one employer
- ME top rate copy
Corrections and error reports
Under every calculator there is a "Report an error" link. It sends us the page and the inputs on screen, and we check the result against the official source. When a figure is wrong we fix it, add a test where one fits, and log the change. The tax law changes page lists 52 dated changes to the tax data so far, each with its source, whether it came from a new law, a new tax year or a correction.
Articles and news
Guides and news posts follow the same rule: figures come from the data files, and news posts must cite the original official source (a test checks this for every post). Every week an editorial review rereads the new posts against their sources and fixes what does not match. Our editorial policy has the details.