What a state takes out of a salary, for the 29 jurisdictions where that is a verified fact rather than a guess — 9 that tax no wages at all, 16 that charge one statutory rate, and California, New Jersey, New York and Virginia on their own published bracket schedules. For the other 22 it answers null and says why.
- state
- The USPS code the answer is for.
- stateName
- The state's full name.
- taxability
- Which of four cases this state is: "none" (taxes no wages), "flat" (one verified statutory rate), "graduated" (a verified bracket schedule, applied in full — "ratePercent" is null because no single rate describes it) or "unmodeled" (brackets Far Better Off has not verified, where there is no answer).
- modeled
- True when tax is a number. False only where taxability is "unmodeled".
- tax
- State income tax on the year's wages, or null where taxability is "unmodeled". Null is not zero.
- taxedWages
- The wages a rate was applied to: wages minus pretaxRetirement (the whole salary in Pennsylvania), minus standardDeduction where one is modelled, minus ficaDeduction in Massachusetts. 0 where the state taxes no wages at all, null where there is no answer.
- standardDeduction
- What this state exempts for this filingStatus before its rate applies, where we have verified it. Null usually means not verified, never verified as zero — but in Pennsylvania it means none exists, and in Utah it means the state grants none and hands the federal deduction back as a credit instead (see "credit"). It is what these wages actually got, not a table row: Illinois disallows its exemption allowance outright over $250,000 ($500,000 filing jointly), so a filer above the limit gets 0 with the label still set.
- standardDeductionLabel
- What the state calls it: "standard deduction", or "personal exemption and standard deduction" in Mississippi, which gives both. Null where none is modelled.
- standardDeductionSource
- Where the deduction figures were verified, when that isn't the same page as the rate (North Carolina's are in the statute, Kentucky's in a DOR announcement). Null otherwise.
- ficaDeduction
- What this state takes off for the Social Security and Medicare tax already paid on these wages — Massachusetts's, and null in every other state, where the answer is that no such deduction exists rather than that nobody checked. M.G.L. c. 62, § 3(B)(a)(3) caps it at $2,000 "attributable to any one taxpayer", so every salary over $26,144 gets exactly $2,000 and a smaller one gets the 7.65% it actually paid. It follows the payroll tax rather than the income tax, so pretaxRetirement does not reduce it, and filingStatus does not double it: the second $2,000 belongs to a second earner, whose pay this endpoint was not given. taxedWages already has it subtracted.
- ficaDeductionLabel
- What the state calls it, or null. Massachusetts: "deduction for the Social Security and Medicare tax you paid".
- ficaDeductionSource
- Where that cap and what it is taken of were verified. Null in every state that has no such deduction.
- filingStatus
- The filing status the answer used. Echoed so a cached response is self-describing.
- effectiveRatePercent
- tax as a percent of gross wages. Lower than ratePercent wherever there is an exempt band.
- ratePercent
- The statutory rate on wage income, or null — null in a graduated state too, where the answer is a table rather than a rate. Read "rateLabel" for how the state states it, and "effectiveRatePercent" for what these wages actually paid.
- marginalRatePercent
- The rate this filer's next dollar of wages meets, as a percent — the number that answers "what does a raise cost me here", which effectiveRatePercent and ratePercent both get wrong. 0 in a state that taxes no wages and 0 under a filing threshold or inside an exempt band, the statutory rate in a flat state, the band this income reaches in a graduated one, and null only where taxability is "unmodeled". It can be higher than ratePercent: Massachusetts adds its 4-point surtax above the threshold, and Utah's tapering credit costs another 1.3 cents a dollar while it lasts, so a Utahn inside that taper meets 5.8% and not the 4.5% the state advertises. Clamping this to the statutory rate would be wrong in both states.
- marginalBracket
- The band marginalRatePercent came from, as { over, ratePercent }, in a state that publishes a schedule. Null in a flat state (ratePercent is the whole answer), in a state that taxes no wages, and under a filing threshold, where no band applies because no tax does.
- brackets
- This state's own schedule for this filingStatus, as [{ over, ratePercent }] from the first dollar — the table "tax" was worked out from, so a caller can reproduce or display it without a second source. Null in a flat state and where the state taxes no wages. The bands are measured on taxable income: taxedWages less exemptBelow, not on gross wages. A schedule alone does not always reproduce "tax" — read "supplementalTax" in New York, "baseTax" in Ohio and "credit" in Utah.
- stateAndLocalMarginalRatePercent
- marginalRatePercent plus localMarginalRatePercent: what one more dollar of wages really costs in sub-federal income tax. Null wherever either half is null — an unmodeled state, or no locality asked for — for the same reason stateAndLocalTax is. The two add honestly because every locality modelled taxes a base that a dollar of wages enters: gross pay in Ohio's cities and Philadelphia, federal AGI in Detroit, and state taxable income in New York City and Indiana's counties.
- exemptBelow
- The slab this state taxes at nothing before its rate starts, after any standardDeduction (Ohio, Mississippi, Idaho). For this filingStatus: Idaho's is $4,811 on a single return and $9,622 on a joint one. Null elsewhere.
- noTaxBelow
- The filing threshold this state charges nothing at all under, for this filingStatus — Virginia's $11,950 ($23,900 filing jointly) and New Jersey's $10,000 ($20,000 jointly or as head of household). Null in every other state. Unlike exemptBelow this is measured on income before any standardDeduction, and clearing it does not subtract it: a dollar over, the whole schedule applies from the bottom.
- belowFilingThreshold
- Whether these taxedWages fall under noTaxBelow, so the state charges nothing. The two states disagree about the boundary itself and this answers for each: Virginia's statute says "less than $11,950", so $11,950 exactly is taxed, while New Jersey's says "$10,000 or less ... pay no tax", so $10,000 exactly is not. False in a state with no threshold, null where the state is unmodeled.
- baseTax
- Flat dollars owed once the exempt band is cleared (Ohio's $332). Null elsewhere.
- surtaxPercent
- Extra percentage points a state charges above a threshold, on top of ratePercent (Massachusetts: 4). Null in every other state.
- surtaxThreshold
- The taxable income above which surtaxPercent applies. Massachusetts indexes it annually and does not vary it by filing status, so a couple filing jointly reaches it at the same income a single filer does. Null elsewhere.
- surtax
- How much of tax came from that top band for these wages — 0 below the threshold, and null in a state that has no surtax. tax already includes it; this is here so ratePercent times taxedWages and our number agree.
- surtaxSource
- Where the surtax rate and its threshold were verified. Null where there is no surtax.
- supplementalTax
- How much of tax came from a state taking back the benefit of its own lower brackets — New York's supplemental tax, and nothing else here. 0 below the income where it starts, and null in a state that has no such rule. tax already includes it; this is here so a consumer applying the bracket schedule and our number agree.
- supplementalTaxLabel
- How the state describes that rule, or null. New York: "New York's supplemental tax, which takes back the lower brackets above $107,650".
- supplementalTaxSource
- Where those steps were verified. Null where the state has no such rule.
- credit
- A credit this state takes off the tax itself, for these wages — Utah's taxpayer tax credit, and nothing else here. It is 6% of the federal standard deduction, less 1.3% of income above a base amount, so it falls to 0 around $92,500 of single income. tax already has it subtracted and is floored at zero, so a low earner's credit can be larger than the tax it wiped out. Null in every other state.
- creditLabel
- What the state calls it, or null. Utah: "taxpayer tax credit".
- creditSource
- Where the credit's percentages and base amounts were verified. Null elsewhere.
- taxesPretaxRetirement
- True where 401(k) contributions are taxed as compensation anyway (Pennsylvania).
- rateLabel
- How the state describes its own rate, in a phrase you can print.
- excludes
- What this figure leaves out in this state — deductions, exemptions, credits, local taxes. Always read it.
- reason
- Present only where taxability is "unmodeled": why there is no number.
- source
- Where this state's figure was verified: { publisher, url, verified?, quote? } on the agency's, legislature's or code's own site. "verified" is an ISO day that citation was last re-opened and found to still say this, and it is absent rather than null where nobody has re-read it — which is not a doubtful rate, only an unrepeated reading. "quote" is the sentence on that page the day was earned on, so you can repeat the check instead of trusting it: fetch the url, strip tags to single spaces, fold curly punctuation to ASCII, and the string is still there. It is absent with no "verified" day, and absent on the two citations that are PDFs, where no substring search can repeat a person's reading. Null only where a rate is confirmed but not yet linked.
- taxYear
- The tax year the rates come from.
- localitiesAvailable
- Every local wage tax Far Better Off models in this state, whether a city, county, township or borough levies it, as { id, name, ratePercent, topRatePercent } — the accepted values of "locality" here, so a client can build the picker without a second call. "ratePercent" is null for a locality that publishes a schedule instead of a rate (New York City's four resident brackets), and "topRatePercent" is its highest rate, so a picker always has one number to show. Empty is "none modelled", never "none exists": Indiana's other 84 counties, many Kentucky and Michigan cities and much of Pennsylvania levy one that is not in this table yet, and "excludes" says so.
- locality
- The locality id the answer used, or null when none was asked for.
- localityName
- What that locality is called ("Philadelphia (I live in the city)"). Null when none was asked for.
- localTax
- Local income tax — city, county, township or borough — on the same year of wages, or null when no locality was asked for. Null is not zero, exactly as it is for the state line.
- localRatePercent
- The locality's rate on wage income, as a percent. Null when none was asked for, and null in New York City, which publishes a schedule rather than a rate — read "localBrackets" and "localMarginalRatePercent" there.
- localMarginalRatePercent
- The rate on the next dollar of local tax, as a percent — the locality's flat rate everywhere but New York City, and the bracket this filer's city taxable income lands in there. Null when no locality was asked for.
- localBrackets
- The locality's own schedule for this filing status, as [{ over, ratePercent }] from the first dollar, where it publishes one — New York City only. Null everywhere else, where there is a single "localRatePercent" instead.
- localTaxableIncome
- What the locality's rate or schedule was applied to, where that is not gross pay: New York City charges its brackets on New York State taxable income and an Indiana county charges its rate on Indiana's, so this is the state's standard deduction or personal exemption already taken off. Null for every locality that taxes gross pay (read "localTax" and "localRatePercent" there) and when none was asked for.
- localTaxLabel
- How the locality states its own charge, in a phrase you can print ("Philadelphia's 3.735% resident Wage Tax"). Null when none was asked for.
- localTaxesPretaxRetirement
- True where the locality taxes 401(k) elective deferrals as compensation anyway — true in Ohio's cities, which tax box 5 Medicare wages, and in Philadelphia, which follows the Pennsylvania rule. False in Michigan's 40, whose base is a federal figure the contribution was never in — the AGI on a Detroit resident's return, W-2 box 1 in every other Michigan city here and on a Detroit commuter's. Null when no locality was asked for.
- localExemptionAmount
- Dollars a year this locality exempts for each personal or dependency exemption, resident and non-resident alike — $600 a head in Detroit, Grand Rapids, Lansing, Flint, Pontiac, East Lansing, Highland Park, Muskegon, Big Rapids, Walker, Hamtramck, Muskegon Heights, Albion and Lapeer, and $700 a head in Ionia, and $750 a head in Battle Creek, Saginaw, Benton Harbor and Springfield, and $1000 a head in Portland. Each is the figure that city prints on its own return rather than one the state sets: the Uniform City Income Tax Ordinance caps the rate and says nothing about the exemption, which is why Battle Creek's is the largest of them. Null where the locality allows none, which is every locality outside Michigan, and null when no locality was asked for. Null here is "the city taxes the first dollar", not "unverified".
- localExemptionsApplied
- The exemption count actually used, which is 0 wherever the locality allows none however many you asked for. Null when no locality was asked for.
- localExcludes
- What the local figure leaves out — a second Ohio municipality's tax net of credit, Philadelphia's income-based refund. Always read it. Null when no locality was asked for.
- localSource
- Where the locality's rate was verified: { publisher, url } on the city's own revenue page. Null when no locality was asked for.
- schoolDistrictsAvailable
- Every school district income tax Far Better Off models in this state, as { id, code, name, ratePercent, base } — the accepted values of "schoolDistrict", so a client can build the second picker without a second call. "code" is the four-digit number box 20 of a W-2 carries, which is the field to match a reader against; "base" is "wages" or "state taxable income", and both appear in Ohio, which is why one rate is two bills. Empty in 50 of the 51 jurisdictions, and that is "none modelled", never "none exists": Pennsylvania's school districts levy an earned income tax of their own, which rides inside the Act 32 rates in "localitiesAvailable" rather than as rows here.
- schoolDistrict
- The school district id the answer used, or null when none was asked for.
- schoolDistrictName
- What that district is called, with its four-digit code ("Westerville City School District (2512)"). Null when none was asked for.
- schoolDistrictCode
- The four-digit code alone, so a client can show it against box 20 of the reader's own W-2 without parsing the name. Null when no district was asked for.
- schoolDistrictTax
- Ohio school district income tax on the same year of wages, or null when no district was asked for. Null is not zero, exactly as it is for the state and local lines. It is charged on where the reader lives, so it is owed on top of localTax, which is charged on where they work — a Westerville resident working in Columbus owes both.
- schoolDistrictRatePercent
- The district's rate on its own base, as a percent. Every district modelled charges one flat rate — none publishes a schedule — so unlike localRatePercent this is never null for a district that was asked for.
- schoolDistrictBase
- Which of the two bases Ohio Revised Code 5748.01(E) lets a district choose this one is on: "wages" for the earned income base, division (E)(2), which is wages with no deduction and no exemption, or "state taxable income" for the traditional base, division (E)(1), which is Form SD 100 line 5 — modified adjusted gross income less the Ohio IT 1040 exemption. It is the field that explains why one rate is two bills: 1% is $750 on the earned income base and $729 on the traditional one for a single filer on $75,000, and $708 filing jointly, because the traditional base takes two of Ohio's exemptions and the earned income base has no filing status at all. Null when no district was asked for.
- schoolDistrictTaxableIncome
- What the district's rate was applied to, where that is not gross pay — the Ohio taxable income a traditional-base district charges. Ohio's $26,050 zero band and its $332 of flat dollars are not in it: they belong to the state's own schedule, which is why $28,400 of wages can owe Ohio nothing and owe a 1% district $260.50. Null for an earned income district, where the answer is "wages", and null when none was asked for.
- schoolDistrictTaxLabel
- How the district states its own charge, in a phrase you can print ("Westerville City School District's 0.75% income tax"). Null when none was asked for.
- schoolDistrictTaxesPretaxRetirement
- False for every district modelled, and it is the one local line in Ohio where that is true: a municipal tax here reaches "qualifying wages" — box 5 Medicare wages, which an elective deferral is still inside — while both school district bases are built on federal adjusted gross income, which it was never in. So on one Ohio payslip a 5% deferral leaves Columbus at $1,875 and takes Westerville from $562.50 to $534.38. Null when no district was asked for.
- schoolDistrictExcludes
- What the district figure leaves out — self-employment earnings on the earned income base, every non-wage dollar of modified adjusted gross income on the traditional one, Ohio's dependency exemptions, and the SD 100's $50 senior citizen credit. Always read it. Null when none was asked for.
- schoolDistrictSource
- Where the district's rate and its base were verified: { publisher, url } on the Ohio Department of Taxation's own employer-withholding list. Null when none was asked for.
- schoolDistrictTaxYear
- The year the district rates are in force for. Ohio's list is dated by the day employers must use it — 1 January — rather than by a tax year, so it is stated separately from taxYear above. Null when no district was asked for.
- stateAndLocalTax
- Every sub-federal income tax line on this salary added up: "tax" plus "localTax" plus "schoolDistrictTax", which is the number a person here actually loses. Null wherever any half asked for is null — an unmodeled state, or no locality and no district asked for — because a sum missing a term is not a total. A term nobody asked for is not missing: with "locality" alone this is tax plus localTax, as it always was, and the district only enters it when a district was named.
- payrollContributions
- What this state withholds from the employee's own wages for a named state programme in a year — disability insurance, paid family and medical leave, and in New Jersey unemployment insurance too. It is not income tax, so no rate above can show it, and it is often the larger deduction: California's SDI takes 1.3% of every dollar earned, $975 a year on $75,000, where the state income tax on the same salary is under 4%. Charged on gross wages, so pretaxRetirement does not reduce it — a 401(k) deferral escapes the income tax and not this. Null where Far Better Off has verified no such contribution, which is not zero: Delaware's Paid Leave and Maryland's FAMLI both belong here and neither rate has been read off its agency's page yet.
- payrollContributionLabel
- The line a pay stub shows, in a phrase you can print ("California SDI", "Washington PFML + WA Cares"). Null where none is modelled.
- payrollContributionDescription
- The same thing in running text, for a sentence rather than a table cell ("State Disability Insurance"). Null where none is modelled.
- payrollContributionRatePercent
- Every programme's employee rate added up, as a percent. Read it with "payrollContributionPrograms": the sum describes a salary under the lowest wage base and no other, because New Jersey's four rates stop at two different ceilings — Unemployment Insurance and workforce development at $44,800 — so above that the real charge is less than this figure states. Null where none is modelled.
- payrollContributionMarginalRatePercent
- The rate the next dollar of wages meets in contributions, as a percent — the figure to add to marginalRatePercent when answering what a raise costs. It is 0 once every wage base is passed (a Rhode Islander over $100,000 pays no more Temporary Disability Insurance however big the raise), the whole rate below the lowest base, and in between it is neither: a New Jerseyan over $44,800 meets 0.42% of the 0.845% the rate above sums, because Unemployment Insurance has stopped charging and disability and family leave have not. Null where none is modelled.
- payrollContributionPrograms
- The programmes behind the total, in the order a pay stub lists them, as [{ name, short, ratePercent, wageBase, chargedWages, amount }]. "wageBase" is null where the programme charges every dollar — California removed SDI's ceiling on 1 January 2024 and WA Cares never had one — and "chargedWages" is what the rate actually met, so a base that has bitten is visible rather than inferred. Null where none is modelled.
- payrollContributionYear
- The calendar year these rates are in force for. They turn over on 1 January, unlike the income tax rates above, which are stated for a tax year. Null where none is modelled.
- payrollContributionExcludes
- What the contribution figure leaves out or assumes, in the state's own terms — an employer that volunteers to pay more of your share, a private plan that withholds instead, a WA Cares exemption, a rate already legislated to move next January. Always read it. Null where none is modelled.
- payrollContributionSource
- Where each rate and wage base was verified: { publisher, url } on the labor or paid-leave agency's own page. Null where none is modelled.
- stateTaxAndContributions
- Everything the state itself takes out of this salary: "tax" plus "payrollContributions". Null wherever either half is null — an unmodeled state, or one with no verified contribution — for the same reason "stateAndLocalTax" is null without a locality: a sum missing a term is not a total. It excludes any locality; add "localTax" for the whole sub-federal bill.