Legal
Privacy policy
This policy explains, in line with Articles 13 and 14 of the General Data Protection Regulation (GDPR), which personal data is processed when you use this website, on what legal basis, and for how long.
Last updated: 16 October 2026
1. Controller
The controller responsible for the processing is:
- Marco Frömbgen
- E-Mail: contact@portioncheck.com
2. Data minimisation as a principle
This service uses no user accounts, newsletter or advertising profiles. Public production pages use free Cloudflare Web Analytics to measure page views, referrers, browser information and loading performance, including generic element selectors for performance measurements. Cloudflare does not use analytics cookies, local storage or fingerprinting for these metrics. Stack, watchlist, comparison and search pages, local development and previews do not load the beacon. Query parameters are excluded except for one public numeric product-variant selector; fragments are excluded. Personal selection contents, doses, target prices and push capabilities are not sent to analytics. Optional favorites, price alerts and community votes process the data described below. No email address is needed for these features.
3. Hosting and server log files
The site is hosted through Cloudflare Workers on the global network of Cloudflare, Inc., 101 Townsend Street, San Francisco, CA 94107, USA. Cloudflare's Data Processing Addendum under Article 28 GDPR forms part of its contractual terms. Data may be processed outside the European Economic Area, particularly in the United States. For transfers to the United States, Cloudflare relies on its EU-U.S. Data Privacy Framework certification. Where this does not apply, EU standard contractual clauses and any necessary supplementary safeguards apply. When you open a page, technically necessary access data is processed in server log files:
- the truncated or full IP address of the requesting device
- the date and time of the request
- the address requested and the volume of data transferred
- the referrer address, if your browser sends one
- browser type, browser version and operating system
4. Legal basis and deletion of log files
The legal basis is Article 6(1)(f) GDPR. The legitimate interest lies in delivering the site without technical faults, in its stability and in defending against attacks. Log files are deleted after 7 days at the latest, unless they are needed longer to investigate a specific security incident.
5. Discount codes and shop links
The discount codes shown are publicly available codes of the shops. No partner codes, no tracking links and no advertising networks are used. A code is printed on the page and entered in the shop only — no data is transferred to third parties beforehand.
- A link to a shop is an ordinary link. When you click it, your browser sends your IP address, the time and the target page to the shop, exactly as with any other link. Which cookies the shop sets is its own responsibility and its privacy notice applies.
6. Stack, watchlist and community votes
When you record which supplements you take, those entries may be health data under Art. 9(1) GDPR. The application does not store your stack in a database. The optional features work as follows:
- Your stack is stored in this browser, without an account. Product selections and doses are sent to PortionCheck in a request body to calculate totals, but are not stored as a stack in our database or sent to analytics or advertisers. Browser data deletion removes the local stack. Optional share links contain the selection in the address; opening a link sends it to our server and may put it in logs. Anyone with that link can see the selection. Importing a shared link explicitly replaces the local stack.
- Favorites, target prices and last observed prices are saved in browser local storage under portioncheck.watchlist.v2. Earlier portioncheck.watchlist.v1 targets require confirmation. Remove an item or clear site data to delete local entries. Selected product IDs are sent to our server for price checks. Targets remain local unless you separately enable background alerts.
- Browser notifications require your explicit permission. Local checks run when the watchlist opens and every five minutes while visible. Optional background alerts require a separate click confirming the displayed product-only targets. We then store the browser push endpoint and encryption keys, language, selected product IDs, target prices and recent comparison state. No stack data is included. The HttpOnly cookie pc-push lets this browser manage its subscription for 90 days; the server stores only a hash of its random secret. Clearing this cookie prevents this browser from managing the saved subscription. Use Disable all background alerts before clearing site data.
- Background alerts use your browser's push service (Google, Mozilla or Apple). Notification content is encrypted for the browser; its provider still handles delivery metadata. Delivery depends on browser and operating-system support. You can remove individual saved server targets or disable all background alerts, including when permission is revoked or new registrations are disabled. Local watchlist changes do not update server targets automatically. Revoking browser permission alone does not delete server records; a request already being delivered cannot be withdrawn.
- When you vote, a random browser identifier is stored in the HttpOnly cookie pc-voter for one year. Our server stores your positive or negative vote linked to that identifier and the product variant. It is pseudonymous feedback, not a verified purchase review or laboratory result. Tap your selected vote again to remove it. Clearing the cookie does not delete a server-side vote and prevents that browser from identifying it.
7. Recipients and processors
We pass on personal data only where this is necessary to provide the service or where a legal obligation exists. The hosting provider is our processor under a contract conforming to Art. 28 GDPR. We do not sell data.
8. Retention periods
We store personal data only for as long as it is needed for the respective purpose:
- server log files: 7 days
- email enquiries: until they are dealt with, then until statutory retention periods expire
- watchlist data: in your browser until you remove it or clear site data
- Background subscriptions and targets: until disabled or 90 days after the last explicit save; queued delivery events: at most 24 hours. Expired data is deleted on the next scheduler cleanup. The browser retains at most 100 deduplication event IDs; entries older than 24 hours are removed when another push arrives.
- voter cookie: one year from the latest vote action; server-side votes remain until removed and do not expire with the cookie
9. Your rights
You have the following rights against the controller:
- access to the data processed, under Article 15 GDPR
- rectification of inaccurate data, under Article 16 GDPR
- erasure, under Article 17 GDPR
- restriction of processing, under Article 18 GDPR
- data portability, under Article 20 GDPR
- objection to processing based on legitimate interests, under Article 21 GDPR
10. Right to lodge a complaint with a supervisory authority
Irrespective of the above, you may lodge a complaint with a data protection supervisory authority under Article 77 GDPR, in particular with the authority of your habitual residence, your place of work or the place of the alleged infringement. The authority responsible for us is Der Landesbeauftragte für den Datenschutz Niedersachsen, Prinzenstraße 5, 30159 Hannover, Germany.
11. No automated decision-making
There is no automated decision-making, including profiling, within the meaning of Article 22 GDPR. The order in which products appear follows the published comparison criteria and not any analysis of your behaviour.
12. No obligation to provide data
Providing data is neither required by law nor by contract. Without the technically necessary access data, however, the page cannot be delivered to you.
13. Changes to this policy
We update this policy when the law, the service or our data processing changes. The version published on this page is the one that applies.