Privacy and cookies

Math Poker asks for no personal details, has no advertising and no third-party analytics. You play in the browser, but most modes are run by the server: it deals the cards and keeps the statistics so they cannot be tampered with. Only the result of the ranked game and the daily challenge appears in public, and only with your consent; in the group game your board is visible only to those who know the lobby code. What exactly goes where, and why, is described in the chapters below.

Who is responsible

The site is operated by Martin Šikula, contact sikula.martin@email.cz. Write to that address about anything concerning data processing or this policy.

What data the site processes

The game does not ask for an e‑mail, a name or a phone number and cannot store any of them. It processes only this:

  • Profile nickname: text you choose. Made up is fine; it is never verified and does not have to identify you.
  • Game statistics: best score overall and separately for easy and hard difficulty, games played and games finished, the time of the fastest finished game and the date of the last one. These are counted and kept by the server, because in a browser anyone could rewrite them; the browser only keeps a copy so they can be shown offline as well. They are not public. Only you see them.
  • Settings: the visual theme you picked, the interface language and a record of how you decided in the consent bar.

None of it is passed to anyone and there is no advertising and no third-party analytics involved. What goes to the server, and why, is described right below, including the visit counters the site keeps itself.

What goes to the server

The number picker and the hand-filled grid stay entirely in the browser and send nothing. The rest of the game talks to the server: easy and hard for the statistics, the other modes for your fellow players as well.

  • The course of a game: in easy and hard difficulty the server deals the cards and every move is sent to it (“place this number on this cell”). It is the only way statistics can mean anything: a score counted in the browser can be rewritten. Without storage turned on and without a connection the whole game runs in the browser and nothing is sent. The game simply does not enter the statistics.
  • The result of a game: score, difficulty, length and date. It enters the public table only from the ranked mode and the daily challenge, and only with consent to publish; from easy and hard it is added to your statistics only.
  • The nickname of the active profile. It appears in the public table only for ranked games and the daily challenge. Made up is fine; it is never verified.
  • A random player id the server issues on your first game so it can tell it is you. It says nothing about you personally. Every profile in the browser has its own, so two people at one computer do not have their numbers added together.

For the daily challenge the server also keeps today’s date and the result of today’s attempt against your player id, otherwise one attempt a day could not be enforced, and with it the number of days played in a row, so the streak can be shown. It is nothing more than a date, a score, a streak and a position.

For the group game and the duel the server also receives the nickname you choose when creating or joining, and your grid in progress with its score. Only people who know the lobby code see it, in a duel that means your opponent. Nothing from these games enters the public leaderboard. The whole lobby is deleted from the server at most six hours after the last action.

For rate limiting the server keeps a fingerprint of your IP address (HMAC‑SHA‑256 with a secret server key) so repeated games from the same network can be recognised. The address itself is not stored and without that key it cannot be computed back from the fingerprint. All that sits next to it is a request counter, and it is deleted together with it during cleanup, at most a few hours after the last request. It is never written to the leaderboard.

Visit counters: the server keeps daily numbers of how many times each page was opened, in which language, on how wide a window and at what hour, how many games in each mode were started and finished, which range the score fell into and how long the game took. On top of that: which step the first-game walkthrough got to, how many times someone downloaded the printable board or the counters, and for a network error which part of the site it happened in, so it is clear what broke. For a visit that arrived from elsewhere it adds a coarse bucket saying where the link came from (say “the Seznam search engine” or “social networks”); the address of that page is never sent anywhere and never stored. The country the visit came from is added too, and again only as a coarse bucket: Czechia, Slovakia, the neighbouring countries, the English-speaking ones, and the rest of the world as a single number. The hosting works it out from the IP address before our code even runs, so nobody is asked for their location and the address itself is never written down. It is always one number per day and per item, nothing more, and the numbers are not joined to each other: it shows how many visits came from Seznam and how many were on a phone, not that it was the same visit. No cookie, no id and no address is kept alongside them, so they cannot tell how many people there are, let alone who. They serve one purpose: to show which pages nobody reads, where players give the game up and whether something broke. They do not ask for consent, because nothing is stored in or read from your browser and it is not personal data. The numbers are deleted after 400 days.

The leaderboard is public: anyone can see the nickname on it. Do not put your name, your e‑mail or anything you can be traced by in there. Publishing can be turned off on the Profile page; ranked games still work, the result simply is not recorded.

The data is held by Netlify (Netlify, Inc., USA) as a processor: the site runs on its servers and the leaderboard lives in its Netlify Blobs storage. The transfer to the USA rests on the EU standard contractual clauses. Once a game ends, only its final state is left for an hour, that is the finished grid and the score, so that a late final move still arrives; then that goes too. A leaderboard entry stays until better results push it out or until you ask for its removal. Statistics tied to a player identity are kept by the server until you reset them or erase your data; an identity with not a single game recorded against it is deleted after 30 days. The buttons for both are on the Profile page.

What is stored in the browser

Cookies and localStorage are two ways for a site to note something down on your device. The site uses both. The cookie is only a fallback: if you clear localStorage, the profile is restored from it.

Name What it is for Kind Lifetime
mp-theme The visual theme you picked localStorage · essential until erased
mp-lang The interface language you picked localStorage · essential until erased
mp_lang The same language, so the server knows it and does not pick another one by country on the bare address cookie · essential 365 days
mp-preview Whether the game shows the score preview on empty cells localStorage · essential until erased
mp-picker The number draw in progress on the Number selection page, so it survives a page reload localStorage · essential until erased
mp-welcome A record that we asked for a nickname on the first visit, so we do not ask twice localStorage · essential until erased
mp-auto-name A mark that the profile was given a default name, so the game asks once after the first game for a nickname of your own localStorage · essential until erased
mp-consent A record of how you decided about storage localStorage · essential until erased
mp_consent The same decision, so it survives clearing localStorage cookie · essential 180 days
mp-profiles All local profiles and their statistics localStorage · with consent until erased
mp_profile The active profile nickname, a fallback cookie · with consent 180 days
mp-publish Consent to publishing your nickname on the leaderboard localStorage · essential until erased
mp-player The player id and secret issued by the server: the key to the leaderboard and to the statistics, one per profile localStorage · with consent until erased
mp-seat The lobby code and the key to your seat in a group game in progress localStorage · with consent until erased
mp-duel-seat The same for a duel in progress, so it does not get mixed up with a group game localStorage · with consent until erased
mp-tutorial Notes that you have already seen the first-game tour on the easy game, so it is not shown twice localStorage · with consent until erased
mp-daily-share Line scores of your finished daily challenge so the result can be shared even after you come back to the page localStorage · with consent until erased
mp_stats A copy of the active profile statistics so they can be shown offline cookie · with consent 180 days
mp-sw-* A copy of the site files (pages, scripts, styles, fonts) so the game loads instantly and works offline Cache Storage · essential until erased

All cookies are first-party (never third-party), carry the SameSite=Lax flag and, on a secure connection, Secure as well. No third party has access to them.

The mp-sw-* row is the service worker cache: it lets you add the game to your phone’s home screen and play without a signal. It holds only the site’s own files, identical for everyone; it remembers nothing about you, which is why it counts as essential storage. It refreshes itself with each new version of the site and is deleted when you clear the site data in your browser.

Legal basis and consent

A site may store something in your browser under Section 89(3) of Czech Act No. 127/2005 Coll. either when it strictly needs it for a service you asked for, or with your consent.

  • Essential: the theme, the language, the score preview, the number draw in progress and the records of your decisions (storage consent, leaderboard publishing, the nickname prompt). Without them the site would return to its default state every time and would keep asking again and again. They are interface settings, they say nothing about you, and therefore need no consent.
  • With consent: profiles and statistics. They are written only after you click Allow storage in the bar. Until then the game keeps results in the memory of the open tab only and closing it makes them disappear.

Consent is voluntary and can be withdrawn at any time: the game keeps working, it simply remembers nothing and easy and hard difficulty switch to the serverless mode. Withdrawal erases the data from your device including the key to your player identity. Without it neither you nor anyone else can reach the statistics held on the server. A record without a link to your device stays there. You can ask for its deletion at the contact above.

Children and schools

The game is meant for lessons too and no account is created in it. The only thing shown publicly about a player is the nickname next to a result in the leaderboard and in the daily challenge, and only with consent to publishing.

If you are under 15, have publishing approved by a parent or keep it turned off. You can still play, the result simply is not written to the public table; it is turned off on the Profile page. If a child’s nickname appears in the leaderboard and a parent does not want it there, write to the contact above and we will delete the entry.

How long data is kept

  • localStorage has no expiry: it stays until you or the browser erase it.
  • Cookies expire after 180 days. The countdown restarts whenever the cookie is rewritten: that is when the profile or the statistics change, not on every page load.
  • Deleting a profile, resetting statistics or withdrawing consent erases the data immediately.

Your rights

Almost everything you can do yourself and instantly, right on the Profile page:

  • Access and portability: the Download button saves your profiles as a JSON file, Load brings them back, in another browser or on another device too. Statistics are not in the file because the server keeps them; what travels is the key to them, so the numbers pull themselves in after loading.
  • Rectification: a profile nickname can be rewritten any time.
  • Erasure: Erase everything removes from localStorage and the cookies every entry marked with consent in the table above, including the key to your player identity on the server, group games in progress and the daily challenge. On top of that it erases the number pick in progress on the Number picker page. Reset statistics erases the numbers there as well.
  • Withdrawal of consent: Turn storage off, or the button below.
  • Removal from the leaderboard: write to the contact above and give the nickname you stand under in the table. We will remove the entry. Turning publishing off in your profile prevents further entries, but does not erase the ones already sent.

Rights under the GDPR (access, rectification, erasure, restriction, portability, objection) can also be exercised with the operator at the contact above. A complaint can be lodged with the Czech Data Protection Authority, Pplk. Sochora 27, 170 00 Prague 7.

Changing your settings

The storage decision can be changed at any time. The button reopens the bar you saw on your first visit.

Manage data

Changes to this policy

When the storage changes, this text changes with it and the version number above goes up. A substantial change means the consent bar speaks up again.