Cookie policy
Last updated 1 August 2026
This page lists every cookie reckoner.fit sets, and everything else the site keeps in your browser. Two cookies are always allowed: one keeps you signed in, the other remembers the answer you gave the banner. The site also uses Google Analytics to see how it is used, and that sets cookies of its own, so it runs only if you accept. Reject and none of it loads. All of it is set out below.
The short version.
- Two necessary cookies.
rk_sessionkeeps you signed in and is set only when you sign in.rk_analytics_consentholds one word, your answer to the banner, so you are asked once. Neither needs permission, and neither is used to follow you. - Google Analytics, to see how the site is used. It sets its own cookies (
_gaand one per property), so it runs only if you accept in the banner. Reject and it never loads. - No advertising cookies, and no advertising of any kind. Nothing here is sold to or shared with an ad network, and the analytics cannot follow you to other sites.
- The analytics receives no name, no email address and nothing you type. That is enforced in the code rather than promised: see what the analytics can and cannot see.
- You can change or withdraw your choice at any time, below. A Do Not Track or Global Privacy Control signal is treated as a reject, and you are never asked.
- The site also uses
localStorage, which is not a cookie and is never sent to the server. It holds your theme and your food preferences. It is listed in full below. - The Garmin watch app uses no cookies at all.
Who is asking
reckoner.fit is operated by Inner Skill Set, registered in the Netherlands with the Kamer van Koophandel under number 75619563. Anything on this page, including a complaint about it, reaches a person at hello@reckoner.fit. The wider picture of what is held about you, where, and for how long, is the privacy policy.
What a cookie is here
A cookie is a small piece of text a site asks your browser to keep and send back on the next request. That round trip is what lets a website recognise you across page loads. It is also what makes cookies useful for following people around the internet, which is why the law treats them carefully and why most sites greet you with a consent wall. Reckoner uses the first property and not the second.
The cookies
| Name | What it does | Set when | Lasts |
|---|---|---|---|
rk_session |
Holds your session token, which is how the server knows which account a request belongs to. Without it, every page would ask you to sign in again. Strictly necessary, so it needs no consent. | You complete a sign-in with an emailed code. Never before that. | 90 days, or until you sign out, whichever comes first |
rk_analytics_consent |
Holds one word, granted or denied, which is your answer to the analytics banner. It is what stops the banner asking again on every page. It holds no identifier of any kind and nothing is derived from it. Strictly necessary in the sense that matters here: without it your choice could not be honoured, so it needs no separate consent of its own. |
The moment you press Accept or Reject. Never before you answer. | 12 months, or until you clear your browser data |
_ga |
Set by Google Analytics to tell one browser from another, so a return visit is not counted as a new person. First-party, readable only on reckoner.fit. | Only after you accept analytics. Never if you reject or say nothing. | 2 years, or until you withdraw consent |
_ga_9N6C29TDFS, _ga_J8P5YTRN3V |
The companion Google Analytics cookies, holding session state. There is one per analytics property and the suffix is the property id: the public pages and the signed-in app are measured separately, and are kept apart deliberately, so a browser that has used both is holding both. | Only after you accept analytics. | 2 years, or until you withdraw consent |
The session cookie is first-party, set by reckoner.fit itself. It carries
HttpOnly, so no script on the page can read it, SameSite=Lax,
so another site cannot make your browser send it, and Secure, so it
travels over HTTPS only. What it holds is a random token, and the server keeps only
a SHA-256 hash of that token, so the cookie is a key rather than a record about you.
It carries no name, no email address and no training data. Signing out deletes it on
the spot, at both ends.
The session cookie is also host-only: it carries no domain, so your browser
returns it to exactly the address that set it and to nothing else. The consent
cookie is the one exception, and deliberately so. It is scoped to
.reckoner.fit so that the answer you give on the public site is
honoured on the app at app.reckoner.fit as well, and you are not asked
the same question twice. That is safe to share precisely because it holds one word
and no identifier. Your session is never shared that way.
Your analytics choice used to be kept in localStorage rather than in a
cookie, under the key reckoner-analytics-consent-2. Browser storage is
tied to one address, so a choice made on the public site could not be read by the
app. Moving it to a cookie fixed that and retired every answer given under the old
key, which is why you were asked once more. The old key is deleted from your browser
on your next visit.
That is the complete list. If you find a cookie on reckoner.fit that is not on it, that is a bug and we want to hear about it: hello@reckoner.fit.
Your analytics choice
The session cookie is strictly necessary, so under the EU ePrivacy rules it is exempt from consent: it is explained here rather than asked about. The analytics cookies are different. They are not necessary, so they need your consent, and you get a real choice. A banner offers Accept and Reject as equal options. Nothing analytics-related loads until you accept. If you reject, or simply close the page without choosing, none of it ever runs and none of its cookies are set.
You can change your mind whenever you like, and withdrawing is as easy as giving: rejecting after you accepted stops the analytics and clears its cookies on the spot.
A Do Not Track or Global Privacy Control signal from your browser is treated as a standing reject, and the banner does not appear at all.
Legal bases: the session cookie is performance of a contract, Art. 6(1)(b) GDPR; the analytics is your consent, Art. 6(1)(a) and the ePrivacy rules on storage. Both are set out alongside everything else in the privacy policy.
Not cookies, but still your browser
The site stores a few things in localStorage. That is not a cookie: it
never travels to the server, it is not attached to requests, and it is readable only
by pages on reckoner.fit. The rules that cover cookies cover this too, so here is
all of it:
| Key | What it holds |
|---|---|
reckoner-theme |
Auto, light or dark, so the site does not flash the wrong colours on the next page |
reckoner-analytics-consent-2 |
Where your answer to the analytics banner used to be kept. Nothing writes it now: the answer is the rk_analytics_consent cookie described above. It is named here because a browser that visited before the change was still holding one, and it is deleted on the next visit |
reckoner-diet, reckoner-veg, reckoner-allergens |
Your diet preference and allergen filters on the Fuel page. reckoner-veg is an older key kept only so an existing choice is not lost |
reckoner-meal-picks, reckoner-meal-pins, reckoner-custom-dishes |
The meals you picked, the ones you pinned, and any dish you built yourself. The server never sees these |
reckoner-sex |
Which strength standard the Where you stand page grades your lifts against. Written only when the site is running without a server behind it, so a page can draw before anything answers |
reckoner-bw, reckoner-goal, reckoner-bodyweight_kg, reckoner-height_cm, reckoner-age |
A local copy of profile values that earlier versions of the Where you stand and Fuel pages kept for their sliders. Nothing writes these now. They are named here because a browser that visited one of those pages is still holding them |
None of it identifies you to anyone else, and clearing your browser data removes all of it. Your meal and diet choices exist only here, so clearing them deletes them for good.
Analytics
If you accept, Reckoner uses Google Analytics 4 to see which features people
actually use, so what gets built next follows behaviour instead of opinion. It sets
the _ga cookies listed above and loads Google's tag from
googletagmanager.com. It runs only after you accept, and never on this
page, the privacy policy, the terms or the admin console.
It is configured to stay narrow. Google Signals and advertising personalisation are both turned off, so the data cannot be joined to an advertising profile and cannot follow you from reckoner.fit to any other site. Your IP address is truncated before it is stored, and Google uses it only to derive an approximate location, which it does not pass on to us.
There are two separate analytics properties, one for the public pages and one for the signed-in app. That split is the point rather than an accident: data retention, deletion and every sharing setting are decided per property, so keeping the two apart is what makes the limits below checkable rather than merely stated.
What the analytics can and cannot see
Never sent, and it is the code that stops it, not a policy somebody remembers. Every event goes through one function, and that function drops any parameter that is not on a fixed list for that event and rejects any value that is not a number, a true or false, or a member of a fixed set of words. There is no second route to Google. That single rule is what makes it structurally impossible for a name, an email address or anything you typed to leave the page.
- No account id. No user id of any kind is sent, on either property: not a hashed email, not a session token, not a number standing in for you. An earlier version of this site did send your numeric account id, and that stopped when this page was last updated.
- No training data. No loads, reps, RPE, one-rep-max estimates or tonnage. No body weight, body fat, height, age or sex. That a feature was used is counted; what you put into it never is.
- No free text. Anything you write, in a note, a report or a form, reaches no event.
- No page titles from the app, because a title could carry a display name. The app sends a plain word for the screen instead, like
todayorhistory. - No addresses carrying anything about you. Query strings are stripped whole, not filtered, and any address with a person in it is rewritten before it is sent.
- Numbers are grouped before they leave, even harmless ones. A session with five lifts in it is counted as "4 to 6", never as five.
What that leaves is which page or screen you opened, that a feature was used, your browser and device type, and the approximate location Google derives from an IP address it truncates. If you find something we count that is not described here, that is a bug and we want to hear about it: hello@reckoner.fit.
Reject, and none of this happens: no cookies, no tag, no request to Google. There is no cookieless fallback standing in for it and no "legitimate interest" version of it running quietly underneath. The same is true if your browser sends a Do Not Track or Global Privacy Control signal.
Other people's cookies
One, and only if you accept: Google Analytics, described above, sets its
_ga cookies once you opt in. Reject and there are none. No ad network,
no social widget, no embedded video, no comment system, no consent-management
platform. Nothing else on reckoner.fit sets a cookie except reckoner.fit itself.
Two things can be loaded from outside reckoner.fit. Once you accept analytics, the
Google tag is fetched from googletagmanager.com on every page except the
three policy pages, the admin console and our own internal pages, so it never loads
here at all. The
second is an icon font from the public CDN cdn.jsdelivr.net, which the
app draws the glyphs in its menus with. Signed out, this page loads nothing from
anywhere but reckoner.fit. Signed in, the top bar carries your account menu, and its
glyphs come from that font, so your browser fetches it here as it already does on
every other page of the app. Your browser's IP address is visible to each of them
when it fetches their file, and the font CDN receives nothing else about you.
The watch app
The Connect IQ app has no browser and no cookie jar. When you pair a watch it receives its own long-lived token, which lives in the watch app's own storage and is sent as an ordinary authorization header. You can revoke it at any time on the Devices page, which kills it immediately. It is not a cookie and nothing on this page applies to it.
Controlling cookies yourself
Every browser lets you see the cookies a site has set, delete them, and block them ahead of time. It is usually under Settings, then Privacy, and you can normally get there fastest from the padlock in the address bar while you are on the site. Some browsers block third-party cookies by default, which changes nothing here, because there are none to block.
Deleting rk_session, or blocking cookies for reckoner.fit, signs you
out. Nothing else breaks, and nothing is lost: your training history lives on the
server, so signing back in brings it all with you. Deleting
rk_analytics_consent forgets your answer, so the banner asks again, and
until you answer, nothing analytics-related runs. Blocking
localStorage as well costs you the theme choice and the food
preferences above, and those really are only in the browser.
Changes
If Reckoner ever sets another cookie, it will be on this page before it is in your browser, and the date at the top will change with it. Anything that needs your consent will ask for it properly rather than assume it. The current version is always at https://reckoner.fit/cookies.