{
  "schemaVersion": 1,
  "slug": "tax-bracket-calculator",
  "category": "finance",
  "kind": "implementation",
  "independentValidation": false,
  "implementationHash": "234fb3e9a2b6fe3eb71e598df7ef2975399511ea8d80b9d8addeddc4dc8447d8",
  "provenance": "Generated from the calculation contract used by the published page. Publication is not external validation.",
  "sourceFiles": [
    "data/calculators/tax-bracket-calculator.json",
    "src/engine.js"
  ],
  "runtimeSource": "/sources/engine.txt",
  "runtimeHash": "5c888d8898afbdee36267bb9977829e1e2ac568f6677c8ee87469c139864645c",
  "scope": "The compute function records implemented equations, constants, lookup tables and custom rules. Inputs record defaults and allowed values; outputs record precision and units. Defaults are examples, not recommendations. General background references are not evidence for this specific algorithm.",
  "publishedFormula": {
    "formula": "T = max(I − 16100, 0); Tax = Σ rᵢ × max(0, min(T, Uᵢ) − Uᵢ₋₁)",
    "vars": [
      [
        "I",
        "Gross annual income"
      ],
      [
        "T",
        "Taxable income"
      ],
      [
        "Uᵢ",
        "Upper limit of bracket i"
      ],
      [
        "rᵢ",
        "Tax rate of bracket i"
      ],
      [
        "Tax",
        "Total income tax"
      ]
    ],
    "note": "2026 US federal single filer model: standard deduction $16,100; taxable-income bracket ceilings $12,400/10%, $50,400/12%, $105,700/22%, $201,775/24%, $256,225/32%, $640,600/35%, above 37%. Excludes credits, payroll and state taxes."
  },
  "externalEvidence": {
    "reviewedAt": "2026-09-28",
    "sources": [
      {
        "name": "IRS — 2026 federal income tax brackets and standard deduction",
        "url": "https://www.irs.gov/newsroom/irs-releases-tax-inflation-adjustments-for-tax-year-2026-including-amendments-from-the-one-big-beautiful-bill"
      }
    ]
  },
  "contract": {
    "compute": "const STD = 16100; const brackets = [[12400,0.10],[50400,0.12],[105700,0.22],[201775,0.24],[256225,0.32],[640600,0.35],[Infinity,0.37]]; const taxable = Math.max(income - STD, 0); let tax = 0, lower = 0, marginal = 0.10; for (const [upper, ratePct] of brackets) { const slice = Math.min(taxable, upper) - lower; if (slice > 0) { tax += slice*ratePct; marginal = ratePct; } lower = upper; if (taxable <= upper) break; } return { taxableIncome: taxable, totalTax: tax, effectiveRate: income>0 ? tax/income*100 : 0, marginalRate: Math.round(marginal*100), takeHome: income-tax };",
    "inputs": [
      {
        "name": "income",
        "type": "number",
        "default": 80000,
        "min": 0,
        "max": 100000000,
        "step": 1000,
        "requiredValue": true
      }
    ],
    "outputs": [
      {
        "name": "totalTax",
        "precision": 2,
        "unit": "$",
        "trimTrailingZeros": true
      },
      {
        "name": "effectiveRate",
        "precision": 2,
        "unit": "%",
        "trimTrailingZeros": true
      },
      {
        "name": "marginalRate",
        "precision": 0,
        "unit": "%",
        "trimTrailingZeros": true
      },
      {
        "name": "taxableIncome",
        "precision": 2,
        "unit": "$",
        "trimTrailingZeros": true
      },
      {
        "name": "takeHome",
        "precision": 2,
        "unit": "$",
        "trimTrailingZeros": true
      }
    ],
    "interpret": null
  }
}
