Skip to content
Diff

Privacy policy

Last updated: [PLACEHOLDER: date of publication]

Draft. This page has not had legal review and may change. Items marked [PLACEHOLDER: …] still need to be filled in by the operator.

Summary

  • Comparisons run in your browser. The text you compare is not sent to our servers unless you are signed in and choose to save it.
  • There are no ads, analytics, tracking pixels, or third-party trackers.
  • We use only the cookies needed for sign-in and for unlocking password-protected share links, so there is no cookie banner.
  • You can export or delete your saved data at any time.

Who runs Diff

Diff is operated by [PLACEHOLDER: operator legal name and address]. For privacy questions or requests, contact [PLACEHOLDER: privacy contact email or other contact method]. For anything else, contact [PLACEHOLDER: general contact email].

What we process and why

Comparing text

When you paste text or open a file, the comparison is computed in your browser. Neither the text nor the result is sent to us, stored on our servers, or saved in your browser's storage. Inputs are limited to 200 KiB per side.

Your account

Sign-in is provided by Clerk. When you create an account, Clerk processes your sign-in details (such as your email address and, if you use a social login, basic profile information from that provider) so you can sign in. We receive a user ID from Clerk and use it to link saved comparisons to you.

Saved comparisons

If you are signed in and choose to save, we store the title, the original text, the changed text, timestamps, and the expiration you selected. We use this only to show your saved comparisons back to you and to anyone you share them with.

Share links

If you share a saved comparison, we store a random link token and whether the link is enabled. Anyone with the link can view the title and both texts, so only share links with people you trust. If you add a password, we store only an Argon2id hash of it, never the password itself. You can disable a link, change its password, or create a new link at any time, and the old link stops working.

Abuse prevention

To limit password guessing on protected links, we count failed attempts. These records are keyed by a keyed hash (HMAC) of your IP address, not the raw address, and they expire automatically after a short period.

Logs

Our application logs record only fixed event names and error types. They do not include the text you compare or save, titles, passwords, or IP addresses. Our hosting provider processes standard request information (such as IP address and user agent) to deliver the site and keeps its own platform logs under its policies.

Legal basis: [PLACEHOLDER: legal bases for processing, if applicable in your jurisdiction].

Cookies and local storage

We set only cookies that are needed for the site to work:

  • Clerk authentication cookies. When sign-in is enabled, Clerk sets cookies (for example __session and __client_uat) to keep you signed in and to check your sign-in state. Some of these may be set before you sign in. Their names and lifetimes are set by Clerk.
  • diff_unlock is set only after you enter the correct password for a protected share link. It is signed, HttpOnly, sent over HTTPS only, limited to that one link's path, and lasts at most 60 minutes. It stops working early if the owner changes the password or creates a new link.

In your browser's local storage we keep only your theme preference (light, dark, or system) under the key theme. We don't use cookies or storage for advertising, analytics, or tracking, so we don't show a cookie banner.

Service providers

We use these providers (processors) to run Diff:

  • Vercel hosts the site and runs the application. Region: [PLACEHOLDER: Vercel function region].
  • Clerk provides sign-in and account management. During sign-up Clerk may use Cloudflare Turnstile to block bots. Region: [PLACEHOLDER: Clerk data location].
  • Neon hosts the Postgres database that stores saved comparisons, share links, and attempt records. Region: [PLACEHOLDER: Neon database region].

Full list of subprocessors and hosting locations: [PLACEHOLDER: subprocessor list and hosting locations].

Agreements and configuration

For each provider, the operator takes these steps:

  • Review and accept the provider's data processing agreement (DPA), including any transfer terms. Status: [PLACEHOLDER: DPA status and date for Vercel, Clerk, and Neon].
  • Vercel: choose the function region, and leave Web Analytics and Speed Insights turned off.
  • Clerk: collect only the sign-in fields that are needed, enable only the sign-in methods in use, and keep Clerk telemetry turned off (it is disabled in the app).
  • Neon: choose the database region and review the backup and restore window.

International transfers: [PLACEHOLDER: transfer mechanism, if applicable].

How long we keep data

  • Saved comparisons are kept until the expiration you choose (1 hour, 24 hours, 7 days, 30 days, 90 days, 180 days, or 1 year) or, if you choose Never, until you delete them. Expired comparisons stop being available right away, and a daily cleanup job deletes them permanently. Deleting a comparison also deletes its share link and attempt records.
  • Attempt records for protected links expire on their own and are removed by the same daily cleanup.
  • Your account is kept until you delete it. Clerk retains account data under its own policies.
  • Backups: deleted data may remain in database backups for [PLACEHOLDER: backup retention period] before it is overwritten.

Security

We take reasonable measures to protect your data, including:

  • HTTPS everywhere, with HSTS.
  • A Content Security Policy, framing protection, and other security headers. Text is always displayed as plain text, never as HTML.
  • Saved comparisons are visible only to their owner unless shared. Share links use long random tokens, and private pages are excluded from search indexing.
  • Share passwords are hashed with Argon2id, and repeated guesses are rate-limited.
  • Unlock cookies are signed and short-lived.

No system is perfectly secure, and we can't guarantee the security of data sent to or stored by the service.

Your choices and rights

  • Access and export: download all your saved comparisons and sharing settings as JSON from your account page.
  • Delete: delete individual comparisons, all of them, or your whole account from the account page. Deleting your account removes your saved data first and then your Clerk account. If your Clerk account is deleted another way, your saved data is deleted too.
  • Don't save: you can use Diff without an account, and nothing you compare is stored.

Depending on where you live, you may have other rights: [PLACEHOLDER: applicable user rights, such as correction, restriction, objection, and the right to complain to a supervisory authority]. For help with any privacy request, contact [PLACEHOLDER: privacy contact email or other contact method].

Children

Diff is not directed at children. Minimum age to create an account: [PLACEHOLDER: minimum age].

Changes to this policy

We may update this policy. We'll change the date at the top and, for significant changes, [PLACEHOLDER: how users will be notified].