Don't trust us. Check.
The claim is simple: on this website, your file never leaves your device. Here is how to check it in a minute, without reading any code.
Three checks
- The counter. Under the cleaner, the page counts every network request it makes after your file arrives, from the browser's own resource timing. Clean a file and watch it stay at 0.
- The network panel. Open your browser's developer tools (F12), choose Network, then clean a file. No request carries it.
- Offline. Load the page, turn off Wi-Fi or switch to aeroplane mode, and clean a file. It works, because nothing needed sending.
What the page loads
The site's own HTML, script, styles, font and images, all from filesanity.com. No advertising and no tracking pixel. Two scripts come from Cloudflare: Web Analytics, which counts page views without a cookie and never sees a file, and, on the sign-in page only, Turnstile, which stops automated sign-up requests. On the account page only, and only when you open a checkout, Paddle's checkout script loads to take the payment.
The pages are served with a Content Security Policy that only lets them connect back to filesanity.com and to Cloudflare's page counter (and, on the account page, to Paddle for checkout), so even a mistake in our code could not send a file anywhere else.
What an account stores
Your email address, your plan and its renewal date from the payment provider, the names and last four characters of your API keys (the keys themselves are stored only as SHA-256 hashes), your team's email addresses, your saved policy, and a monthly count of API files. Nothing about any file you clean in the browser, because we never see one.
Sign-in is by a link sent to your email, good once for 15 minutes. The session is one cookie, HttpOnly and Secure, that lasts 30 days or until you sign out.
The hosted API
Files sent to the API are cleaned on Cloudflare's network for one request. Up to 25 MB a file stays in memory and is not written anywhere. A larger file, on a paid plan, is written to Cloudflare R2 storage (encrypted at rest) for that request only and deleted once the reply is sent, or within a day if the connection drops. If that is not acceptable for a file, self-host the same API.
Report a problem
If you find a security problem, or a file that FileSanity said was clean but was not, email hello@filesanity.com with "Security" in the subject or open an issue on GitHub. Please send a sample file with invented data, not a real one.