ChessCentrum

Privacy policy

Last updated: 12 September 2026

This policy explains exactly what ChessCentrum does with personal data: what we store, why, on what legal basis, who else sees it, how long we keep it, and what you can do about it. It describes the site as it actually works today, not what it might do later. Where something is not implemented yet, we say so instead of reserving the right to do it.

Who we are

ChessCentrum operates the website chesscentrum.com and is the controller for the personal data described in this policy. You can reach us at contact@chesscentrum.com, which is a monitored mailbox and the fastest route for any privacy question or request.

ChessCentrum is operated from the Netherlands, so no EU representative under Article 27 GDPR is required. Registration with the Dutch Chamber of Commerce is being prepared; the KvK number and the registered address will be published here as soon as they are issued, and this policy will be updated on the same day.

We have not appointed a Data Protection Officer. We are not required to: we are not a public authority, our core activity is not large-scale systematic monitoring, and we do not process special categories of personal data on a large scale. Privacy questions go to contact@chesscentrum.com and are handled by the person who runs the site.

What this policy covers

It covers the ChessCentrum website and web app: the tournament, club, shop, casual-chess and accommodation listings, the map, the carpool and miles pages, accounts and sign-in, the personal dashboard, the score-sheet scanner and the newsletter.

If you only browse, we store nothing about you in our database. No account is created, no profile is built, and nothing you look at is recorded against you. Our hosting provider does process standard request data, such as your IP address, browser user agent and the page requested, in order to deliver the pages and keep the service available and secure.

Links to other sites, such as Lichess, Chess.com, a chess club or a tournament organiser, lead to services with their own privacy policies. This policy stops at our own edge.

Why we process your data, and on what legal basis

Each purpose has its own legal basis under Article 6 GDPR. We do not rely on one blanket basis for the whole site.

Creating and running your account
Your name, email address and, for email and password accounts, a hashed password. Basis: Article 6(1)(b), performance of the contract you enter into when you create an account. Without these we cannot give you an account.
Confirming your email address and resetting your password
Your email address plus a single-use tokenised link. Email verification is a blocking step: a new email and password account cannot sign in until the address is confirmed. Basis: Article 6(1)(b), performance of the contract.
Keeping you signed in, and keeping the account secure
A session record containing a session token, its expiry, your IP address and your browser user agent. Basis: Article 6(1)(b) for the sign-in itself, and Article 6(1)(f) legitimate interests for the security element. The specific interest is detecting and limiting account takeover, including credential stuffing and reuse of a stolen session, on accounts belonging to our users.
Showing your own games, ratings and federation profile
The identifier you choose to link: a Lichess account, a Chess.com username, a KNSB relation number or a FIDE ID. Basis: Article 6(1)(a) consent. Each link is a separate, deliberate action with its own unlink button, and unlinking takes effect immediately.
Storing games you digitise with the score-sheet scanner
The moves of the game, the result, which side you played, and the event name, round and date you type in. Basis: Article 6(1)(b), performance of the contract, because saving the game is the feature you asked for. No opponent name or rating is stored.
Sending the newsletter
Your email address and the language you signed up in. Basis: Article 6(1)(a) consent, collected by double opt-in: the consent box is unchecked by default, the server refuses a submission without it, and nothing is sent until you click the confirmation link.
Preventing abuse of the newsletter form
Your IP address, held only in the server process memory in a short sliding window and never written to the database. Basis: Article 6(1)(f) legitimate interests. The specific interest is stopping automated bulk submissions that would exhaust our shared email sending quota and turn our confirmation emails into unsolicited mail sent to other people.
Handling feedback you send us
The category you pick, the message you write and the language you wrote it in. Basis: Article 6(1)(f) legitimate interests. The specific interest is finding and fixing what does not work and learning what is missing, which is the whole point of a feedback form. If you also leave an email address so that we can reply, that address is processed on the basis of Article 6(1)(a) consent: the box is unchecked by default, the server refuses an address without it, and you may leave the field empty. To keep automated junk out, your IP address is held briefly in the server's memory, exactly as for the newsletter form, and never stored.
Registering for a free event or RSVP
When you register for a free event, or say you are going to a casual chess meet-up, we store that intention on your account so that you can see it and remove it again. Basis: Article 6(1)(b), performance of the contract — the stored note is the whole of what we undertake to do. Nothing about your registration is sent to the organiser, and no number derived from registrations is shown publicly.
Delivering, operating and securing the website
Standard request data processed by our hosting provider, such as IP address, user agent, path and timestamp. Basis: Article 6(1)(f) legitimate interests in serving the pages you requested, diagnosing faults and defending the service against attack.
Remembering your home country
The country you play in, if you choose one. Basis: Article 6(1)(a) consent. It is optional, empty by default, and you clear it again by selecting “No country selected”. We use it for one thing: deciding which national rating list your account page offers you — the KNSB for the Netherlands, the DSB's DWZ for Germany, and so on. We never derive it from your IP address or from the language you read the site in.

What we store about you

This is the complete list of personal data our database holds. Everything lives in one Postgres database in Frankfurt.

Account identity
Name, email address, whether the address has been verified, and the created and updated timestamps. There is also a profile-picture field. Accounts created through Lichess never fill it, because Lichess returns no avatar; signing in with Google does fill it, with the picture URL Google supplies.
Sign-in credentials and provider tokens
For email and password accounts, a scrypt password hash. We never store the password itself and cannot read it. For accounts linked to Lichess or Google, the access, refresh and ID tokens issued by that provider, their expiry times and the granted scope.
Session, device and network data
For each active sign-in: a session token, its creation and expiry times, your IP address and your browser user agent. We record the IP address and user agent because our authentication library does so by default and we have chosen to keep that security signal rather than switch it off.
Verification and recovery tokens
For a password reset or an account-deletion confirmation: your email address as the identifier, a single-use token and its expiry. The email-verification token is different: it is a self-contained signed token carried in the link and is not stored in our database at all.
Linked chess platforms and federations
One row per link, holding the provider name and the identifier: your Lichess account id, Chess.com username, Google account id, KNSB relation number or FIDE ID. Nothing else about the linked account is copied into our database.
Newsletter subscription
Email address, chosen language, the sign-up time, the confirmation time once you confirm, and the confirmation token with its expiry.
Feedback you send us
The category, your message, the language you used, the time it arrived and, only if you ticked the box, the email address you left so that we can reply. There is no column for your IP address, your account or your browser, and we never read your sign-in cookie when a message arrives, so a message is not linked to your account unless you sign it yourself. Each message is also emailed to us through the same provider that delivers our other emails, so that provider handles the text and, if you left it, your address. Feedback is read by us and never published.
Saved score-sheet games
The game moves as a PGN rebuilt on our server, the result, which side you played, the event name, the date and the number of half-moves. The PGN carries only event, round, date and result headers. There is deliberately no column for a player name or a rating, so your opponent never becomes a record in our database.
Games and ratings from linked platforms
Fetched from Lichess and Chess.com while your dashboard is being rendered, shown to you, and never written to our database. This is the only place where other players appear, as the public usernames and ratings that those platforms return with your games, visible only to you.
The tournament, club and shop catalogue
Listings of events, clubs, accommodation and products, holding organisational details such as a club name, a venue, coordinates and a website. Two of them do carry a person-shaped name: casual events record who organises them, which may be a club or a person, and the accommodation listings carry a host name — those ten host entries are illustrative examples rather than real people, and are labelled as such on the site. Nowhere in the catalogue is there a column for an email address or a telephone number.
The demo dashboard and the lookup catalogue
The dashboard you see when signed out, and the player records behind the KNSB and FIDE lookup, are twelve fictional sample players plus one deliberately anonymised demo profile. They are not real people, and no real person is identifiable from them.
Event registrations and RSVPs
When you register for a free event, or RSVP to a casual chess spot, we store a row linking your account to that event together with its status and the created and updated timestamps. The amount on it is always zero, because registration is only offered where entry is free, and no payment data is involved. Cancelling deletes the row outright rather than merely flagging it, so withdrawing leaves nothing behind; deleting your account removes any remaining rows with it. If an event is withdrawn from the site, we delete an open free registration for it in the same way. Basis: Article 6(1)(b), performance of the contract.
Error reports (no personal data)
When a page or our server hits an error — or when an email we tried to send you never reached our email provider — we store a short technical record of it: the error message and, where there is one, the stack trace, with anything that looks like an email address, a long number or a link's query string already removed; the page template that failed, where a page was involved; the version of the site; and how often and when the same error recurred. For a failed email the record says which kind of message it was and why the provider refused it, never the address it was going to. There is no column for your IP address, your account, your session or your browser headers, and the report is sent without any cookies, so a record cannot be traced back to you. For each new kind of error we send ourselves one notification email, through the same email provider that delivers our other messages; nothing else goes anywhere, and when the failure is that provider itself, that notification may not reach us either.
Your chosen home country
One row per account holding a country code (NL or DE, say) and the times it was created and changed — nothing else. A country is the coarsest location there is, and you state it yourself: there is no code in the site that derives your location from your IP address. The row exists only once you have chosen a country.

Who else processes your data

We use a small number of providers, each with a narrow role. We do not sell personal data, we do not share it with advertisers, and we do not use it to build profiles for anyone else.

Vercel Inc., hosting and content delivery
Runs and serves the entire app: server rendering, form submissions, routing, static files and TLS. Every request therefore passes through Vercel, including your IP address, user agent, the URL, your cookies and the contents of any form you submit, such as a sign-up, a newsletter address or a score-sheet transcription. Global edge network; the compute region is a platform setting rather than something fixed in our code.
Supabase, managed Postgres database
Stores every row listed above. Hosted in the EU, in Frankfurt on AWS eu-central-1. Direct access from the public internet is switched off and row-level security denies access by default, so only our own server code can read the data.
Supabase daily backups
The same provider takes an automated snapshot of the whole database once a day and keeps it for seven days, in the same Frankfurt region. Its only purpose is disaster recovery. See the retention section for what this means for deletion.
Resend, transactional email
Delivers the emails we send: email verification, password reset, account-deletion confirmation, the farewell message after deletion, and the newsletter confirmation. Receives the recipient address, the name used in the greeting and the message text, which contains a single-use link. The hosting region of this provider is not fixed by our code and follows our account configuration.
Google LLC, Maps JavaScript API
Draws the interactive tournament and club map. Your browser contacts Google only if you open the map page, and only when a map key is configured; Google then receives your IP address, user agent, the referring URL and your map requests. Google infrastructure, outside the EEA.
Google LLC, sign in with Google
An optional way to sign in, available only where the deployment you are using is configured for it. If you do not see a Google button, it is not active there. If you do use it, Google returns an account identifier, your name and your email address, which we store as an account of yours. Google infrastructure, outside the EEA.
Google LLC, Google Analytics
Measures how the site is used — pages viewed, the referring page, an approximate location derived from your IP address, and device and browser type — so we can see what people actually use. Loads only after you accept our cookie banner; if you decline, or simply never answer, your browser contacts Google for this purpose zero times. Once active it sets a pseudonymous identifier (the cookies described below) and Google receives your IP address, user agent and the pages you view. Not linked to your ChessCentrum account. Google infrastructure, outside the EEA.
Lichess
Two roles. As an identity provider when you choose sign in with Lichess, in which case Lichess also returns your Lichess email address if you grant that permission. As a public data source for your dashboard: we request your public profile, ratings and recent games. That request is made by our server, not by your browser, so Lichess does not see your IP address when your dashboard loads. Lichess is operated from France.
Chess.com, LLC
A public data source only. We request your public profile, statistics and recent monthly game archives through the published-data API, again from our server and identifying ChessCentrum in the request. Chess.com never sees your IP address or your browser. Chess.com and its network provider are outside the EEA.
Microsoft, our contact mailbox
The contact@chesscentrum.com mailbox runs on Microsoft 365. Anything you send us by email — a privacy request, a vulnerability report, an ordinary question — is stored and processed there, along with your own email address. Microsoft infrastructure, which may be outside the EEA.
Chess retailers whose product images we show
Product pictures in the shop section are loaded straight from the retailers' own websites rather than copied onto ours, so opening a shop page makes your browser fetch images from those sites and discloses your IP address and user agent to them. Currently three Dutch and international chess retailers. Nothing about your account is shared with them, and they receive nothing at all if you never open a shop page.

Transfers outside the EEA

Everything we store is stored in the EU. The database and its backups are in Frankfurt.

Some of the providers above are established in the United States or operate global infrastructure, so data can be processed outside the EEA. For those transfers we rely on the European Commission adequacy decision for the EU-US Data Privacy Framework where the provider is certified under it, and otherwise on the Commission standard contractual clauses included in the provider terms, together with the technical measures described in this policy. You can request a copy of the safeguards that apply to a specific provider by writing to contact@chesscentrum.com.

Two transfers are worth calling out because they depend on your own choices. Opening the map sends your IP address to Google. Linking a chess platform sends only your username, from our server, to that platform.

Data we receive from other sources

Not everything reaches us directly from a form you filled in.

When you link a chess platform, we fetch data about you from that platform: your public profile, ratings and recent games from Lichess or Chess.com. These are public sources, and we only ever request the account you yourself linked. The games we receive include the public usernames and ratings of the people you played on those platforms. That information is displayed to you and to nobody else, and it is never written to our database.

The KNSB and FIDE lookup works against our own catalogue rather than against a federation service. That catalogue currently holds twelve fictional sample players and one anonymised demo profile, so no real person is looked up today. If we later load real federation records, we will inform the people concerned within one month of obtaining their data, or at the latest when we first communicate with them, and we will update this policy first.

The tournament, club, casual-chess and accommodation listings are compiled from public sources. They describe organisations, venues and events, and our database has no field for a personal contact.

Cookies and similar technologies

Dutch law, Article 11.7a of the Telecommunicatiewet (the Telecommunications Act), requires your prior consent for storing anything on your device or reading anything from it, whether or not it is personal data. Consent is not required only where the storage serves purely to transmit the communication, or is strictly necessary to deliver the service you explicitly asked for, or serves solely to measure the quality of a delivered service with no or negligible privacy impact. We applied that test to every item below.

better-auth.session_token
The signed identifier of your sign-in session, which is what keeps you signed in. Set only after you successfully sign in. Served with a secure prefix over HTTPS. Lifetime: 7 days, refreshed as you keep using the site, so an active session does not expire underneath you. ChessCentrum offers no “remember me” choice — every sign-in behaves the same way. Strictly necessary, no consent required.
better-auth.session_data
A short-lived cached copy of your session so that most page loads do not need a database query, which makes the signed-in site noticeably faster. Set for signed-in users only, and split across numbered cookies when it is large. Lifetime: 5 minutes. Strictly necessary, no consent required.
NEXT_LOCALE
Remembers the interface language you selected, so the site does not fall back to your browser language on the next visit. Set when you switch language or when the language we serve differs from what your browser asked for. Lifetime: until you close your browser, as no expiry is set. Functional and strictly necessary to deliver the language you explicitly chose, no consent required.
_ga and _ga_<container-ID> (Google Analytics)
Two cookies Google Analytics sets once you accept our cookie banner, and never before: _ga recognises your browser across visits, _ga_<container-ID> holds the state of your current session. Both last up to two years. We do not set these ourselves — Google's script does, and only after your acceptance. Not strictly necessary: this is the one item in this inventory that rests on your consent rather than on an exemption, and you can withdraw it at any time from the cookie preferences link in the footer.
better-auth.state
Set only while a sign-in through Lichess or Google is in progress, to tie the answer coming back from that provider to the request your browser started, which is what stops a forged callback. Removed as soon as the sign-in finishes. Strictly necessary, no consent required.
Two further cookies defined by our authentication library
The library we use for sign-in also defines a cached-account cookie and a do-not-remember-me flag. No flow in ChessCentrum sets either of them today. We list them so this inventory is genuinely complete; if a future feature ever sets one, it would be strictly necessary too, and we will say so here.
cc:maps-consent
Records that you asked for the Google map to be loaded, so the map page does not ask again on every visit. Written only when you press that button, and never before. Stored in your browser's local storage rather than as a cookie, so it is never sent to us with a request. It holds one word and nothing else — no identifier, no timestamp. Strictly necessary to honour a preference you set yourself, no consent required.
cc:ratingviewer-consent
Records that you asked for your official KNSB rating profile (ratingviewer.nl) to be shown inside your dashboard, so it does not ask again on every visit. Written only when you press that button, and never before. Stored in your browser's local storage rather than as a cookie, so it is never sent to us with a request. It holds one word and nothing else — no identifier, no timestamp. Strictly necessary to honour a preference you set yourself, no consent required.
cc:analytics-consent
Records whether you accepted or declined analytics cookies, so the banner does not ask again on every visit. Written only when you choose Accept or Decline in the banner, and never before. Stored in your browser's local storage rather than as a cookie, so it is never sent to us with a request. It holds one word and nothing else — no identifier, no timestamp. Strictly necessary to honour a preference you set yourself, no consent required.

The cookie banner

Every item in the inventory above except one is either strictly necessary or a preference you set yourself, so under Article 11.7a of the Telecommunicatiewet none of them needs consent. The one exception is Google Analytics: we use it to see how the site is used, and that is not something we can class as strictly necessary or as a service you explicitly asked for the way the map is. For that purpose, and that purpose alone, ChessCentrum shows a cookie banner.

The banner offers two equal buttons, Accept and Decline, with neither pre-selected. Choosing Decline — or closing the banner without choosing — means nothing loads: no script is requested from Google and no analytics cookie is set. Choosing Accept loads Google Analytics and sets the cookies described above. Either choice is remembered on your device so the banner does not return on every visit, and you can change it at any time from the “Cookie preferences” link in the footer of every page.

The same reasoning as before covers the other things our pages place in your browser. The optional chess engine and the score-sheet text recognition are downloaded from our own domain and cached by your browser like any other file, purely so the feature you started can run. We use no local storage for tracking beyond the consent choice itself, and no tracking pixels.

The third-party content on the site besides analytics is limited to two embeds behind a click-to-load gate: the Google map, and — for signed-in users who linked a KNSB relation number — their own official rating profile from ratingviewer.nl on the dashboard. Both load only once you press the button that requests them, which is itself the explicit request Article 11.7a asks for, so there is nothing to add a banner button for on their account. Note also that even a cookie exempt from the consent rule still needs a legal basis under the GDPR if it processes personal data; the sign-in cookies rely on the contract with you, and Google Analytics — the one item that is not exempt — relies on the consent you give in the banner.

We do not yet detect a Global Privacy Control or Do Not Track signal automatically. Your choice in the banner, freely given and freely withdrawn at any time from the footer link, is how you control analytics today.

Processing that stays on your device

Some of the heaviest processing on ChessCentrum never reaches us at all, and we consider that a feature rather than a detail.

The score-sheet scanner works on your device by default. The photo of your score sheet is read into the page, downscaled and converted to greyscale there, and the handwriting recognition runs as a WebAssembly worker loaded from our own domain. In this default mode the photo is never uploaded and no external service is contacted — the recognition model is shipped with the site.

The one exception is the optional cloud reading, which exists only where the scanner offers it and only ever runs when you explicitly choose it for a specific photo. If you do, that photo — recompressed, with all camera metadata including any location stripped, and with the header area that carries names and signatures masked out on your device by default — is sent through our server to Anthropic PBC (United States), our recognition provider under a data-processing agreement with EU standard contractual clauses. Anthropic is contractually barred from training on this data and deletes the image once it has been processed; the transcription comes back to your browser and is treated exactly like one you typed. We never store the photo and never write it or the transcription to our logs; the only thing we record is that your account used one of its monthly cloud readings. Declining costs you nothing but recognition quality: the on-device reading stays available and fully functional, and every photo is a fresh choice.

The optional engine analysis behind the skill radar and the evaluation graph works the same way. A chess engine compiled to WebAssembly runs in a worker on your machine; the positions are handed to that local worker and nothing leaves the device. It is opt-in, it shows progress, and you can cancel it.

When you choose to save a scanned game, and only then, one request goes to our server. It carries the typed move text, the event name, the round, the date, which side you played and your interface language. It does not carry the photo. Our server replays and re-validates the moves itself and rebuilds the PGN, so the file stored is one we generated, with only event, round, date and result headers, and no player names or ratings.

Two related notes. The carpool form stores nothing: pressing send shows a confirmation in your browser and makes no request to us. The analysis link next to a scanned game is an ordinary link you may click, which sends the position to Lichess only if you click it.

The map and Google

Nothing reaches Google until you ask for it. The map page opens with the map area replaced by a short explanation and a button; the Google Maps script is only fetched once you press that button. Until then no request has been made, no data has left your browser, and the list of tournaments and clubs beside the map is already fully usable. We remember your choice on your device so you are not asked on every visit.

Once you do press it, your browser requests the map directly from Google, so Google receives your IP address, your user agent and the page you came from, and may use them under its own privacy policy. Google also stores data on your device at that point. That is the trade you are making when you press the button, which is why we say so before you press it rather than after. If no map key is configured for a deployment, the button is not offered at all and the list is shown instead.

The site fonts are not a Google request. They are compiled into the site at build time and served from our own domain. The one exception is the map page itself: Google's own script loads the fonts it needs from Google, which is why our security policy has to allow it there.

Links to our social accounts

The footer of every page links to our accounts on X, YouTube, Instagram, Facebook and LinkedIn. Nothing reaches any of those platforms until you click. The icons are drawings built into the page itself, not images loaded from the platforms, and there is no follow button, embedded feed, share widget or tracking pixel anywhere on the site — so simply reading a page tells them nothing about you.

Once you do click, you leave ChessCentrum, and the platform you land on receives your IP address and your user agent and processes them under its own privacy policy. Your browser is told not to pass on which page you came from. If you are signed in to that platform, it can of course recognise you.

Your KNSB rating profile and ratingviewer.nl

If you have linked a KNSB relation number, the KNSB section of your dashboard can show your official rating profile from ratingviewer.nl — the Dutch chess federation's own rating viewer — inside the page. It works exactly like the map: nothing is requested from the viewer until you press the button that asks for it, and an ordinary link to the same page is always offered as the alternative that loads nothing here.

Once you press it, your browser requests the profile directly from ratingviewer.nl, so the viewer and its hosting provider receive your IP address and browser details under the federation's own responsibility, and the viewer may store data on your device. The page we embed is the one for the number you linked yourself, and our servers send the viewer nothing about you. We remember your choice on your device so you are not asked on every visit; that stored value is listed in the cookie inventory above.

How long we keep your data

The periods below are the ones actually implemented in the software.

Account data
Kept until you delete your account. There is no inactivity expiry, and we do not delete accounts on our own initiative.
Sessions, including the stored IP address and user agent
A session expires 7 days after its last use rather than at a fixed point 7 days after sign-in, so continuing to use the site keeps it alive; there is no “remember me” setting that changes this. We do not currently run a scheduled purge, so an expired row is removed when the authentication layer next encounters it rather than at a fixed hour. Signing out ends the session immediately. Because the session cache lives for 5 minutes, a revocation made on the server can take up to 5 minutes to be felt in an open browser.
Password-reset and account-deletion tokens
Valid for 1 hour and usable once. The email-verification link is also valid for 1 hour and is not stored at all.
Linked platforms and federation identifiers
Kept until you unlink them or delete your account. Unlinking removes the row.
Newsletter
The confirmation link is valid for 24 hours, and a repeat sign-up refreshes it at most once every 15 minutes. A sign-up you never confirm stays as a pending row until you confirm it or ask us to remove it, because no automatic purge runs today; write to contact@chesscentrum.com and we will delete it. A confirmed subscription is kept until you unsubscribe, and unsubscribing deletes the row outright rather than flagging it.
Feedback
The email address you left, if any, is cleared 90 days after you sent the message; the message itself is deleted after one year. No scheduled purge runs today, so both steps happen when the next message arrives rather than at a fixed hour, and on a quiet form a row can outlive its limit. If you want it gone sooner, write to contact@chesscentrum.com and quote the message, and we will delete it by hand.
Saved score-sheet games
Kept until you delete the individual game or delete your account. The number of saved games per account is capped.
Event registrations and RSVPs
Kept until you cancel the registration, which deletes it, or until you delete your account, which removes any that are left. We set no fixed period beyond that, and we would rather tell you why than invent one: casual chess meet-ups run on recurring weekly schedules rather than dates, so there is no event date we could count from. A registration you never cancel therefore stays until you remove it or close your account.
Games and ratings from linked platforms
Held for 300 seconds in our hosting platform's server-side data cache so that reloading your dashboard does not hammer the other platform. After that the entry goes stale and is refetched; the platform reclaims stale entries on its own schedule rather than deleting them at the exact second they expire. Never written to our database.
Server request logs
Held by our hosting provider under its own platform retention setting rather than by anything in our code. We would rather say that plainly than quote a number we cannot verify from here; ask us and we will tell you the setting in force.
Error reports
Kept for 90 days after the error last recurred, then deleted. No scheduled purge runs today, so the deletion happens when the next error is recorded rather than at a fixed hour, and on a quiet site a record can outlive 90 days. An error that keeps recurring stays as a single record with an updated count.
Your home country
Kept until you choose a different country, clear it with “No country selected”, or delete your account, which removes the row with it.

Backups, and what deletion really means

An automated snapshot of the database is taken once a day and kept for seven days, in the same Frankfurt region as the database itself. It exists so that a failure or a mistake cannot destroy everyone's data, and it is not used for anything else.

The honest consequence: when you delete your account or unsubscribe, the data is removed from the live database immediately, and you stop appearing anywhere in the running service straight away. Copies inside those daily snapshots age out over the following seven days. We do not edit backups, because a rewritten backup is not a backup. If a snapshot ever has to be restored, we re-apply the deletions that happened after it was taken.

How we protect your data, and what happens if something goes wrong

The measures below are in force today.

  • The whole site is served over HTTPS only, with strict transport security, a content security policy, and clickjacking and content-type protections.
  • Passwords are stored as scrypt hashes. We cannot read your password and will never ask for it.
  • The database is in the EU, is not reachable directly from the internet, and has row-level security that denies access by default, so only our own server code can read it.
  • Sessions expire, sign-out revokes them, and password reset and deletion links are single-use and short-lived.
  • Sensitive actions are re-checked on the server: a scanned game is re-validated server-side, deletion requires a live session and, where you have one, your password, and every deletion is scoped to your own account id.
  • Secrets live in the deployment environment, never in the source code, and the repository is private.
  • New features are covered by automated tests and a security review of the change before it ships.
If there is a data breach
We report a personal data breach to the Autoriteit Persoonsgegevens (the Dutch Data Protection Authority) within 72 hours of becoming aware of it, unless it is unlikely to pose a risk to your rights and freedoms, and we tell affected users directly and without undue delay when the risk to them is high. We will describe what happened, what data was involved and what you should do.
If you find a security problem
Report it to us rather than to the world. Our coordinated vulnerability disclosure page sets out the scope, the rules and our response times, and we commit not to take legal action against researchers who follow it.

Your rights

You have the following rights over your personal data. Several of them you can exercise yourself, right now, without asking us.

For anything not listed as self-service, write to contact@chesscentrum.com. We answer within one month, and we will tell you if a request is genuinely complex and needs longer. We do not charge for this. We may ask a question to confirm that the request really comes from the account holder, but we will not demand identity documents for a routine request.

Erasure, and this one is self-service
You can delete your account yourself from the danger zone in your account settings. If your account has a password we ask for it and verify it before anything is sent, so a wrong password sends no email at all; you then receive a single-use link that is valid for one hour, and deletion happens when you open it while signed in. It removes your account, your sessions, your linked platforms, your event registrations and your saved games in one go. Accounts created through Lichess without a usable email address confirm by typing their username instead. There is no cooling-off period and no dark pattern: when it is gone it is gone.
Deleting individual items
You can delete any single saved score-sheet game from the scanner page, cancel any event registration or RSVP from that event's own page — which deletes the row rather than merely flagging it — unlink any chess platform or federation identifier from your account page, and unsubscribe from the newsletter with the link in any newsletter email, which deletes your subscriber record rather than merely muting it.
Access
You can ask for a copy of the personal data we hold about you, together with the information in this policy. Much of it is already visible in your account and dashboard pages. There is no download button yet, so ask us at contact@chesscentrum.com and we will prepare it by hand.
Rectification
You can correct inaccurate data. Linked platform and federation identifiers you can fix yourself by unlinking and relinking, and your password by using the reset link. Changing your name or email address is not yet self-service, so ask us and we will change it.
Data portability
You can ask for the data you gave us in a structured, commonly used, machine-readable format, or ask us to send it to another controller where technically feasible. The scanner already lets you copy or download any game as a PGN. For the rest, ask us at contact@chesscentrum.com.
Restriction of processing
You can ask us to freeze processing while a dispute about accuracy or a legitimate-interest objection is being resolved. Contact us and we will suspend the processing concerned.
Objection
Where we rely on legitimate interests, which is only the security and anti-abuse processing, the handling of feedback you send us and the operation of the site itself, you can object on grounds relating to your situation. We will stop unless we can show compelling legitimate grounds that override your interests. We do not process for direct marketing outside the newsletter you opted into, and you can leave that at any time.
Complaint to a supervisory authority
You can complain to the Autoriteit Persoonsgegevens, Postbus 93374, 2509 AJ Den Haag, Netherlands, autoriteitpersoonsgegevens.nl. If you live in Belgium, Germany, France or another EU country, you can also complain to your own national authority or to the court where you live. We would appreciate the chance to fix it first, but you are not obliged to come to us before going to them.

Withdrawing your consent

Four things run on consent: the newsletter, each chess platform or federation link, your chosen home country, and the reply address you may leave with feedback.

You can withdraw any of them at any time and just as easily as you gave it. For the newsletter, use the unsubscribe link in any newsletter email, which deletes your record. For a linked platform, press unlink on your account page, which removes the link immediately and stops us fetching anything from that platform. For your home country, select “No country selected” on your account page. For a reply address you left with feedback, write to contact@chesscentrum.com and we will remove it.

Withdrawing consent does not make the processing that already happened unlawful, and it has no effect on your account itself, which rests on the contract with you rather than on consent.

Do you have to give us your data

None of it is required by law, and you can use most of the site without giving us anything at all: the tournament, club, shop, casual-chess, accommodation, map, carpool and miles pages, and the demo dashboard, all work signed out.

What is required is contractual, in the sense that a feature cannot work without it.

  • No email address means no account, because we would have no way to verify you or to let you recover it.
  • No password, or no completed federated sign-in, means no way to authenticate you.
  • An unverified email address means you cannot sign in, because verification is a blocking step by design.
  • No linked platform or federation identifier means your dashboard shows the anonymised demo instead of your own games.
  • No email address and no consent box means no newsletter.
  • Refusing the session cookie in your browser means you cannot stay signed in, because there is no other way to recognise your browser between requests.

Automated decision-making and profiling

We make no automated decisions that produce legal effects for you or similarly significantly affect you, within the meaning of Article 22 GDPR. Nothing on ChessCentrum is approved, refused, priced or ranked by an algorithm judging you.

The dashboard does compute things from your own games. The skill radar derives objective axes such as your score, your results with White and Black, opponent level, opening variety, resilience, activity and consistency from the window of games we fetched, and the optional engine check adds accuracy, tactics and endgame axes computed in your browser. These are descriptive statistics about chess, shown only to you, with no consequence beyond being displayed. Where there is not enough data for an axis, we show a dash rather than invent a number.

We do not profile you for advertising, we do not score you for creditworthiness or eligibility, and we do not share any of this with third parties.

Children

You must be at least 16 to create a ChessCentrum account, which is the age of digital consent in the Netherlands. If the law where you live sets a lower age, that age applies to you. Below the age that applies, a parent or guardian must agree and create the account with you.

We do not currently verify age automatically; sign-up relies on what you tell us. If you are a parent or guardian and an account was created by a child under that age, write to contact@chesscentrum.com and we will delete the account and everything attached to it. Chess is full of talented young players, and we would rather handle this honestly than pretend a checkbox solves it.

The demo dashboard shown to signed-out visitors uses a deliberately anonymised profile with fictional players. It contains no real name, no federation or platform identifier, and no real person's game history. It was anonymised on purpose and will stay that way.

What we do not do

It is as useful to know what is absent. All of the following are true today, and if any of them changes we will update this policy before the change goes live.

  • No advertising, no advertising network, no tracking pixels and no data sold or shared for marketing.
  • No analytics beyond the Google Analytics described under “Cookies and similar technologies”: it runs only if you accept, and declining changes nothing else about the site. No telemetry and no session replay of any kind. Errors are recorded first-party, as described under “What we store about you”: no third-party error-tracking service is installed, and an error record contains no IP address, account, cookie or browser header.
  • No payments. Nothing here can charge you: no payment provider receives any data from us, and our database has no column for a card number, an IBAN or any other payment credential. Free registrations and RSVPs do exist and are described above, but they never involve money. When we do turn payments on, this policy will name the provider first.
  • No storing of your score-sheet photo. By default it never leaves your device; if you explicitly choose the optional cloud reading for a photo, that photo is processed transiently and never stored by us — the provider deletes it after processing (see “Processing that stays on your device”).
  • No storing of your opponents. Saved games have no player name or rating field.
  • No carpool data. The form shows a confirmation in your browser and sends nothing.
  • No selling, renting or trading of personal data, ever, under any circumstances.

Changes to this policy, and language versions

This version is dated 12 September 2026. When we change it we update that date and, for a change that materially affects you, we say so on the site and, where the change concerns the newsletter, in the newsletter itself. We will never widen what we do with data you already gave us without telling you first and, where consent is the basis, asking again.

This policy is published in Dutch and in all the other languages of the site. In case of a discrepancy the Dutch version prevails, except that as a consumer you may always rely on the version in your own language where it grants you more.

Questions, requests or corrections: contact@chesscentrum.com.

Cookies and analytics

We'd like to use Google Analytics to see how the site is used. It runs only if you accept — declining changes nothing else about the site. Read more in our privacy policy