Cookie policy
A cookie policy for
a site with no cookies.
This is the shortest kind of policy to write and the easiest kind to get wrong, because the temptation is to describe a typical website instead of this one. What follows is this one: what is in your browser after you load a page, which today is nothing, and exactly what would have to change for that to stop being true.
The short answer
Nothing is stored in your browser by this site, by us or by anyone else.
- This site sets no cookies of its own, and it writes nothing to local storage, session storage or any in-browser database.
- There is no account and no session, so there is no session cookie. Nothing needs to remember who you are between one page and the next, because nothing about the site depends on knowing.
- Your last calculation is not remembered when you come back. That is a consequence of storing nothing rather than a setting you could change.
- Google Analytics is not loaded on this build, so the two cookies it would set are not present. Section 03 lists them anyway, for the reason given there.
- There is no consent banner, and its absence is deliberate rather than an omission. Section 05 explains why asking would be worse than not asking.
Why you do not have to take our word
The claim is about the code, so it can be verified against the code — and in your own browser in about fifteen seconds.
“We do not use cookies” is the easiest sentence on a policy page to break by accident. Someone adds a preference toggle that remembers a setting, or an embed that carries its own storage, and the sentence is quietly false while nobody rereads the policy. So this one is not maintained by remembering to maintain it.
The site's test suite fails the build if any of
document.cookie, localStorage,
sessionStorage or indexedDB appears anywhere in the
source, with a carve-out for this page and the privacy page, whose prose has to
be able to name them. Adding storage to the site therefore does not produce a
stale policy; it produces a red build until this page is rewritten.
To check it yourself: open your browser's developer tools, find the storage or application panel, and look at cookies and local storage for this domain. Load any calculator, type figures into it, and look again. Both lists should be empty before and after. If what you see disagrees with this page, that is a defect worth reporting on the contact page.
One thing that check will not show, because it is not storage: the figures you type are mirrored into the page's address so a result can be shared. The privacy policy explains the one case where that means your numbers cross the network.
Every cookie, named
None on this build. The two that analytics would write are listed anyway.
Nothing in this table is currently set. Analytics loads only when a measurement ID is configured, and this build has none, so no request to Google is made and no cookie is written. The table is here because the switch exists and documenting it after somebody flips it is the wrong order — when analytics is enabled, these are the two cookies that appear, and this paragraph changes to say so without anybody editing the list.
| Name | Set by | What it is for | How long it lasts |
|---|---|---|---|
_ga | Google Analytics | Used to distinguish users. | 2 years from being set or refreshed |
_ga_<container-id> | Google Analytics | Used to persist session state. | 2 years from being set or refreshed |
The two purposes above are quoted from Google's own documentation rather than
rewritten, because a paraphrase of “used to distinguish users” tends
to end up either vaguer or more reassuring than the original.
<container-id> is a placeholder: the real name ends in the
measurement ID of the property, so it differs per site.
The two-year figure is the default, not a fixed property. A site operator can set the expiry anywhere from immediately to 25 months, which requires Editor access or above on the Analytics property. Browsers then cap it again regardless of what the site asks for: Chrome allows a maximum of 400 days for a visitor who does not return, and Safari 7 days. So the practical lifetime of these cookies is the shortest of the three limits, and two years is the ceiling rather than the expectation.
What is not in this table, and why. There is no
_gid: that cookie belongs to Universal Analytics, which this build
does not load. There is no advertising cookie, because advertising is
not enabled and no publisher ID is configured.
And there is no row for anything we set, because there is nothing we set. A table
padded with cookies a site does not actually use is a common way for these pages
to look thorough while being wrong.
Requests that set nothing, but still leave
A cookie is not the only way a third party learns you were here. The fonts are the honest example.
A page about cookies that stops at cookies is answering a narrower question than the one most readers are asking. What they usually want to know is who finds out they visited — and storage is only one route to that.
The typefaces on this site are served by Google Fonts, from
fonts.googleapis.com and fonts.gstatic.com. Those
requests set no cookie. They do, however, reach Google's servers when you load a
page, and a request carries your IP address and the address of the page
requesting it, whether or not anything is stored afterwards.
So the accurate statement is narrower than “no third party knows you were here”. Nothing is stored in your browser, and no third party can recognise you on your next visit from anything this site left behind — but two font requests do go out to Google on every page load. Self-hosting the fonts would remove even that, and it is the obvious next improvement rather than a decision we are defending.
The privacy policy lists every host the browser contacts on page load, and that list is checked against the component tree by a test, so it cannot silently fall out of date.
Why there is no consent banner
Because there is nothing to consent to, and asking anyway makes real consent requests easier to ignore.
Consent is required for storage that is not strictly necessary to deliver what you asked for. This build has no storage at all, necessary or otherwise, so there is no category of thing left for you to permit or refuse.
We could still show a banner. Plenty of sites in this position do, because a banner looks like diligence and costs nothing to add. The reason not to is that a consent request with no consequence teaches people that these dialogues are noise to be clicked through — which makes the next one, on a site that really is about to set twenty tracking cookies, marginally less likely to be read. A banner here would be a small withdrawal from a shared account.
What happens if that changes. If analytics is switched on, or advertising enabled, or any non-essential cookie introduced, consent gets asked for properly at that point — before the storage starts, not after — and this page is rewritten in the same release rather than in a later one. The editorial policy is where that sequencing rule is written down.
Nothing on this page asks you to agree to anything by continuing to read. The terms of use make the same point about the site as a whole: there is no acceptance step because there is nothing to accept.
Clearing and blocking, which is your browser's job
There is no setting for us to offer you, so the useful thing is to say where the real controls are.
Most sites put a preferences panel here. We have nothing to put in one: a toggle that disables storage the site does not use would be a control with no effect, which is worse than no control at all because it implies the storage exists.
Every browser lets you delete cookies already saved, block new ones, and set per-site rules. Those settings apply to this site the same way they apply to any other, and they sit in the privacy or site-data section of your browser's settings. Clearing everything for this domain will not log you out of anything here, because there is nothing to be logged out of.
A thing worth knowing if you block cookies broadly: nothing on this site breaks. The calculators are JavaScript that computes in the page, they keep no state between visits, and none of them checks for a cookie before running. If you find a feature that stops working with cookies blocked, that is a bug in something we did not intend to depend on storage.
Where the cookie details come from
Two documents, both Google's own, because the cookies in question are theirs.
Nothing in section 03 is our observation. The names, purposes and lifetimes of the Analytics cookies are facts about somebody else's software, so they are taken from that party's own documentation and cited rather than restated as though we had measured them. Each entry records what it is relied on for, and the date it was last checked.
- [GA4] Cookie usage on websites — Google Analytics Help The two cookie names, both stated purposes, the two-year default expiry, the configurable range from immediately to 25 months, the Editor-or-above permission needed to change it, and the browser caps of 400 days in Chrome and 7 days in Safari. Checked 2026-09-19
- How Google uses cookies — Google Privacy & Terms That _ga is the main cookie Google Analytics uses to distinguish one visitor from another, that each _ga cookie is unique to the property and cannot track a user across sites, and that browsers let you delete existing cookies and block future ones. Checked 2026-09-19
A caveat on citing a vendor about its own product: these pages change without notice, and a figure verified today can be quietly different next quarter. The retrieval dates above are what makes that visible rather than invisible. If you find one of these pages now says something different from what is quoted here, this page is the thing that is wrong.
Keeping it true
The easiest page
to leave behind.
Of every page on this site, this is the one most likely to end up describing a version of the software that no longer exists. Cookies arrive as a side effect of something else — an embed, a preference, a tag manager added in a hurry — and nobody remembers that a policy page made a promise about them.
Which is why the central claim here is not maintained by discipline. The build fails if storage is called anywhere in the source, the cookie table renders from the same flag the analytics loader reads, and the counts in the margin are computed rather than typed. Breaking the promise breaks the build first.
That covers the code and not the wording. If you can see a cookie in your browser that this page does not name, the page is wrong and we want to know — a screenshot of the storage panel is the most useful thing you can send.