Privacy Policy

Last updated: 24 May 2026 (record bot family label for crawler analytics)

1. Who We Are

CritIndex is operated at critindex.com. For GDPR purposes, we are the data controller for personal data you provide directly to us. Questions or requests can be sent to [email protected].

2. Data We Collect

Account data

When you register: username, email address, and a hashed password. Plain-text passwords are never stored. If you sign in with Google, Apple, or Microsoft, we also store the provider name and the stable provider-side user id so we can recognise you on the next sign-in. We do not receive your provider password.

Sign-in links by email

If you ask for a one-time sign-in link, we store your email, a hashed copy of the link token, and the IP address that asked for it. The row is deleted 15 minutes after it expires or as soon as the link is used.

Webserver logs

The usual request logs: IP address, browser type, pages visited, timestamps. We keep these for up to 30 days for security and debugging.

Aggregate page views

A separate self-hosted counter records which pages were viewed, with country code, a coarse device class (mobile, tablet, desktop, bot), and a one-day-salted hash of the IP. The rows can't be tied back to a person. More on the design in §7.

Scroll-deck engagement

When you use the scroll deck (the full-screen article view on mobile), we record, anonymously and only in aggregate, which articles your cards showed and how long you spent there. It's tied to a one-day-salted hash of your IP — the same as page views — plus a coarse device class; it can't be linked to an account or a person. More on the design in §7.

Community content

Reviews and ratings you submit, with the date. For anonymous ratings we also store a hashed IP address so the same person can't rate the same article twice.

Saved articles

When you save an article, we store the article id, the time you saved it, and (if you mark it read) the time you cleared it. Tied to your account, only visible to you, removed when you unsave.

Writer comparisons

When you compare two writers, we store which pair you opened and the month, tied to your account. We use this only to count comparisons against the free monthly limit. It is not shown to anyone else.

Payment data

Billing runs entirely through Lemon Squeezy. We don't receive or store card numbers. Lemon Squeezy may share your email and country with us so we can manage your subscription.

3. How We Use Your Data

  • To provide and maintain the service
  • To enforce rate limits and prevent abuse (IP-based anonymous ratings)
  • To manage your subscription via Lemon Squeezy
  • To send transactional emails (account confirmation, password reset)
  • To email you about activity in your follows (a writer you follow publishes, someone replies to your review, a writer covers something you follow). You can turn these off on your profile notifications page.
  • To improve the platform based on aggregate, anonymised usage patterns

We do not sell your data. We do not use your data for advertising.

4. Legal Basis (GDPR)

  • Contract: processing your account and subscription
  • Legitimate interests: server logs, abuse prevention
  • Consent: any optional email communications (easily withdrawn)

5. Data Retention

  • Account data: kept for as long as your account is active. You can ask us to delete it at any time (see §8).
  • Anonymous rating IP hashes: kept for 12 months, then dropped.
  • Sign-in link rows: deleted once the link is used or 15 minutes after it expires.
  • Webserver logs: deleted after 30 days.
  • Aggregate page views: kept indefinitely. The daily-rotating IP hash, the missing User-Agent and the country-only geo mean a row can't be tied back to a person.
  • Scroll-deck engagement events: kept indefinitely in anonymised form, like aggregate page views.

6. Third Parties

  • Self-hosted infrastructure: the platform runs on privately owned server hardware
  • Cloudflare: sits in front of the site for DDoS protection and TLS. Cloudflare sees every request, including IP addresses, before it reaches our server.
  • Sentry: error reporting. When something goes wrong on the server we send the error stack trace, request URL, and (for signed-in users) your account id to Sentry so we can fix it. We do not send request bodies or response bodies.
  • Lemon Squeezy: payment processing and tax collection (Merchant of Record). Only relevant if you subscribe.
  • IGDB (Twitch): source of game metadata. We call them; they do not receive any data about you.
  • Steam (Valve): only if you use the Steam library import on your follows page. When you do, we send the Steam ID you enter to Steam's public API to read your game list and playtime, so we can follow the studios behind the games you have played most. The Steam ID and the playtime are used for that one request and are not stored.
  • Google, Apple, Microsoft (sign-in only): if you choose to sign in with one of them, you are sent to their site to authenticate. They tell us your email, name, and a stable user id. They learn that you used your account to sign in to CritIndex; we learn nothing more than what they return.

No Google Analytics, Facebook Pixel, or third-party ad trackers.

7. Cookies, storage, and analytics

Two essential cookies, plus one always-on browser-storage key:

  • critindex_session cookie. Keeps you signed in.
  • XSRF-TOKEN cookie. Protects form submissions against cross-site request forgery.
  • theme in localStorage. Remembers your dark or light choice. Written the moment you click the toggle in the header.

If you have an account, four extra cookies remember the games and writers you've recently opened so the home page can show a "Pick back up" rail next time you visit. Each one holds a handful of IDs and expires after 30 days. None of these are written for signed-out visitors:

  • recent_games, up to five game IDs
  • recent_writers, up to five writer IDs
  • recent_series, up to five series IDs
  • recent_genres, up to four genre names

A small amount of localStorage holds your other preferences: recent searches, dismissed prompts, your place in the scroll deck, and your acknowledgement that you've read this notice. You can turn the preference cookies and the preference localStorage off at any time from Cookie settings in the footer. That clears them immediately and stops writing them going forward.

Page-view counting runs on the same self-hosted infrastructure and isn't shared with anyone else. It's built to stay anonymous: nothing in it is linked to your name or account.

  • IP addresses are hashed with a salt that rotates every midnight. The salt is never written to disk, so the original IP is unrecoverable and the same IP produces a different hash tomorrow.
  • The User-Agent is classified into a coarse device class (mobile, tablet, desktop, bot) and the raw string is dropped. For bot traffic we also record which family the crawler belongs to, like googlebot or claudebot, so we can see who indexes the site. That label is a short category name, not the raw User-Agent.
  • Only the country code is recorded, like NL. Never city or region.
  • A short-lived random session id dedupes views within one browsing session. It rotates on login and logout.
  • A cookie named ci_visitor holds a random id for 13 months so a repeat visitor counts as one person instead of several. It holds nothing else, isn't linked to your account, and isn't shared. It isn't renewed on each visit, so it expires 13 months after your first visit.

This follows the CNIL guidance for consent-exempt anonymous analytics, so page-view counting isn't behind the consent toggle. The Cookie settings panel always shows what's stored.

8. Your Rights (GDPR)

Under GDPR, EU residents have the right to:

  • Access the personal data we hold about you
  • Correct inaccurate data
  • Request deletion ("right to be forgotten")
  • Restrict or object to processing
  • Data portability
  • Lodge a complaint with your national data protection authority

To use any of these rights, email [email protected]. We'll get back to you within 30 days.

9. Changes

We update this page when things change. If we change anything material we'll email registered users. The "last updated" date at the top always reflects the current version.