§ Legal text
Privacy Policy
For the Kiebitz app (Desktop and Android) and this website. Kiebitz is a local-first application: your data stays on your devices, and the provider operates no server that receives your content.
01Controller
The controller within the meaning of the General Data Protection Regulation (GDPR) for providing the app and this website is:
No data protection officer has been appointed, as the conditions of Art. 37 GDPR are not met. For any privacy question, an email to the address above is enough.
02Principle: local-first
Kiebitz processes your chess data exclusively on your own devices. There is no user account, registration, cloud storage or Kiebitz server to which games, analyses or training progress are transmitted. These contents are not shared with ad providers either. The only exception arises if you share a position yourself: the link carries the position in its address, and opening it calls up a page operated by the provider (section 14).
Kiebitz Free may display ads. For this purpose the app connects to Google Mobile Ads, and Google may process technical device and usage data. Anonymous usage statistics without any chess data are on out of the box; you can switch them off in the settings (section 7). Crash reports are never transmitted automatically. All network connections are listed in section 4.
03What the app stores locally
Kiebitz keeps its data in a local SQLite database and in local configuration files inside the operating system's application data directory (Windows: the application data directory of your user account; Android: the app's private directory, not readable by other apps). Stored are:
- imported games with metadata (date, opponent name, Elo values, time control, opening, result, moves, source)
- engine analysis results (evaluations per move, move classification, accuracy)
- repertoire tree and FSRS review data, puzzle progress and puzzle Elo, endgame results, study plan and checklists
- your own notes and tags on games and moves
- settings, including the chess.com and Lichess usernames you entered, language, engine options and, if you paired a phone, the address, pairing code and certificate fingerprint of the sync hub
- cached responses of the optional online opening book (up to 30 days)
This data does not leave your device unless you export it yourself (for example as a PGN file) or synchronise it with a second device of your own (section 6).
04Network connections made by the app
The app establishes only the following connections. All other functions work offline.
| Destination | When | Data transmitted |
|---|---|---|
| api.chess.com | on the game import you trigger (or automatically if you enable auto-import) | the chess.com username you entered as part of the request, plus technically necessary connection data (the IP address of your connection) |
| lichess.org | on the game import you trigger | the Lichess username you entered, plus technically necessary connection data |
| chessdb.cn | only if you enabled the online opening book in the settings, and only on the Analysis page | the position currently shown (FEN) plus technically necessary connection data. With the option disabled, no request is made. |
| github.com / objects.githubusercontent.com | on the desktop app's update check and when you install an update | retrieval of release information and the update file, plus technically necessary connection data |
| Google Mobile Ads / AdMob and Google UMP | in Kiebitz Free: to obtain privacy choices and, only where permitted by those choices, to deliver and measure advertising | Google may process the IP address (and derive approximate location), app and ad interactions, diagnostic information, and device or account identifiers such as the advertising ID and app set ID. Games, analyses, notes and training data are not transmitted. |
| api.kiebitz.dev (usage statistics) | once a day when the app starts, as long as anonymous usage statistics are switched on (on out of the box, can be switched off under “Settings → Ads & privacy”). Switched off, nothing is transmitted. | a random identifier for this installation generated on your device, the date, operating system, install source (direct download, Play Store, sideload), app version and whether Kiebitz Plus is active, plus technically necessary connection data. The server keeps the identifier only as a checksum (HMAC) and cannot link it to an account. Games, analyses, notes, training data, name and email address are not transmitted. |
Sharing: The link to a shared position is created on your device. The app transmits nothing in the process. Only when someone opens the link does the position reach the server that delivers the page, as part of the address (section 14).
These services are independent third parties and process the data named above under their own privacy terms. Advertising processing is limited to Kiebitz Free; chess content is not sent to any of these services as advertising data.
05Device permissions
- Camera (Android): solely to scan the QR code for device pairing. The permission is requested only at that moment. No photos or videos are stored, processed or transmitted; only the text contained in the QR code is read.
- Internet / network access: for the requests listed in section 4 and for sync on the local network.
- Notifications: optional, for local training reminders. They are generated on the device, without any push service.
- File access: only when you import or export a PGN file yourself, through the operating system's file picker.
06Device sync on the local network
When you pair desktop and phone, only your own devices connect to each other. The desktop acts as the hub; the phone receives the address, pairing code and TLS certificate fingerprint from the QR code shown on screen. The transfer runs encrypted (TLS with fingerprint verification) directly over your local network or a VPN you set up yourself.
There is no intermediary server, no relay and no provider access. Without pairing there is no sync; you can remove the pairing in the settings at any time.
07Advertising and privacy choices
Kiebitz runs no automatic crash reporting and no remote logging. Games, analyses, notes and training data are not sent to Google as advertising data. Kiebitz makes no automated decisions within the meaning of Art. 22 GDPR.
Anonymous usage statistics. So that the provider knows how many installations exist, the app sends a daily heartbeat to api.kiebitz.dev. It contains only: a random identifier for this installation generated on your device, the date, the operating system, the install source, the app version and whether Kiebitz Plus is active. It contains no chess data, no name and no email address; the server keeps the identifier only as a checksum, cannot link it to an account and does not combine it with advertising data. The statistics are on out of the box; you can switch them off at any time under “Settings → Ads & privacy”. That ends the transfer immediately and deletes this installation's identifier; switching them on again later creates a new one. The legal basis is Art. 6(1)(f) GDPR — the legitimate interest in knowing how widely the app is installed and which versions are in use, without touching accounts or chess data. The switch is also your objection under Art. 21 GDPR.
The Android version of Kiebitz Free uses Google Mobile Ads. Before an ad request, Google’s User Messaging Platform (UMP) updates the consent status and, where required, presents a choice. You can reopen it under Settings → Ads & privacy. Even non-personalized or limited ads may process technically necessary data such as the IP address and data for security and fraud prevention. You can also reset or delete the advertising ID in Android’s system settings.
The desktop version of Kiebitz Free loads a static advertising surface from this Kiebitz website via GitHub Pages. No chess data, Kiebitz user identifier, cookies or advertising ID are transmitted, and the app suppresses the referrer. GitHub processes technically necessary connection data such as the IP address and browser identification in server logs when the surface is requested. Creatives are loaded from the same website. Only after you click an advertisement does the advertiser's destination open and receive its own connection data. The legal basis for this contextual delivery is Art. 6(1)(f) GDPR (financing and operating the free version). If no campaign is active, the advertising surface remains hidden.
08Kiebitz account and Kiebitz Plus
A Kiebitz account is optional; Kiebitz Free works without one. If you create one, the provider processes your email address, a pseudonymous hash of that address, hashes only of the sign-in and session tokens, timestamps of creation and sign-in, the entitlement status (free, Plus, trial, term) and encrypted purchase references. No chess data is transmitted: games, analyses, notes, training and progress data stay on your devices. The account API runs at api.kiebitz.dev on Cloudflare infrastructure (Cloudflare Germany GmbH / Cloudflare, Inc.).
Sign-in links are sent through Resend (Resend, Inc., USA); the recipient address, the one-time link and delivery metadata are transmitted. Payments for Kiebitz Plus are handled by Stripe (Stripe Payments Europe, Ltd., Ireland, with Stripe, Inc., USA). Payment and invoice data stay with Stripe; Kiebitz receives a customer reference, the subscription status and the term, but no full payment details. If Kiebitz Plus is bought through Google Play instead, the provider verifies the subscription status via the Google Play Developer API (Google Ireland Ltd. / Google LLC). With these providers, processing in third countries, in particular the USA, is possible.
If you sign in on this website (pages /plus/, /plus/account/ and /plus/success/), the API sets a strictly necessary session cookie (__Host-kiebitz_session, HttpOnly, Secure, SameSite=Lax, 30 days). It contains no chess data, is not used for analytics or advertising and is exempt from consent under § 25(2)(2) TDDDG. The app uses a session token instead and stores it, together with the signed entitlement, in the operating system’s credential store. The signed entitlement contains an account identifier, the plan, the feature list and the term; it is verified locally and falls back to free by itself once it expires.
The legal basis for account, subscription and unlocking is Art. 6(1)(b) GDPR (performance of the usage and subscription contract), for abuse and rate limiting Art. 6(1)(f) GDPR, and for retaining billing records Art. 6(1)(c) GDPR. You can delete your account at any time in the app or at /plus/account/; if a subscription is still running it must be cancelled with the relevant provider first. Deletion removes sessions and sign-in links, anonymizes the email address in the account record and detaches purchase sources. The pseudonymous hash of the address and the fact that a free trial was already used are kept so that deleting and re-registering does not produce a second trial (Art. 6(1)(f) GDPR).
09Cancellation and withdrawal
On the pages Cancel contracts here and Withdraw from a contract you can submit your statement without signing in. Processed are:
- name and email address,
- payment route (Stripe, Google Play or unknown) and contract designation,
- for a cancellation additionally the type of cancellation and the requested end of contract,
- your voluntary reason or message,
- request number and timestamp of receipt.
To limit abusive bulk requests, the email and IP address are stored only as a hash; the plain addresses are not part of it. The purposes are receiving, evidencing and processing your statement. The legal bases are Art. 6(1)(b) GDPR (performance of the contract), Art. 6(1)(c) GDPR (legal obligations) and Art. 6(1)(f) GDPR (evidence of legitimate claims).
The confirmation of receipt is sent by email through Resend (Resend, Inc., USA). Legal requests are deleted after four years at the latest, rate-limiting data after two days.
10Legal bases
Where the app processes your chess data exclusively on your device, the provider has no access to it. The following apply in particular to individual network and advertising operations:
- Art. 6(1)(b) GDPR: providing the functions you requested, in particular importing your games from chess.com or Lichess and syncing between your devices.
- Art. 6(1)(a) GDPR: consent, wherever you enable a function or make an advertising choice: the optional online opening book (chessdb.cn), camera access for QR pairing, notifications, personalized advertising and device access requiring consent. You can revisit advertising choices under “Settings → Ads & privacy” and withdraw other permissions in the app or system settings.
- Art. 6(1)(f) GDPR: legitimate interest in secure, up-to-date software (checking for program updates) and in reliable figures on how widely the app is installed and which versions are in use (anonymous usage statistics, section 7). The statistics are on out of the box and can be switched off under “Settings → Ads & privacy”, which is also the objection under Art. 21 GDPR.
11Retention and deletion
Your local chess data stays stored for as long as you want to keep it; Kiebitz operates no server-side storage for that data. At any time you can:
- delete individual games, notes, tags or repertoire entries inside the app,
- remove the pairing with another device,
- uninstall the app, which removes the local app data (on Android additionally via “clear app data”, on Windows by deleting the application data directory),
- export your data as PGN beforehand if you want to keep it.
Retention of technical data processed by Google Mobile Ads is governed by Google’s own terms. You can reopen your advertising choices in Kiebitz and reset or delete the advertising ID in Android.
As long as the anonymous usage statistics are switched on, the individual daily entries are deleted after 60 days. Beforehand they are condensed into monthly totals without any device reference (the number of active installations per month, operating system, install source, version and tier); those totals are kept as statistics and allow no conclusions about an individual installation. If you switch the statistics off, this installation's identifier is deleted on the device and no further entries are created; daily entries already recorded expire after the period stated above.
12Children
Kiebitz is not specifically directed at children. Advertising is subject to the age, consent and child-safety rules provided by Google and Google Play; if the app is classified for children, the applicable Families and advertising requirements must also be met. The terms of the respective chess platform apply when importing games.
13Your rights
Under the GDPR you have the rights of access (Art. 15), rectification (Art. 16), erasure (Art. 17), restriction of processing (Art. 18), data portability (Art. 20) and objection (Art. 21), as well as the right to withdraw consent at any time (Art. 7(3)).
Kiebitz stores no chess data about you in its own backend; you can view, export and delete local data yourself. For Kiebitz requests, email support@kiebitz.dev. You can also exercise rights relating to advertising data processed by Google through Google’s privacy controls.
You also have the right to lodge a complaint with a data protection supervisory authority. The competent authority is the State Commissioner for Data Protection and Freedom of Information of Rhineland-Palatinate, Germany; you may also contact the authority where you live.
14This website
This website is static and delivered via GitHub Pages (GitHub, Inc., 88 Colin P. Kelly Jr. Street, San Francisco, CA 94107, USA). When you visit it, GitHub as the host processes technically necessary connection data in server log files, in particular your IP address, date and time, the file requested, referrer and browser identification. The legal basis is Art. 6(1)(f) GDPR (secure, trouble-free operation). The provider of this website has no access to these log files.
Audience measurement: The publicly accessible website pages use Cloudflare Web Analytics (Cloudflare, Inc.). They load a script from static.cloudflareinsights.com. It records page views and visits together with the requested path, referrer, country, device type, browser, operating system and technical performance metrics; Cloudflare also processes technically necessary connection data such as the IP address when the script and measurements are transmitted. Analytics uses no cookies or localStorage, creates no persistent user identifier and does not fingerprint visitors. Results are aggregated; a “visit” is not a uniquely identified person. The legal basis is Art. 6(1)(f) GDPR (legitimate interest in the website’s reach, useful content and technical quality). Cloudflare information: Web Analytics and privacy policy.
Apart from Cloudflare Web Analytics, the publicly accessible website pages use no advertising or social media scripts. The advertising surface embedded only in Kiebitz Desktop does not receive the analytics script and uses a local script to select active campaigns, but likewise uses no cookies, storage, user identifiers, analytics or third-party scripts. Fonts, styles and advertising creatives are served from the same server. The language you choose on the website is stored only locally in your browser (localStorage) so the page appears in the same language next time; that setting is not transmitted. GitHub's privacy statement: docs.github.com.
Feedback form: Only when you submit a report are the entries you provided (report type, summary, details and, optionally, platform, app version and email address) and technically necessary connection data transmitted to FormSubmit (formsubmit.co) and forwarded from there to the provider by email. No data is automatically read from or attached by the app. According to its own documentation, FormSubmit retains submissions for up to 30 days for delivery and retrieval. The legal basis is Art. 6(1)(b) GDPR where you request support, and otherwise Art. 6(1)(f) GDPR (handling voluntary feedback and improving the software). The email received by the provider is deleted once it is no longer needed to handle the report or follow-up questions. FormSubmit information: privacy and documentation.
Shared positions: When you share a position in the app, a link on s.kiebitz.dev is created. The position sits inside the address of that link; nothing is stored for it at the provider, and there is neither a database nor a record. When someone opens the link, a Cloudflare Worker (Cloudflare, Inc.) answers it: it reads the position out of the address, draws the page and the preview image from it, and then discards it. In doing so Cloudflare, as processor, handles technically necessary connection data such as the IP address, time, requested address, referrer and browser identification; the same audience measurement as on the rest of the website runs there too (see above), without cookies and without a persistent identifier. The legal basis is Art. 6(1)(f) GDPR (delivering the requested page and a legitimate interest in its reach). The link contains only the position, where applicable the associated moves, evaluation, puzzle rating and the heading you type yourself; it contains no player names, games, notes or training data. Whoever has the link can see the position: it is neither secret nor revocable, because there is nothing on the server to delete. So share only what you mean to pass on. These pages are excluded from search engines. Cloudflare's privacy policy: privacy policy.
15Changes to this policy
If the app gains functions that involve new data processing, this policy will be updated beforehand. The current version is dated above and permanently available at this address.
Questions about privacy? Write to support@kiebitz.dev. The app's source code can be inspected at github.com/kiebitz-dev/Kiebitz.