Gross is a calculator, not a database. Every number you type — your salary, your ZIP, your target take-home — is used to do math right there in your browser and is never sent anywhere. We have no server that could receive it. There is nothing to breach, sell, or subpoena.
The site is a static bundle served from a CDN. The tax engine, the rate tables, and the ZIP lookup all ship to your browser and run locally. When you tap “Show me the damage,” no request goes out with your salary — the calculation happens on your phone or laptop, full stop.
To learn which features get used and which channels send visitors, we count anonymous events with Umami and Cloudflare Web Analytics. Both are privacy-first and cookieless. They record that something happened — not what you earn or where you live beyond your state.
Here is the complete list of events we fire and the only properties attached to them. This is the whole list — there is no hidden payload:
| Event | When |
|---|---|
| calc_completed | You viewed a result. |
| card_saved | You downloaded the share-card image. |
| card_shared | You shared the card (native share, clipboard, or link). |
| reverse_used | You used the reverse solver (target take-home → gross). |
| picker_shown | A ZIP spanned multiple tax areas and we showed a picker. |
| picker_answered | You chose your city/municipality from that picker. |
| sdit_confirmed | You saw the Ohio school-district-tax notice. |
The only properties any event may carry:
What is never in any event, property, or URL: your salary, your ZIP code, your target take-home, or any place more specific than your state. This is a hard rule enforced by a check that fails our build if violated.
This is a beta tool and not tax advice. If something here is unclear, the code is the source of truth — the event list above is generated directly from it.