You upload a file. You share the link. Days or weeks pass. Then — poof — the link stops working. What actually happened? Here is the complete file lifecycle on fff files.
Phase 1: Upload (0 seconds)
You drag a file onto the upload area. Behind the scenes:
- Your browser sends an "init" request — filename, size, content type
- The server generates a random file ID, upload token, and a presigned URL
- Your browser uploads the file directly to Cloudflare R2 storage — zero bytes pass through our Worker servers
- Your browser sends a "confirm" request with the upload token
- Metadata (filename, size, expiration date) is stored in D1 (SQLite)
Total time: typically 1-5 seconds depending on file size and connection speed.
Phase 2: Active (7-90 days)
The file is live. Anyone with the link can download it. Key details:
- File stored on Cloudflare R2 in the EU (EEUR region — Vienna)
- Encrypted at rest (AES-256)
- Download count tracked in D1 metadata
- Delete token active — you can remove the file at any time
- Abuse reports accepted — files violating terms are deleted immediately
Phase 3: Soft Expiry (expires_at timestamp)
When the file reaches its expiration date:
- The download link stops working — visitors see "File Expired" page
- File metadata is marked as "expired" in D1
- The actual file still exists in R2 (soft delete) — recoverable within 30 days if needed for abuse investigation
Phase 4: Hard Delete (expiry + 30 days)
30 days after expiry:
- The file is permanently deleted from R2 — no recovery possible
- Metadata is retained in D1 for abuse tracking (filename, size, upload timestamp — no personal data)
- Rate limit counters from the upload session expire naturally
Phase 5: Metadata Retention
Even after hard delete, minimal metadata persists:
- Anonymized record: file size, content type, upload date, expiration date
- No filename, no IP hash, no identifiable information
- Used only for aggregate statistics and abuse pattern detection
- Eventually rotated out as database grows
Early Deletion (Manual)
If you use the delete token before the expiration date:
- The file is immediately soft-deleted (download link stops working)
- Hard delete follows after 30 days (same as natural expiry)
- No recovery possible after using the delete token
Cron Cleanup Schedule
Our cleanup process runs every 15 minutes and handles:
- Marking newly-expired files as "expired"
- Hard-deleting files that reached their 30-day post-expiry window
- Cleaning up abandoned uploads (initiated but never confirmed)
Upload a file and see for yourself →