Privacy

QuickDrop is designed with privacy as a core principle. We don't track you, and we don't want to.

What we store

  • File metadata — name, size, type, expiry date. Stored in D1 until the file expires or is deleted.
  • Upload/download counts — for delete-after-download and rate limiting.
  • Country code — from Cloudflare's CF-IPCountry header, used for anonymous aggregate analytics (never linked to a specific user).
  • Encrypted password hash — if you set a password, only a PBKDF2-SHA256 hash is stored.

What we do NOT store

  • Email addresses or phone numbers
  • IP addresses (transiently used in KV for rate limiting with a 24h TTL, then discarded)
  • Cookies, tracking pixels, or analytics scripts
  • Browser fingerprints or user agents
  • Personal identifiers of any kind

File storage

File content is encrypted in your browser before transmission. The server only receives opaque encrypted blobs, which are stored in a private Telegram chat or Cloudflare R2 bucket. The original filename, type, and contents are never visible to the server or storage backend. Only the intended recipient — who has the share URL with the decryption key — can decrypt and view the file.

The share link contains a random token and a decryption key. The token cannot be guessed — only someone with the exact link can access the file.

Our Telegram group has a server-side auto-delete timer of 7 days as a safety net, but this is separate from the per-file expiry you select. Since only encrypted blobs are stored in Telegram, any cached copies are unreadable. The authoritative deletion is our D1 soft-delete: the share link stops working immediately, and the file's metadata is gone. The encrypted blob remaining in Telegram's cache is worthless without the key.

Upload history (browser only)

Your recent uploads are stored only in your browser's localStorage. This data never leaves your device. Clearing your browser cache will remove it.

Data retention

Files are permanently deleted when the selected expiry period ends (1h to 7d). If "delete after first download" is enabled, the file is deleted immediately after the first download. Deleted files cannot be recovered.

Encryption

All transfers are encrypted in transit via HTTPS/TLS.

Files are also encrypted at rest. Before a file leaves your browser, it is encrypted with AES-256-GCM using a cryptographically random key. The encrypted blob — containing the filename, MIME type, and file data — is then sent to the server.

The decryption key is embedded in the share URL as a fragment (#), which is never transmitted to the server. Your browser reads the key locally from the URL, fetches the encrypted blob, and decrypts it in memory. Neither Cloudflare, Telegram, nor the QuickDrop operator can read your files.

Third parties