Privacy Policy
Last updated: August 26, 2026
No tracking cookies. Not because of a regulation — because they're tacky. Here is everything we actually collect.
1. If you have an account
We store your email address, a hash of your password (bcrypt, via Supabase Auth — we never see or store the password itself), an optional display name if you set one, your plan, and the codes you create: slug, destination, optional nickname, and creation date. At signup we record when you accepted the Terms and which version.
2. If you scan a code
When someone scans a dynamic code, we record: the moment of the scan, the browser's user-agent string, and a coarse location (city, region, country) resolved from the IP at the network edge. The IP address itself is never stored — our infrastructure providers see it in transit, as any host does, but it never reaches our database. We assign no identifier to the person scanning — no cookie, no fingerprint, no visitor ID. The raw user-agent is kept so history can be reclassified as new bots appear; it describes a browser, not a person.
Static codes generated on the landing page never touch our servers at all — the code is built entirely in your browser.
3. Cookies
A first-party session cookie keeps you signed in (our auth library sometimes splits it into a few chunks — it is still one session, nothing more). There are no third-party cookies and no trackers, period. On our own pages we count visits with Vercel's cookieless analytics — aggregate, first-party, no cross-site anything, and it cannot follow you when you leave. The scan path has no page at all: nothing ever runs on your visitors' devices, and scan statistics are computed entirely server-side.
4. Legal basis and use
Account data is processed to provide the service (contract). Scan statistics are processed on legitimate interest: they exist so the code's owner can see aggregate numbers, and they are designed from the start to not identify anyone. We do not sell or share data with advertisers.
5. Where data lives
Our processors: Supabase (database and authentication), Vercel (hosting and private backup storage) and Resend (delivery of account emails, such as the signup confirmation — it processes your email address for that purpose and nothing else). Parts of this infrastructure run in the United States; the transfer is implemented with our providers' contractual safeguards (LGPD art. 33 / GDPR ch. V mechanisms), you are informed of it here, and your agreement to the Terms at signup is recorded with date and version.
6. Retention and deletion
Your data lives while your account lives. Deleting a code deletes its scan history; deleting your account deletes everything. Nightly operational backups of the redirect table (slug and destination only) are kept in private storage and expire on a 35-day rolling window.
7. Your rights
LGPD and GDPR give you access, correction, deletion, and portability. Access and portability are a button: your account page exports everything we hold about you as one JSON file. Codes and their history you manage directly in the dashboard, and the account itself — name, password, full deletion — lives in your account page. Deletion there is immediate in the live database — account, codes and scan history go together — and reaches our rolling backups as they expire, within 35 days. For anything else, write to support@qrcool.me and we'll answer within the legal deadlines.

