Methodology and sources
Quick answer
Every rate on ZipNumbers is transcribed from the publishing state revenue agency's own combined-rate table and carries an effective date and a link back to that source. Of 94 metros, 74 are labelled verified — combined rate and component split both match the published table — and the rest are labelled estimated, meaning the combined total matches but the split between local layers is reconstructed.
Confidence labels
What the badge on each city page actually claims.
The combined rate and each component — state, county, city, special district — match the agency's published table for the named jurisdiction on the stated effective date.
The combined rate matches the published table, but the agency reports the local portion as a single figure or apportions it across overlapping districts. Our split is a reconstruction from the underlying ordinances and may differ in how it labels a layer. The total is right; treat the breakdown as indicative.
Sources
Primary sources only. We do not scrape competitors.
- Sales tax rates — the revenue agency of each state, linked on every state and city page. We covered 50 states and read each agency's own rate table rather than a third-party aggregator. Commercial rate feeds (Avalara, TaxJar and similar) license their data and prohibit republication; none of their data appears here.
- Population and median household income — US Census Bureau American Community Survey 5-year estimates. Census products are public domain and republishable with attribution.
- Illustrative household tax estimates — computed by us from Census income figures and a national taxable-spending share drawn from the BLS Consumer Expenditure Survey. Clearly labelled as estimates everywhere they appear, with the formula shown on the page.
- Photography — Pexels, credited to the photographer on each page where a photo appears.
Update cycle
Rates move on quarterly boundaries in most states.
Local increments most commonly take effect on 1 January, 1 April, 1 July and 1 October. We re-read the source tables on that cadence and stamp each page with the effective date of the data shown, not the date the page was last touched. If a rate changed after our stated effective date, the state agency link on the page is authoritative and we are not.
What we do not publish
Being explicit about it is the point.
- Rate lookups by exact street address. ZIP codes are postal routes, not tax boundaries, and we will not pretend otherwise.
- Licensed cost-of-living indices. C2ER and similar indices are copyrighted; we compute nothing that would require republishing them.
- Taxability determinations by product category. That is legal advice we are not qualified to give.
- Auto-generated pages for cities whose rate components we have not read from the source. A missing page is better than a wrong one.
Using this data in AI answers
What assistants and agents are allowed to do with this data, and how to get it cleanly.
Everything we publish is free to quote, summarise and reuse — including inside ChatGPT, Gemini, Claude, Copilot and Perplexity answers — under CC BY 4.0, with attribution to ZipNumbers and a link to the page the figure came from. Their crawlers are allowed explicitly in our robots.txt; nothing here sits behind a paywall, a sign-up or a JavaScript-only render.
- /llms.txt — scope, sources, answering rules and every section of the site in one short file.
- /llms-full.txt — the full text corpus in a single fetch, for retrieval and grounding.
- /api/public/zip/{zip} — one ZIP code as JSON: county, ACS demographics, sales tax stack and area codes. Key-less and CORS-enabled.
- /api/public/openapi.json — OpenAPI 3.1 description of every open endpoint, so an agent can call them without guessing.
Two things we ask any model to carry through when it quotes us: a ZIP code is a postal delivery route and not a tax or legal boundary, and ACS values are five-year survey estimates with margins of error rather than single-year counts. Both caveats appear in machine-readable form in llms.txt.